[英]How to transcode a video using the MediaCodec api for Android 4.3+
我一直在使用FFmpeg进行视频转码,它可以工作,但是速度很慢。
我也尝试了Intel Inde库,但在我测试过的某些Android手机上无法使用。
因此,我想利用MediaCodec Api对视频进行转码。
我已经阅读了BigFlake的一些示例代码,这有助于我了解Api的概念。 但是,我仍然不知道如何将视频文件从一种格式转码为另一种格式。
我没有使用编解码器的经验,我认为的流程是:
Decode input video file(frame?) -> feed into encoder -> convert the
stream to a .MP4 file.
Decode input video file(frame?) -> feed into encoder -> convert the
stream to a .MP4 file.
如果有人能指出我正确的方向,我将不胜感激。
您似乎已经了解了基本原理。 您的工作流程是正确的-将解码器的输出馈送到编码器的输入。 如果您希望结果为.mp4文件,请通过MediaMuxer发送AVC输出。
棘手的部分与您要通过转码完成的工作有关。 更改视频的大小或比特率很简单,因为您只需要适当地配置编码器即可。 过滤视频会更加复杂,因为出于性能方面的考虑,您可能希望使用OpenGL ES( bigflake上的DecodeEditEncode 测试演示了这一点)。 更改帧频会变得很复杂。
为了获得最佳结果,请通过Surface执行所有操作(需要API 18+)。 假设您的视频解码器支持输出到Surface; 如果没有,您可能需要自己渲染。
在Grafika中可以找到一些其他MediaCodec示例。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.