首页 > 解决方案 > 使用 mediacodec 在 android 上解码和组合两个视频

问题描述

我正在尝试解码两个单独的视频(长度相同)并在android上并排显示(同步)。我想使用 android SDK 组件(即 mediaCodec)而不是 FFMPEG,因为我假设它会给我更好的性能(如果我错了,请纠正我)。

到目前为止,我已经尝试了一大堆不同的事情,但我认为它归结为解码 2 个视频,将帧发送到 2 个表面纹理,使用 GLES 着色器将它们组合成一个表面纹理(同时以某种方式同步它们)然后渲染将它们放到显示器上。

现在我在同步模式下使用媒体编解码器,解码部分工作。

如果需要,我可以分享我的代码,但它有点乱,我认为它不会很有帮助,但本质上,我通过调用 decoder.dequeueOutputBuffer() 并调用解码器来获取下一帧的索引。 releaseOutputBuffer() 使用该索引。我也知道我可以使用 ByteBuffer buffer = outputBuffers[decoderIndex]; 将帧作为 byteBuffer 获取。

我的主要问题是如何将它从这里发送到表面纹理,然后将其中两个组合在一起?

尽管有一些使用 FFMPEG 的解决方案,但我似乎在互联网上找不到任何可以实现这一目标的东西。任何帮助指出一些代码示例做类似的事情,甚至更好,帮助我理解这应该如何工作,将不胜感激。

标签: androidopengl-es

解决方案


推荐阅读