繁体   English   中英

Android VideoView可同时播放2个视频

[英]Android VideoView plays 2 videos at the same time

我试图发挥videoview另一个视频视图的顶部。 第一个视频视图已暂停,第二个正在播放。 它似乎可以正常工作,但屏幕上没有第二个视频(尽管我听到了音频,并且看到了通常会出现在顶部的控件)。 我假设这是某种订单问题。 有什么想法吗。 顺便说一句,我在主视频视图之上显示其他视图并让视频填充背景没有问题。

那是行不通的-VideoView是特殊的,因为它在普通View中“打”了一个孔以允许直接访问显示像素(或者用Android术语来说,“ Surface”-VideoView是SurfaceView的子类)。 您不能将两个SurfaceView彼此叠加-第一个抓取像素(Surface)的对象将“拥有”它。 (请参见SurfaceHolder.Callback.surfaceCreated()/ surfaceDestroyed())

SurfaceView顶部的其他视图也可以工作,因为该框架将构成Surface顶部的普通视图的显示位。 它无法使用其他VideoView(即SurfaceView)来执行此操作,因为没有任何内容可以编写。

使用Thread控制两个视频

<VideoView android:id="@+id/videoView1" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content"/>
<VideoView android:id="@+id/videoView2" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content"/>

当videoView2开始播放videoView1的设置可见性时。 然后您可以在需要时使其可见。

您可以像这样在顶部的视频视图b上添加视频视图a,

     parentview.removeview(a);
    parentview.removviewe(b);
    parentview.addview(a);
    parentview.addview(b);
parentview.invalidate();

蒂为我工作。 希望对您有所帮助。

我目前不知道这是否有帮助,但是我设法得到了与您想要的类似的东西...

我需要将VideoView嵌套在SurfaceView的顶部; 只要它们不重叠100%,它就可以工作。 (我的意思是,我的Surfaceview是整个屏幕,而videoview只是屏幕的一小部分)

问题是-由于您无法合成SurfaceView,因此第一个要捕获像素的像素就是将要显示的像素。 直觉会促使您在XML中不那么重要的视图之后对优先视图进行Z排序-但是正如我之前所说,第一个保留像素的视图仍然存在,因此请确保先定义较小的视图,然后再定义用更大的覆盖它。

这将导致以下行为:较小的(在我的情况下为预览视图)获取所述X * Y像素,然后“背景”表面视图(根据XML应该位于其顶部)占据其余部分并忽略较小的表面。

我不太确定如何处理这两个事件,因为我只需要在这两个视图中播放流,而不会对这两个组件生成的任何类型的点击/事件做出反应,但是如果您遵循此步骤,可能会期望route-较大的视图将拦截较小视图区域中的所有点击(因为根据XML,它位于顶部),因此也许您必须在创建时也以编程方式将其移到顶部。

希望能帮助到你。

编辑:虽然...它像它只工作一次。 这确实是一项正在进行的工作。 从任何活动返回后,我都无法阻止更大的观点要求一切:/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM