gpt4 book ai didi

Android 9 - 无法编排多个堆叠的 VideoView 对象 SM-G950U

转载 作者:行者123 更新时间:2023-11-29 00:52:26 29 4
gpt4 key购买 nike

我一直在努力让显示器上有一个共同的观看区域,以供多个视频流共享。通过触摸包含在包含所有缩略图的矩阵的主查看区域下方的布局中的流的缩略图来选择流。流由 GStreamer 管理,从屏幕截图中,您可以看到流正在流动。

Screenshot

当应用程序启动时,屏幕截图底部的左侧缩略图会显示在主查看区域中。

期望的行为是当 OnClickListener 在触摸右侧的缩略图时触发时,当前 VideoView 对象应该进入后台,并且引用 onClick 事件的新 VideoView 对象应该进入前台,在前一个之上一个。

我尝试过共享主 VideoView 对象和尝试交换底层 Surface 对象的组合,以及从主查看器布局中删除旧的 VideoView 对象并将新选择的 VideoView 对象添加到主布局。

目前,我有一个用于每个缩略图流的 VideoView 对象和一个用于主查看器流的 VideoView 对象(通过 GStreamer 管道中的 tee 元素)。我正在尝试组合setVisibility(View.INVISIBLE) 和 setVisibility(View.VISIBLE) 以及 setZOrderMediaOverlay(true)、setZOrderMediaOverlay(false) 和 setZOrderOnTop(true)、setZOrderOnTop(false)。

如果我执行 setVisibility(View.INVISIBLE),则 VideoView 对象中的表面会被破坏,但会显示新选择的对象。单独的 setZOrder* 方法似乎没有达到预期的效果。

有没有一种方法可以隐藏一个 VideoView 及其表面,而不会破坏表面,而另一个 VideoView 正在视觉上在顶部执行?这是推荐的方式吗?

很难从我一直在寻找解决问题的帖子中看出这一点。

感谢任何反馈。- 道格

最佳答案

我想通了。

我回到了主查看区域使用单一布局,每个流都有一个主查看 VideoView 对象。然后我将 GStreamer 管道拆分为 2 个管道,将每个主要查看器流馈送到 2 个管道中,这些启动字符串示例 fragment 如下:

第一:(发球台的另一条腿进入缩略图流)球座 !应用接收器

第二:应用程序!视频比例! glimagesink

现在,当一个主 VideoView 对象由于另一个被选中而注定要失去焦点时,我将它的第二个管道状态设置为 PAUSED,并将所选流的主 VideoView 流状态设置为 PLAYING。这允许 GStreamer 在底层表面被框架洗牌时处理自身的缓冲区耗尽。我还从布局中删除传出的 VideoView subview ,并将选定的传入 VideoView 添加到布局中。

我有一些来自 GStreamer 示例的 appsink 和 appsrc 的非常标准的代码,用于管理跨 2 个管道传输样本的那些元素。我什至不需要管理大写过滤器来让它工作,这很好,因为我预计我可能需要做一些事情。

关于Android 9 - 无法编排多个堆叠的 VideoView 对象 SM-G950U,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57980488/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com