我一直在使用 FFmpeg 来制作视频转码,但它很有效但很慢。
我也尝试过Intel Inde库,但在我测试过的某些Android手机上无效。
因此,我想利用MediaCodec Api对视频进行转码。
我已经阅读了一些示例代码 BigFlake,这有助于我获得Api的一些概念。但是我仍然不知道如何将视频文件从一种格式转码到另一种格式。
我没有使用编解码器的经验,我认为流程是:
Decode input video file(frame?) -> feed into encoder -> convert the
stream to a .MP4 file.
感谢是否有人能指出我正确的方向。
答案 0 :(得分:2)
你似乎已经理解了基本面。您的工作流程是正确的 - 将解码器的输出馈送到编码器的输入。如果您希望结果为.mp4文件,请通过MediaMuxer发送AVC输出。
棘手的部分与你试图通过转码完成的事情有关。更改视频的大小或比特率非常简单,因为您只需要适当地配置编码器。过滤视频有点复杂,因为出于性能原因,您可能希望使用OpenGL ES(bigflake上的DecodeEditEncode test证明了这一点)。改变帧速率会变得复杂。
为获得最佳效果,请通过Surface执行所有操作(需要API 18+)。这假设您的视频解码器支持输出到Surface;如果没有,你可能需要自己渲染。
可以在Grafika中找到一些其他的MediaCodec示例。