我正在编码NV21
来自相机预览的帧。由于某种原因,在其他设备上运行良好的架构Sony Xperia Z1
在Android 4.3
. 它发回质量不正确(低)的编码帧。
MediaCodec
的格式是COLOR_FormatYUV420SemiPlanar
(NV12
我通过交换 U 和 V 分量转换NV21
为)。NV12
发回给我的输出缓冲区的大小非常小,与我正在使用的分辨率 ( ) 和比特率 ( )MediaCodec
不对应。前几帧质量很好,但随后显着下降:1280x720
1000000
int encoderStatus = mMediaCodec.dequeueOutputBuffer(mBufferInfo, TIMEOUT_USEC);
// a few encoderStatus checks skipped
ByteBuffer encodedData = outputBuffers[encoderStatus];
Log.i(Constants.TAG, "Buffer size " + mBufferInfo.size);
这给了我关于 Xperia Z1 的以下日志:
Buffer size 26
Buffer size 52172
Buffer size 23650
Buffer size 14394
Buffer size 3591
Buffer size 1849
Buffer size 3908
...
Buffer size 1043
Buffer size 248
Buffer size 836
Buffer size 518
Buffer size 1112
正常工作的示例日志Sony Xperia ZR
:
Buffer size 21
Buffer size 51048
Buffer size 21063
Buffer size 24228
Buffer size 28040
...
Buffer size 44959
Buffer size 44972
Buffer size 44957
Buffer size 45004
Buffer size 44999
Buffer size 44957
任何意见,将不胜感激。