视频信息初探¶
封装格式¶
format 大箱子,会装好多东西
mp4
mov
mkv
- 网络发布选择
mp4
编码格式¶
编码: coder
& decoder
H.264¶
H.264
= AVC
= AVC1
Advance Video Code
目前使用最广的高清视频压缩编码(不考虑H.265
),以低码率提供高质量。一般网上下载的视频一般都为H.264
编码
H.264是帧间编码(interframe),有三种帧,分别是I
、P
、B
帧
I帧
:解码不依赖其他帧(也就是不参考任何一个帧),存有一个完整的画面信息P帧
:向前预测帧,有较高的压缩比,仅记录它所参考的帧的残差,并记录运动矢量(有可能导致错误扩散),解码依赖它所参考的I、P、B帧(当打开B-Pyramid允许B帧作为参考帧时参考B帧)B帧
:双向预测帧,一般情况下压缩比最高,在解码时依赖于它所参考的I、P和B帧
H.265¶
H.265
= HEVC
Apple ProRes¶
Apple ProRes
是帧内编码(intraframe),是全I帧
的编码,不存在P、B帧
Apple ProRes
是苹果为非线编开发的一种视频编码,有ProRes 4444XQ
、ProRes 4444
、ProRes 422HQ
、ProRes 422
、ProRes422LT
、ProRes422Proxy
(Apple ProRes 4444
和 Apple ProRes 4444 XQ
非常适合动态图形媒体的交换,因为它们几乎是无损的。它们也是仅有的支持 alpha 通道
的 Apple ProRes 编解码器。)
- 4444 对于 1920x1080 和 29.97 fps 的 4:4:4 源,具有大约 330 Mbps 的目标数据速率。它还提供到 RGB 和 Y’CBCR 像素格式的直接编码和解码
- 422 目标数据速率在 1920x1080 和 29.97 fps 时约为 147 Mbps
- 422 Proxy Apple ProRes 422 Proxy 是比 Apple ProRes 422 LT 更高度压缩的编解码器,适用于需要低数据速率和全分辨率视频的离线工作流程。目标数据速率在 1920x1080 和 29.97 fps 时约为 45 Mbps。(FCPX做代理剪辑生成的媒体编码就是Apple ProRes 422 Proxy)
(PS.代理:重新编码出一个分辨率更低,帧内编码的视频文件,让你在剪辑的时候更加流畅.剪辑完成之后,可以把代理替换为原素材做进一步的处理)
视频参数¶
分辨率¶
1980*1080
视频中一帧(frame)由横纵1920×1080个像素(pixel)构成
帧率¶
frame-rate,一秒钟内闪过的图像的数量
24000/1001=23.976
视频的帧率是可以是恒定的(cfr, Const Frame-Rate),也可以是变化的(vfr, Variable Frame-Rate)
逐行扫描 p 隔行扫描 i
- 1080i 60 隔行扫描 每秒60帧的半帧 牺牲画面细节保证画面流畅
- 1080p 30 逐行扫描 每秒30帧的全帧 细节丰富但画面流畅度低
彩色信号使用的频段可能和声音信号干扰,产生噪音和画面扭曲——把画面的帧率做0.1%的缩减,避免两者之间相互产生干扰. 59.94,29.97
两种标准:NTSC(30Hz,美国,日本,韩国,菲律宾等)拍摄25Hz会发生闪烁,PAL(25Hz,中国,欧洲等)
码率¶
完全无压缩的4K 8bit RGB:4096*2160*24*(8+8+8)/1024/1024=4860Mbit/s≈5Gbit/s≈600MB/s
解析:先考察一个像素点,由于是RGB且未压缩,8bit则代表三个通道都会有8bit的信息.那么一个像素点的数据量为(8+8+8)bit
.再考察一帧,由于4K的分辨率是4096*2160,一帧图像的数据量为4096*2160*(8+8+8)bit
.一秒内24帧,再进行单位换算得到结果
分恒定码率(CBR)和可变码率(VBR).可变码率更加实用
当输出时制定码率之后,编码会尽可能在码率大小的限制先保留最好的图像
图像/帧的表示方法¶
RGB¶
分三个通道红(Red)、绿(Green)、蓝(Blue)
YUV¶
色度采样,又被称为亮度-色度模型(Luma-Chroma)
一种实现方式是三个通道为:亮度(Y),蓝色色度(Cb),红色色度(Cr)
优点:YUV模型将多数有效信息集中在Y通道,减少了冗余信息量,且为压缩提供便利;亮度和颜色饱和度的调节,在YUV模型下更方便
播放的时候,播放器需要将YCbCr的信息,通过计算,转换为RGB。这个步骤称为渲染(Rendering)
采样格式¶
研究表明,亮度信息最好全部保留,而色度信息可以由多个像素共享一个色度值,这样做可以减少数据量,同时画面不会出现什么问题
(自己的理解:采样就是随机抽取,8个相邻的像素,取其中几个拿出来存进去就行了)
第一个数字代表了像素的横向数量,来进行色度采样;第二个数字,代表了第一行像素的色度采样值;第三个数字,代表了第二行像素的采样值
主要采样格式:
- 4:4:4 每四列像素进行一次取样.取样时第一行取4个,第二行取4个.8bit量化时,一个像素3Byte
- 4:2:2 每四列像素进行一次取样.取样时第一行取2个,第二行取2个.剩下没有被取样的像素由周围的像素代替.这样做相比444丢失了一半的色度信息.8bit量化时,两个像素4Byte
(两个像素的亮度)2*1+(一个像素的两个色度通道色度)1*2*1
,一个像素2Byte - 4:2:0 每四列像素进行一次取样.取样时第一行取2个,第二行不取.8bit量化时,四个像素6Byte
(四个像素的亮度)4*1+(一个像素的两个色度通道色度)1*2*1
,一个像素1.5Byte.相比444扔掉了75%的色度信息.不过正常拍摄和调色都没问题
(注:4:2:0并不意味着只有Y,Cb而没有Cr分量。它指得是对每行扫描线来说,只有一种色度分量以2:1的抽样率存储。相邻的扫描行存储不同的色度分量, 也就是说,如果一行是4:2:0的话,下一行就是4:0:2,再下一行是4:2:0...以此类推。对每个色度分量来说,水平方向和竖直方向的抽样率都是 2:1,所以可以说色度的抽样率是4:1)
色深¶
色深(bit-depth),就是我们通常说的8bit和10bit,是指每个通道的精度。8bit就是每个通道用一个8bit整数(0~255)代表,10bit就是用10bit整数(0~1023)来显示,更高的色深16bit则是0~65535
例子:8bitRBG所能呈现的颜色种数为:2^24=16,777,216, 10bitRBG所能呈现的颜色种数为:2^30=1,073,741,824≈10亿
总结:10bit在进行高端处理的时候十分必要,但是8bit在日常使用已经足够