博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS直播技术学习笔记 YUV颜色空间(六)
阅读量:4966 次
发布时间:2019-06-12

本文共 892 字,大约阅读时间需要 2 分钟。

为什么学习YUV颜色空间

  • 使用系统提供的接口获取到的音视频数据都保存在CMSampleBufferRef中, 使用GPUImamge获取到的音频数据为CMSampleBufferRef
  • CMSampleBufferRef
    • 这个结构在iOS中表示一帧音频/视频数据
    • 它里面包含了这一帧数据的内容和格式, 我们可以把它的内容取出来,提取出/转换成 我们想要的数据
    • 代表视频的CMSampleBufferRef中保存的数据是yuv420格式的视频帧(我们在视频输出设置中将输出格式设为:kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange)
    • 代表音频的CMSampleBufferRef中保存的数据是PCM格式的音频帧

yuv是什么?

  • 视频是由一帧一帧的数据连接而成,而一帧视频数据其实就是一张图片。
  • yuv是一种图片储存格式,跟RGB格式类似。
    • RGB格式的图片很好理解,计算机中的大多数图片,都是以RGB格式存储的。
    • yuv中,y表示亮度,单独只有y数据就可以形成一张图片,只不过这张图片是灰色的。u和v表示色差(u和v也被称为:Cb-蓝色差,Cr-红色差)
  • 为什么要yuv?
    • 有一定历史原因,最早的电视信号,为了兼容黑白电视,采用的就是yuv格式。
    • 一张yuv的图像,去掉uv,只保留y,这张图片就是黑白的。
    • 而且yuv可以通过抛弃色差来进行带宽优化。
    • 比如yuv420格式图像相比RGB来说,要节省一半的字节大小,抛弃相邻的色差对于人眼来说,差别不大。

YUV颜色存储格式

  • 常用的I420(YUV420P),NV12(YUV420SP),YV12(YUV420P),NV21(YUV420SP)等都是属于YUV420,NV12是一种两平面存储方式,Y为一个平面,交错的UV为另一个平面
  • 通常,用来远程传输的是I420数据,而本地摄像头采集的是NV12数据。(iOS)
  • 所有在真正编码的过程中, 需要将NV12数据转成I420数据进行编码

转载于:https://juejin.im/post/5a3348366fb9a045263ba23d

你可能感兴趣的文章
MyEclipse连接SQL Server 2008数据库的操作方法
查看>>
SqlCel 和MySQL for Excel在批量处理数据上的优劣
查看>>
leetcode【67】-Bulb Switcher
查看>>
JS验证图片格式和大小并预览
查看>>
调节心态的十种做法
查看>>
laravel5.2 移植到新服务器上除了“/”路由 ,其它路由对应的页面显示报404错误(Object not found!)———新装的LAMP没有加载Rewrite模块...
查看>>
潜罪犯
查看>>
编写高质量代码--改善python程序的建议(六)
查看>>
windows xp 中的administrator帐户不在用户登录内怎么解决?
查看>>
[spfa] Jzoj P4722 跳楼机
查看>>
代码审计入门后审计技巧
查看>>
Linux-Rsync服务器/客户端搭建实战
查看>>
接口和抽象类有什么区别
查看>>
简单通过百度api自动获取定位-前端实现
查看>>
180117 我的宠物识别判断语句
查看>>
JavaScript修炼之道pdf
查看>>
自己动手构造编译系统++编译、汇编与链接pdf
查看>>
JAVA 中文件读写函数BufferedReader 和 BufferedWriter 的使用
查看>>
Codeforces Round #206 (Div. 2)
查看>>
提升混合应用页面打开速度的新思路
查看>>