通过MediaCodec附加多个视频 - 仅针对一个编码器

时间:2016-09-30 11:07:02

标签: android video mediacodec

目前我正在尝试将多个视频文件连接在一起,最简单的方法是使用MP4Parser。但是,MP4Parser必须使视频具有相同的尺寸和帧数,因为它只是操纵容器。

fadden已经表示MP4支持可变帧率视频,MediaCodec可以生成它们,因此我正在考虑使用MediaCodec套件来完成此任务。

假设我有3个要连接的视频,我想有3个MediaExtractorsMediaCodec解码器实例,每个视频一个,以及一个MediaCodec编码器解码后的缓冲区进入最终的视频文件。

提取器和解码器将一个接一个地运行,它们将被送入同一个编码器。但是,我担心编码器的EOS信号标志。

我可以保持所述信号标志关闭,直到第三个解码器完成?我是否还应该使用循环缓冲区来完成这项任务?

1 个答案:

答案 0 :(得分:0)

是的,您可以随时发送EOS信号标志,只要您之后不向编码器发送新帧即可。实际上,如果您仍想提供更多视频帧,则不应发送EOS标志

您可能想知道的事情很少:

  1. 在释放第一个解码器之后配置第二个解码器更安全, 某些设备可能不允许您分配多个解码器,尤其是在解码高分辨率视频时。

  2. 您应该向第二和第三个视频的演示时间添加偏见(显然)

  3. 是的,MediaCodec支持可变帧率,但我不确定它是否支持变量维度。您可能需要自己进行一些调整大小或裁剪(通过openGL渲染)