Android视频采集编码颜色格式选择
来源:互联网 发布:网络借钱最快的地方 编辑:程序博客网 时间:2024/04/29 04:57
Android视频采集编码颜色格式选择
1.请参考以下链接,首先了解YUV420P,YUV420SP,NV21,YV12这些基本的颜色格式
2.基本配置
m_camera = Camera.open(Camera.CameraInfo.CAMERA_FACING_BACK);Camera.Parameters parameters = m_camera.getParameters(); parameters.setPreviewSize(width, height); parameters.setPictureSize(width, height); //预览格式决定预览回调里的数据格式,5.0以下通常有2种 NV21和 YV12 parameters.setPreviewFormat(ImageFormat.NV21);
3.根据以上格式,我们知道我们预览格式如何转换以适应MediaCodec编码的需要
1>.如果我们预览格式设置为NV21,我们知道NV21的数据格式为2个planar,也就是两个平面,第一个平面是素有的Y分量,而第二个平面是V和U交错平面,并且是V在U前 ,在字节数组中是这样的结构: YYYYYYYY VUVU
2>.如果预览数据格式设置为YV12,我们知道YV12为3个平面,第一个平面是所有的Y,第二个平面为所有的V,第三个平面为所有的U,在字节数组中是这样的结构: YYYYYYYY VV UU
3>. Android COLOR_FormatYUV420Planar 即YUV420P,也就是说它要求的传给编码器的数据格式为: YYYYYYYY UU VV
4>.Android COLOR_FormatYUV420SemiPlanar 即YUV420SP,它要求传给编码器的数据格式为: YYYYYYYY UVUV
★.如果预览格式设置为NV21,那么在MediaCodec中设置编码格式,如果编码器支持颜色格式COLOR_FormatYUV420SemiPlanar,这两个格式都是半平面也就 是有两个平面,第一个平面是所有的Y分量,第二个平面NV21为VUVU,而 COLOR_FormatYUV420SemiPlanar 为UVUV,也就是说如果预览格式为NV21,编码颜色格式为COLOR_FormatYUV420SemiPlanar,我们在预览数据需要给编码器编码的时候,需要转换NV21第二个平面里V和U的位置:
NV21(yyyyyyyy vuvu) ----------> COLOR_FormatYUV420SemiPlanar (yyyyyyyy uvuv)
这样编码才能编码出正确的颜色
★.如果预览格式设置为YV12,编码器颜色格式 COLOR_FormatYUV420Planar,这两个格式都是平面模式,都包含三个平面,第一个平面都是所有的分量Y, YV12的第二个平面为所有的分量V,第三个平面为所有分量U,而YUV420P的第二个平面为所有分量U,第三个平面为所有分量V.所有如果我们采用的YV12预览,编码器颜色格式为 COLOR_FormatYUV420Planar,我们需要交换预览数据里YV12的第二个平面V和第三个平面U的位置:
YV12(yyyyyyyy vv uu) ----------> COLOR_FormatYUV420Planar (yyyyyyyy uu vv)
★.以上仅适用与Android4.4及以下,Android 5.0及以上有新的颜色格式,请使用新的API 颜色格式,将不会那么麻烦。
- Android视频采集编码颜色格式选择
- Android视频采集+H264编码
- Android视频采集+H264编码
- Android视频采集+H264编码
- Android视频采集+H264编码
- Android视频采集+H264编码
- Android视频采集+H264编码
- 如何选择视频编码格式
- Android视频采集+H264编码成功
- Android视频采集+H264编码成功
- Android视频采集+H264编码成功
- Android视频数据采集,H.264编码
- 原YUV格式的解析 Android NV21 视频采集
- 原YUV格式的解析 Android NV21 视频采集
- 庆祝一下,Android视频采集+H264编码成功
- 庆祝一下,Android视频采集+H264编码成功
- 庆祝一下,Android视频采集+H264编码成功
- 庆祝一下,Android视频采集+H264编码成功
- 可变参数
- Java规则引擎详解
- LightOJ 1094 - Farthest Nodes in a Tree【树的直径】
- Introduction to Java Programming编程题8.36<Latin square>
- java远程发送文件到服务器(jcifs.smb实现方式)
- Android视频采集编码颜色格式选择
- 喷水装置 ACM题目 京东16招聘编程题(贪心算法)
- JSP/SERVLET入门教程--Servlet 使用入门
- 用jQuery实现<select>选项上下移动
- 技术选型(一)——安卓开发
- phpcms 字段生成详解析
- [sicily]部分题目分类
- Nginx + IIS 实现负载均衡
- iOS开发——多线程