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();