我使用MediaCodec
将一些视频帧编码为H264。大多数设备上的一切似乎都没问题,但在某些设备上,我的输出会得到很多"对角线"噪音(看起来像偏移/对齐问题)。
MediaCodec
的输出分辨率是使用函数getWidthAlignment和getHeightAlignment
计算的。该文档指出该函数返回的值是2的幂,编解码器输出的宽度和高度需要是其倍数。对于无法正常工作的设备,该函数返回2。
因此,我正在测试的设备(无法正常工作)具有1280x800的原始分辨率。如果我要求MediaCodec
的输出为1152x720(保持相同的宽高比),一切正常。如果我有MediaCodec
的输出为1224x720(如果屏幕显示导航栏,则保持屏幕的宽高比相同,因此,AR与原始分辨率不同)。 1224和720都是MediaCodec's
VideoCapabilities
返回的宽度/高度对齐的倍数。使用1224x720会产生"对角线。"
所以,我的问题是,为MediaCodec
获得支持的输出分辨率的最佳方法是什么?使用getWidth/HeightAlignment
似乎并没有在很多低端设备上正常运行(可能设备没有正确实现这些功能?)。