gpt4 book ai didi

Android MediaCodec 更改分辨率

转载 作者:行者123 更新时间:2023-11-30 02:19:54 39 4
gpt4 key购买 nike

我将 MediaExtractor 的输出传递到 MediaCodec 解码器,然后将解码器的输出缓冲区传递到编码器的输入缓冲区。我遇到的问题是,当它从编码器出来时,我需要将解码器输出的分辨率从 1920x1080 降低到 1280x720。我可以使用 Surface 执行此操作,但我正在尝试以 Android 4.1 为目标,因此需要以其他方式实现此目的。有谁知道如何使用 MediaCodec 以与 4.1 兼容的方式更改视频文件的分辨率?

最佳答案

您可以使用 libav/ffmpeg、libyuv 或任何其他 YUV 处理库中的 libswscale,或者编写您自己的缩小例程 - 实际上并不难。

基本上,当您将解码器输出缓冲区的输出输入编码器输入缓冲区时,您已经不能假设您可以进行普通复制,因为两者可能使用不同的颜色格式。因此,为了灵活起见,您用于复制数据的代码已经需要能够将任何支持的解码器输出颜色格式转换为任何支持的编码器输入颜色格式。在此复制步骤中,您可以缩小数据。一个简单的最近邻降尺度实现起来非常简单;更好看的缩放需要更多的工作。

您不需要进行完整的 SW 解码/编码,只需使用 SW 在中间复制步骤中调整数据即可。但正如 fadden 指出的那样,MediaCodec 在 4.3 之前并不是完全稳定的,因此它可能仍然无法在所有设备上运行。

关于Android MediaCodec 更改分辨率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28745892/

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