我正在寻找一种“压缩”mp4视频的方法。为了实现这一点,我想要减小视频的分辨率和/或降低帧速率。
经过长时间的研究,我认为可以使用MediaCodec和相关API来实现:
-> MediaExtractor从mp4文件中提取编码的媒体数据。 -> MediaCodec(解码器):解码每一帧以进行后续处理。 -> MediaCodec(编码器):此时,我想这就是我们应该设置MediaFormat参数的地方,例如视频分辨率,这应该有助于减小mp4文件的最终大小。 -> MediaMuxer用于生成mp4文件(MinSDK 18,这可能是一个问题,但目前还可以...)。
我不想使用SurfaceView/TextureView。 至于音频,我不想处理以降低质量。
我看了所有这里的示例: http://bigflake.com/mediacodec/
我也看过CTS源代码模块。
我还看了几个类似于这样的项目: https://github.com/vecio/MediaCodecDemo/blob/master/src/io/vec/demo/mediacodec/DecodeActivity.java
当然,我也读了数十篇stackoverflow上的文章。
问题是我还没有找到任何适用于此目的的代码示例。我尝试将各种代码片段组合到一个项目中,但并没有真正起作用。
谢谢。