【发布时间】:2019-11-25 13:20:25
【问题描述】:
使用vlc-android,我在片段中有以下sn-p:
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();
}
此代码基于官方libvlc-android-samples。
一切正常,它可以通过将它传递给 playStream 来播放我想要的任何东西。
当我调用 stopStream 函数时,播放停止但表面停留在那里并且没有被清除。 IE。 mVideoLayout 包含最后解码的帧。
有没有办法清除这个框架并将其设置为黑色?
我想重新使用这个播放器来再次使用 playStream 播放其他内容。
我已经尝试过的:
- mMediaPlayer.detachViews() -> 不清除帧
- mVideoLayout.removeAllViews() -> 清除帧,但下一个播放操作崩溃(如果我再次调用 attachViews())
- 使 mVideoLayout 不可见,然后在流实际开始后可见 -> 在新流开始的一小段时间内,表面显示旧流
在媒体更改期间,片段将可见,带有片段事务的解决方案现在不适用于我。
【问题讨论】:
标签: android surfaceview libvlc