一个 Surface 上的多个视频

Multiple videos on one Surface

我有一个全屏 SurfaceView。我有多个带有 h264 视频的网络流,我可以使用 MediaCodec 对其进行解码。是否可以指定将视频渲染到 Surface 的哪个坐标?所以我可以创建一种视频马赛克?

在单个 SurfaceView 中 - 没有。有关详细信息,您可以浏览 SurfaceView 源代码。也许您可以使用少数 SurfaceView 并添加特殊的字节缓冲区修剪器来创建一些马赛克效果 - 将一个视频组合到多个 SV 并获得完整视频。

但无论如何!如果我们谈论性能,那将不是一个好主意。

不,那不可能。您需要使用多个 SurfaceTexture,每个视频解码器一个,并使用 Open GL 将所有纹理渲染到一个视图中。

有关其工作原理的更多说明,请参阅 https://source.android.com/devices/graphics/architecture.html;特别是,每个 Surface 只能有一个生产者和一个消费者。