参考这个页面:http ://bigflake.com/mediacodec/
A5。相机输出和 MediaCodec 编码器输入的颜色格式不同。相机支持 YV12(平面 YUV 4:2:0)和 NV21(半平面 YUV 4:2:0)。MediaCodec 编码器支持以下一项或多项:
#19 COLOR_FormatYUV420Planar (I420)
#20 COLOR_FormatYUV420PackedPlanar(也是 I420)
#21 COLOR_FormatYUV420SemiPlanar (NV12)
#39 COLOR_FormatYUV420PackedSemiPlanar(也是 NV12)
#0x7f000100 COLOR_TI_FormatYUV420PackedSemiPlanar(也是 NV12)
在我的应用程序中,我从外部摄像头以 YUY2 格式捕获帧,将它们转换为可用格式,并将它们提供给 MediaMuxer。
根据我在这里阅读的内容,这意味着我需要使用 MediaCodecInfo.CodeCapabilities 查询设备支持的内容。然后,基于此,将 YUY2 转换为适当的格式。至少这是我的理解。
在编解码器格式的海洋中,我不确定它们之间的差异以及我是否需要在我的应用程序中考虑所有这些。如果是这样,我需要知道这些格式的字节布局。我已经填写了我认为正确的那些。从顶部开始向下移动:
格式YUV420Planar - YYYY YYYY UU VV
FormatYUVPackedPlanar - ???
格式YUV420SemiPlanar -- YYYY YYYY VU VU
格式YUV420PackedSemiPlanar -- ???
COLOR_TI_FormatYUV420PackedSemiPlanar -- ???