繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM