Android libVLC-停止播放后清除表面的方法
使用,我在片段中有以下片段:Android libVLC-停止播放后清除表面的方法,android,surfaceview,libvlc,Android,Surfaceview,Libvlc,使用,我在片段中有以下片段: private LibVLC mLibVLC; private MediaPlayer mMediaPlayer; private VLCVideoLayout mVideoLayout; public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { mVideo
private LibVLC mLibVLC;
private MediaPlayer mMediaPlayer;
private VLCVideoLayout mVideoLayout;
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
mVideoLayout = inflate.findViewById(R.id.video_layout);
mMediaPlayer.attachViews(mVideoLayout, null, true, false);
return inflate;
}
public void onCreate(@Nullable Bundle savedInstanceState) {
mLibVLC = new LibVLC(getActivity(), args);
mMediaPlayer = new MediaPlayer(mLibVLC);
}
public void playStream(String stream) {
mMediaPlayer.play(Uri.parse(stream));
}
public void stopStream() {
mMediaPlayer.stop();
}
此代码基于官方代码
一切都很好,通过将其传递给playStream,它可以播放我想要的任何内容
当我调用stopStream函数时,播放停止,但曲面保持在那里,并且未清除。即mVideoLayout包含最后一个解码帧
有没有办法清除此框架并将其设置为黑色?
我想重新使用此播放器,再次使用播放流播放其他内容。
我已经尝试过的:
- mMediaPlayer.detachViews()->不清除框架
- mVideoLayout.removeAllViews()->清除帧,但下一个播放操作崩溃(如果我再次调用attachViews(),也是如此)
- 使mVideoLayout不可见,然后在流实际开始时可见->在新流开始的一段短时间内,曲面将显示旧流
在媒体更改期间,片段将可见,带有片段事务的解决方案现在不适用于我。停止流媒体后尝试分离视图:
mMediaPlayer.getVLCVout().detachViews();
祝你好运,如果有人需要回答这个问题,你应该存储所有布局子项
for (int i = 0; i < vlcVideoLayout.getChildCount(); i++) {
View v = vlcVideoLayout.getChildAt(i);
viewArrayList.add(v);
}
要重新使用此播放器播放其他内容,应将阵列添加到vlcVideoLayout,不幸的是,其结果与mMediaPlayer.detachViews()相同。谢谢
vlcVideoLayout.removeAllViewsInLayout();