Hyp*_*ino 1 android surfaceview
是否可以使用单个图像的不同“部分”同时渲染两个视频流SurfaceView?
我已经制作了示例代码,该示例代码使用两个SurfaceView并排同时渲染两个视频,但是我想知道是否可以使两个视频在同一屏幕上播放SurfaceView。
使用MediaPlayer,您可以将SurfaceHolder或Surface本身设置为显示。我相信实现我所要求的代码将在surfaceCreated方法内部:
@Override
public void surfaceCreated(SurfaceHolder holder)
{
mediaPlayerTop.setDisplay(holder);
mediaPlayerBottom.setDisplay(holder);
play();
}
Run Code Online (Sandbox Code Playgroud)
但是,仅将两个MediaPlayers 设置为相同的Surface会导致在IllegalStateException尝试prepare第二个s 时出现MediaPlayer(这忽略了这样一个事实,即它们可能会相互重叠,因为我没有在任何地方设置位置)。
基本上,我要实现的目标是可能的吗?
是的,但是需要一些努力。
基本计划是将MediaPlayer的输出定向到SurfaceTexture,它将每个传入的帧转换为GLES纹理。然后,将其渲染到SurfaceView,绘制一个填充视图一半的矩形。您对另一个MediaPlayer执行相同的操作。
您需要的片段可以在Grafika中找到,例如,“来自相机的纹理”活动从相机预览中获取视频流,将其转换为GLES纹理,然后将其呈现为SurfaceView。
只需将两个MediaPlayer的输出定向到单独的SurfaceView会容易得多,但灵活性较差。
表面是生产者-消费者对中的端点。一次只能有一个制作人,因此您不能简单地将两个MediaPlayer指向一个SurfaceView。
| 归档时间: |
|
| 查看次数: |
513 次 |
| 最近记录: |