gpt4 book ai didi

android - 使用 MediaCodec 和 MediaExtractor 对视频进行解码编码

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:15:19 25 4
gpt4 key购买 nike

我需要将视频解码为一系列位图,以便我能够修改它们,然后将它们压缩回 android 中的视频文件。

我计划通过使用 getFrameAtTime 并将其保存到图像序列中来管理它。然后我可以修改序列中的图像并将其编码回电影。但是我有两个问题:

  • 首先,据我所知,getFrameAtTime 用于创建缩略图,不能保证返回正确的帧。这会导致视频延迟。
  • 其次,保存图像和读取它需要很长时间。

我读到进行解码的正确方法是使用 MediaExtractor,这很好,但我只有将其直接渲染到 surfaceView 的示例。有什么方法可以将 outputBuffer 转换为位图吗?

我需要它才能在 16 及以上的 API 级别上工作。

最佳答案

您可以在 bigflake 上找到一组有用的示例网站。

特别是,ExtractMpegFramesTest 演示了如何将 .mp4 文件解码为 BitmapDecodeEditEncodeTest 解码并重新编码 H .264 流,使用 GLES 着色器修改帧。

许多示例使用了 API 18 中引入的功能,例如 Surface 输入到 MediaCodec(避免了一些颜色格式问题),以及 MediaMuxer(它允许您将来自 MediaCodec 的原始 H.264 基本流转换为 .mp4 文件)。一些设备将允许您将视频提取为 ByteBuffer 中的 YUV 数据,对其进行修改并重新编码,但其他设备将提取为可能被 API 16 版本拒绝的专有 YUV 颜色格式 MediaCodec

我建议为 API 18(Android 4.3“Jellybean”MR2)或更高版本编码。

关于android - 使用 MediaCodec 和 MediaExtractor 对视频进行解码编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20468211/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com