我正在尝试使用
Android MediaCodec API对NV12流进行硬件编码(avc).
使用OMX.qcom.video.encoder.avc时,分辨率1280×720和640×480工作正常,而其他(即640×360,320×240,800×480)产生输出,其中色度分量似乎发生偏移(请参阅snapshot).
我通过将输入图像保存到jpeg文件来仔细检查输入图像是否正确.
此问题仅发生在QualComm设备(即Samsung Galaxy S4)上.
任何人都有这个正常工作?还需要任何额外的设置/怪癖吗?
解决方法
解码器(MediaCodec)有其MediaFormat,它可以使用
getOutputFormat接收.返回的实例可以打印到日志.在那里你可以看到一些有用的信息.例如,在您的情况下,像“slice-height”这样的值可能很有用.我怀疑它等于1280×720和640×480的高度,并且与其他分辨率不同.可能你应该使用这个值来获得色度偏移.