H264的视频格式H264支持4:2:0的连续或隔行视频的编码和解码
一般来说,直接采集到的视频数据是RGB24的格式,RGB24一帧的大小size=width×heigth×3 Bit,RGB32的size=width×heigth×4,如果是I420(即YUV标准格式4:2:0)的数据量是 size=width×heigth×1.5 Bit。
在采集到RGB24数据后,需要对这个格式的数据进行第一次压缩。即将图像的颜色空间由RGB2YUV。因为,X264在进行编码的时候需要标准的YUV(4:2:0)。但是这里需要注意的是,虽然YV12也是(4:2:0),但是YV12和I420的却是不同的,在存储空间上面有些区别。如下: YV12 : 亮度(行×列) + U(行×列/4) + V(行×列/4) I420 : 亮度(行×列) + V(行×列/4) + U(行×列/4) 可以看出,YV12和I420基本上是一样的,就是UV的顺序不同。 继续我们的话题,经过第一次数据压缩后RGB24->YUV(I420)。这样,数据量将减少一半,为什么呢?呵呵,这个就太基础了,我就不多写了。同样,如果是RGB24->YUV(YV12),也是减少一半。但是,虽然都是一半,如果是YV12的话效果就有很大损失。然后,经过X264编码后,数据量将大大减少。将编码后的数据打包,通过RTP实时传送。到达目的地后,将数据取出,进行解码。完成解码后,数据仍然是YUV格式的,所以,还需要一次转换,这样windows的驱动才可以处理,就是YUV2RGB24。 YUY2 是 4:2:2 [Y0 U0 Y1 V0] |
yuv420p 和 YUV420的区别 在存储格式上有区别
yuv420p:yyyyyyyy uuuuuuuu vvvvv
yuv420: yuv yuv yuv
每秒25帧,每帧两场,扫描线(包括电视机的电子束)自上而下先扫描一场,然后再自上而下扫描第二场
之所以引入场的概念,我的理解是主要为了在有限的带宽和成本内使画面运动更加平滑和消除闪烁感。
这两个场的扫描线是一条一条互相间隔开的,比如说对于一个帧来讲,最上面一条线编号为0,紧挨着的是1,再下来是2,3,4,5,6。。。。那么第一场也许是0,2,4,6;也许是1,3,5,7——这就是隔行扫描
在逐行扫描模式下,就是扫描线按照0,1,2,3,4,5的顺序依次扫描,很明显,这时候就不存在场的概念了。
4:4:4采样就是说三种元素Y,Cb,Cr有同样的分辨率,这样的话,在每一个像素点上都对这三种元素进行采样.数字4是指在水平方向上对于各种元素的采样率,比如说,每四个亮度采样点就有四个Cb的Cr采样值.4:4:4采样完整地保留了所有的信息值.4:2:2采样中(有时记为YUY2),色度元素在纵向与亮度值有同样的分辨率,而在横向则是亮度分辨率的一半(4:2:2表示每四个亮度值就有两个Cb和Cr采样.)4:2:2视频用来构造高品质的视频彩色信号.
在流行的4:2:0采样格式中(常记为YV12)Cb和Cr在水平和垂直方向上有Y分辨率的一半.4:2:0有些不同,因为它并不是指在实际采样中使用4:2:0,而是在编码史中定义这种编码方法是用来区别于4:4:4和4:2:2方法的).4:2:0采样被广泛地应用于消费应用中,比如视频会议,数字电视和DVD存储中。因为每个颜色差别元素中包含了四分之一的Y采样元素量,那么4:2:0YCbCr视频需要刚好4: 4:4或RGB视频中采样量的一半。
4:2:0采样有时被描述是一个"每像素12位"的方法。这么说的原因可以从对四个像素的采样中看出. 使用4:4:4采样,一共要进行12次采样,对每一个Y,Cb和Cr,就需要12*8=96位,平均下来要96/4=24位。使用4:2:0就需要6*8 =48位,平均每个像素48/4=12位。
在一个4:2:0隔行扫描的视频序列中,对应于一个完整的视频帧的Y,Cb,Cr采样分配到两个场中。可以得到,隔行扫描的总采样数跟渐进式扫描中使用的采样数目是相同的。
各种格式的具体使用位数的需求(使用4:2:0采样,对于每个元素用8个位大小表示):
格式: Sub-QCIF 亮度分辨率: 128*96 每帧使用的位: 147456
格式: QCIF 亮度分辨率: 176*144 每帧使用的位: 304128
格式: CIF 亮度分辨率: 352*288 每帧使用的位: 1216512
格式: 4CIF 亮度分辨率: 704*576 每帧使用的位: 4866048
H264的视频格式H264支持4:2:0的连续或隔行视频的编码和解码相关推荐
- 浏览器对视频格式的支持
浏览器及平台 支持的视频格式 Chrome MP4, WebM Firefox MP4, WebM Internet Explorer MP4 Android MP4 iOS MP4 Safari M ...
- iphone保存html视频格式,iPhone6支持什么视频格式?iPhone6支持RMVB播放吗?
iPhone6支持什么视频格式 iPhone6支持MP4,AVI,NAVI,DV-AVI,DIVX,MOV,ASF,WMV,RM,RMVB等视频格式. 关于iPhone6支持什么视频格式的疑问,下面将 ...
- 红米note3支持html,红米Note3支持什么视频格式?支持RMVB播放吗?
红米Note3支持什么视频格式 红米Note3支持MP4.M4V.MKV.XVID.ASF视频格式. 红米Note3的指纹识别对手的湿度也有要求,需要保持手指干燥,潮湿的话就可能导致无法识别.红米No ...
- HTML5兼容HEVC视频格式且支持本地绝对路径访问
通过PotPlayer发现该MP4文件的编码格式为HEVC,而video标签不支持该编码格式的视频文件 在HTML文件中首先需要引用libe265.js来负责处理HEVC格式文件 libde265.j ...
- 超强加载网络视频框架,支持任何地方使用,防火山小视频,今日头条视频等等
深入了解请看demo https://github.com/xiaoyanger0825/NiceVieoPlayer 在Gradle中添加依赖: allprojects {repositories ...
- WebP格式介绍(附python版本代码用于对图像进行WebP编码和解码)
不管是 PC 还是移动端,图片一直是流量大头,如何保证在图片的精细度不降低的前提下缩小图片体积,成为了一个有价值且值得探索的事情.但如今对于 JPEG.PNG 和 GIF 这些图片格式的优化几乎已经达 ...
- 转:YUV RGB 常见视频格式解析
转: http://www.cnblogs.com/qinjunni/archive/2012/02/23/2364446.html YUV RGB 常见视频格式解析 I420是YUV格式的一种,而Y ...
- 各种音视频编解码学习详解 h264 ,mpeg4 ,aac 等所有音视频格式
编解码学习笔记(一):基本概念 媒体业务是网络的主要业务之间.尤其移动互联网业务的兴起,在运营商和应用开发商中,媒体业务份量极重,其中媒体的编解码服务涉及需求分析.应用开发.释放license收费等等 ...
- 各种音视频编解码学习详解 h264 ,mpeg4 ,aac 等所有音视频格式 详解
http://blog.csdn.net/wishfly/article/details/50187417 编解码学习笔记(一):基本概念 媒体业务是网络的主要业务之间.尤其移动互联网业务的兴起,在运 ...
- 【FFMPEG】各种音视频编解码学习详解 h264 ,mpeg4 ,aac 等所有音视频格式
目录(?)[-] 编解码学习笔记二codec类型 编解码学习笔记三Mpeg系列Mpeg 1和Mpeg 2 编解码学习笔记四Mpeg系列Mpeg 4 编解码学习笔记五Mpeg系列AAC音频 编解码学习笔 ...
最新文章
- matlab拟合曲线后求导,高手留步:MATLAB五阶拟合函数,求导后离散化,输出结果是星号...
- HDU 4417 Super Mario
- wxWidgets:wxWizard类用法
- oracle事物的传播属性,spring事务的隔离级别和传播属性
- Educational Codeforces Round 9 A. Grandma Laura and Apples 水题
- 需求工程阅读笔记03
- python如何移动图片_python之详细图像仿射变换讲解(图像平移、旋转、缩放、翻转),一文就够了,赶紧码住...
- 云南计算机专业知识真题,2014年云南省事业单位考试专计算机专业知识模拟真题.doc...
- Kubernetes Service详解(概念、原理、流量分析、代码)
- 解决ssh登录Host key verification failed
- Linux开发书籍推荐
- javaweb调用第三方短信接口
- 解决 WSO2 EI 6.0.0~6.6.0 删除带有 Class 的碳应用时提示 ClassNotFoundException 异常
- python爬虫js加密篇—搜狗微信公号文章的爬取
- 射频基础之阻抗匹配与Smith图
- 摄影基础知识——曝光和测光
- javascript运算符——条件、逗号、赋值、()和void运算符 (转载)
- 【SCIENTIFIC AMERICAN December 2019】【NUCLEAR PHYSICS】Proton Size Puzzle
- 算法导论-----最长公共子序列LCS(动态规划)
- SFF-8472-Rev12.3 SFP+文档翻译
热门文章
- 学习之路十四:客户端调用WCF服务的几种方法小议
- JS 字符串全部替换 ,replace (/ /g,'')
- java教程:十分钟理解Java中的弱引用
- javascript的window.open()具体解释
- how to remove untagged / none images
- Mercurial:Hg缓存更改的文件和打patch
- spring框架包含的模块
- 猝不及防,iOS9.3测试版已经遭到越狱?
- 《数值分析(原书第2版)》—— 1.5 不需要导数的根求解
- python访问oracle时的问题总结