0

我正在使用 MediaCodec API 将一组 JPEG 编码为 mp4。照片可以有任何分辨率,但我将所有照片调整为 16 的倍数,以确保它们具有与 MediaCodec 兼容的尺寸,并确保它们在编解码器视频功能返回的支持尺寸范围内。

我发现在一些使用OMX.qcom.video.encoder.avc编解码器的旧设备中,某些分辨率会产生乱码视频,如以下具有不同纵横比的示例所示。仅在使用自定义纵横比时,使用标准纵横比(例如 16:9、4:3 等)时不会出现此问题。

原来的

在此处输入图像描述

结果

在此处输入图像描述

原来的

在此处输入图像描述

结果

在此处输入图像描述

调查这个问题时,我通过另一个用户的问题发现,这可能与旧的高通设备要求 YUV 数据的 Y 平面在 2K 边界对齐的事实有关。但是,我根本不直接使用 YUV 数据,而是使用输入表面并通过 OpenGL 进行渲染。

我的猜测是,输入表面的编解码器底层系统可能与 YUV 缓冲区一起工作,而高通编解码器处理所有转换,这只是一个猜测。但是,如果是这样,那么,是否有任何公式可以用来调整分辨率并将其对齐到这样的边界要求,即使它会产生一些裁剪?或者,如果我的猜测被误导了,那么可能是什么导致了这样的问题?有关 2K 边界对齐的声明,请参阅下一个接受的答案。

如何获取 MediaCodec 编码器的步幅和 Y 平面对齐值

4

0 回答 0