人生苦短,不说废话,不做无用功
当我们在用android 开发视频录制时候,会遇到录制出来的视频 花屏、绿屏等现象,不用怀疑,90%是因为视频编码时候的颜色格式和编码器配置的编码格式不匹配。
相机预览的数据一般是两种 NV21和YV12,以下代码可以查出手机支持的预览格式:
List previewFormats = mCamera.getParameters().getSupportedPreviewFormats();
手机MediaCodec编解码颜色格式一般为:
1、COLOR_FormatYUV420Planar
2、COLOR_FormatYUV420SemiPlanar
YUV420Planar支持的颜色格式一般也有两种:NV21、NV12
YUV420SemiPlanne支持的颜色格式一般也有两种:I420、YV12
对应关系如下:
I420: YYYYYYYY UU VV =>YUV420P
YV12: YYYYYYYY VV UU =>YUV420P
NV12: YYYYYYYY UVUV =>YUV420SP
NV21: YYYYYYYY VUVU =>YUV420SP
用Camera摄像头预览的时候:
这里第一个参数data的数据格式,如果没有特殊配置,android默认返回的是NV21格式,查看源码可以看到:
所以如果相机支持