多视频同时播放重叠区域问题

WuZongBo 2015-08-19 05:35:17


我想选取多个视频中的任意一块区域将他们放在一起播放,不能将视频合成,因为合成的话效率太慢了,我想及时预览;

目前我试过使用遮挡的方式,但是发现遮挡不住,会跑到另外一个SurfaceView里面去,形成重叠;
我试想过在自己解码,在解码的时候将多个视频数据择取部分区域合并成一个视频数据输出SurfaceView上,不知道是否可行;
希望有过类似经验的大神指导一二,感激不尽。
...全文
299 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
sky-Z 2015-08-21
  • 打赏
  • 举报
回复
我觉得主要问题是你这3个surfaceview怎么去安排zorder,现象看就是zorder和你的预期的不一样。 你dumpsys SurfaceFlinger看下这3个surfaceview的顺序。你先用两个surfaceview试下,第二个surfaciew调用一下setZOrderOnTop(true)看看效果是否正确。
WuZongBo 2015-08-20
  • 打赏
  • 举报
回复
引用 3 楼 Arnold9009 的回复:
研究一下layout的measure算法吧,恐怕不是这样简单遮盖的
跟这个没关系
Arnold9009 2015-08-20
  • 打赏
  • 举报
回复
研究一下layout的measure算法吧,恐怕不是这样简单遮盖的
WuZongBo 2015-08-19
  • 打赏
  • 举报
回复
引用 1 楼 YKDSea 的回复:
用两个surfaceview为什么不行?超出区域外的应该不显示才对,是不是surfaceview的显示尺寸被修改了?


没有做修改,看下面效果图,视频1在视频2上面,视频2在视频3上面

layout:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">

<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:orientation="horizontal">

<FrameLayout
android:id="@+id/frameLayout1"
android:layout_width="100dp"
android:layout_height="200dp"
android:layout_centerHorizontal="true"
android:layout_gravity="center|bottom"
android:background="#FF000000"
android:backgroundTintMode="src_atop">

<SurfaceView
android:id="@+id/Player1"
android:layout_width="200dp"
android:layout_height="300dp"
android:layout_marginLeft="-50dp"
android:layout_marginTop="-50dp" />

</FrameLayout>

<FrameLayout
android:id="@+id/frameLayout2"
android:layout_width="100dp"
android:layout_height="200dp"
android:layout_centerHorizontal="true"
android:layout_gravity="center|bottom"
android:layout_marginLeft="2dp"
android:background="#FF000000">

<SurfaceView
android:id="@+id/Player2"
android:layout_width="200dp"
android:layout_height="300dp"
android:layout_marginLeft="-50dp"
android:layout_marginTop="-50dp" />

</FrameLayout>

<FrameLayout
android:id="@+id/frameLayout3"
android:layout_width="100dp"
android:layout_height="200dp"
android:layout_centerHorizontal="true"
android:layout_gravity="center|bottom"
android:layout_marginLeft="2dp"
android:background="#FF000000">

<SurfaceView
android:id="@+id/Player3"
android:layout_width="200dp"
android:layout_height="300dp"
android:layout_marginLeft="-50dp"
android:layout_marginTop="-50dp" />

</FrameLayout>
</LinearLayout>


<Button
android:id="@+id/btnPlay"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="10dp"
android:text="Play" />


</RelativeLayout>
sky-Z 2015-08-19
  • 打赏
  • 举报
回复
用两个surfaceview为什么不行?超出区域外的应该不显示才对,是不是surfaceview的显示尺寸被修改了?

80,350

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧