如何使用适用于Android 4.3+的MediaCodec api对视频进行转码

时间:2016-04-22 10:39:04

标签: android video mediacodec transcode

我一直在使用 FFmpeg 来制作视频转码,但它很有效但很慢。

我也尝试过Intel Inde库,但在我测试过的某些Android手机上无效。

因此,我想利用MediaCodec Api对视频进行转码。

我已经阅读了一些示例代码 BigFlake,这有助于我获得Api的一些概念。但是我仍然不知道如何将视频文件从一种格式转码到另一种格式。

我没有使用编解码器的经验,我认为流程是:

  

Decode input video file(frame?) -> feed into encoder -> convert the   stream to a .MP4 file.

感谢是否有人能指出我正确的方向。

1 个答案:

答案 0 :(得分:2)

你似乎已经理解了基本面。您的工作流程是正确的 - 将解码器的输出馈送到编码器的输入。如果您希望结果为.mp4文件,请通过MediaMuxer发送AVC输出。

棘手的部分与你试图通过转码完成的事情有关。更改视频的大小或比特率非常简单,因为您只需要适当地配置编码器。过滤视频有点复杂,因为出于性能原因,您可能希望使用OpenGL ES(bigflake上的DecodeEditEncode test证明了这一点)。改变帧速率会变得复杂。

为获得最佳效果,请通过Surface执行所有操作(需要API 18+)。这假设您的视频解码器支持输出到Surface;如果没有,你可能需要自己渲染。

可以在Grafika中找到一些其他的MediaCodec示例。