谈谈视频后面的技术万象
最近朋友来家里玩,一起看电影的时候不小心误按了键盘上的TAB,结果屏幕变成了这样:
在Potplayer播放器下按tab可以显示出当前视频的属性信息,再按一次可以隐藏
当时把朋友吓了一跳,以为把我的电脑弄坏了,我也顺着他的“好意”接受了他的星巴克外卖。
咳,后来朋友问起上面的这些诸多信息到底是什么意思,这让我一时语塞,因为视频背后的内容实在是太多了,一时竟不知如何讲起。在互联网极度发达的今天,网络传输速度的飞跃提升让我们已经不能满足于过去的文字与图片,看看近两年抖音和快手有多火就知道视频的力量到底如何了。人嘛,总是喜欢直观的呈现方式。
虽然阅片无数的人不少,但是对于多数人来说,视频的意义只是一个文件或者一条链接。而它背后的东西,不知道是否有人曾对其感觉到疑惑呢?
这次想通过这一篇文章,试着把这些生涩的内容整理一下,其实里面的多数内容,一直陪伴在我们身边,只是平常未必会留意到而已。
视频到底是什么
我们平常所看到的视频,除在APP、网页端等所看的抖音、直播、在线媒体等(其实它们的最终本质仍然是文件),多数都以文件的形式存在。打开一个视频,我们接受到的内容有两部分:1.视频画面;2.音频
事实上视频的结构如果把它简化并不复杂,它由三部分组成:视频编码、音频编码、封装方式。若是我们把一个视频文件比作一盒叉烧饭,那么叉烧就是视频编码、饭就是音频编码、饭盒则是封装方式。所以其实视频转换本质就是:设置需要的视频编码、设置需要的音频编码、选择需要的容器封装。
什么是编码,为什么要编码
先来讲讲什么是像素,这一点大家都经常听到了,什么我的手机是1200万像素的摄像头之类的。所谓像素,是形成图像的最基础单位,它是一个带有颜色的点。比如我们的电脑显示器若是1920*1080的分辨率,那么代表其从长上来说有1920个像素点,从高上来说有1080个像素点,那么整个屏幕则有1920*1080=2073600个像素点,即约200万像素。那么1920*1080,也就是这一个屏幕的分辨率。
像素点得带颜色才可以形成我们看到的彩色图像,我们知道在绘画中有RGB三原色,事实上计算机里RGB也被称为基色分量,它们可以从0-255共取256个等级(即2的8次方),所以我们在PS时可以看到某种颜色可以用(XXX,XXX,XXX)来进行表示,比如(183,67,21)可以代表一种红色。通过这种方式,我们可以定义256*256*256=16777216(2的24次方,即24bit)种颜色,即常说的1600万色,24位色,又被称作“真彩色”,因为这个范围已经超越了我们人类肉眼可以识别的范围了。
好了,讲了这两个基础,我们最后再谈谈帧这个概率。我们知道,视频的最基础单位就是帧,一幅静止的画面称之为一帧,多幅画面放在一起连续播放就形成了我们所见到的视频(动画的原理是相同的)。帧率越高,我们看到的画面就越流畅(当然这个受限于显示设备的限制,这一点不细讲)。视频的诞生,也带来了存储和传输的问题,这也是为什么需要编码。
一个原生没有经过压缩的视频体积是非常庞大的,以全高清(1920*1080)分辨率,帧数为50的视频为例:
每一帧像素:1920*1080=2073600
每个像素点的颜色为24bit,即:
2073600*24=49766400bit
8bit(位)=1byte(字节),也就是说一帧大概是6.22MB左右,再乘以帧率50,也就是说一秒的视频大概是311MB左右,一分钟就是18.22G,一个小时就是1.06T。这也就是说大多数人的电脑可能都放不了几部未压缩的大姐姐。
想想如果这个体积的视频要在网上传播,即使在现在百兆光纤相当普及的环境下,也是非常艰难的。
这个时候我们就需要编码了,所谓的编码,简单点理解就是把我们的数据按照一定的算法从一种格式转换到另一种格式。说白了其实就是把它进行压缩(编码),我们要播放的时候再按到原来的算法逆向进行解压(解码)。后面我们提到的各种编码方式,都是换着法子把视频变得更小。
关于编码的内容,我们后文再继续详说。
常见的封装方式
所谓文件封装格式也称多媒体容器 (Multimedia Container),它给编码提供了一个“外壳”,也就是将所有的处理好的视频、音频都包装到一个文件容器内呈现给观众,这个包装的过程就叫封装。如果混迹于各大字幕组的经验,“封装”这一词的出现频率其实非常高。
而封装方式对于我们来说最直观的表现,就是各个视频文件的后缀名:MP4、AVI、MOV、MKV等等。
从我前文的比喻中可知,同一个封装方式,内里的视频、音频编码可能并不一样。封装方式只是提供一个外壳,呈现的内容则要打开包装才知道。每一种封装格式都有自己的标准和要求(我们可以理解成每一个饭盒的形状都是不一样的)。
下面来谈谈几种比较常见有名的封装方式。
AVI(Audio Video Interleave)
相信这是大多数人最亲切的封装格式了,在1992年由微软公司推出,伴随其出生的还有大名鼎鼎的VFW(Video for Windows),它们是当时微软拿来对抗苹果QuickTime的武器。
AVI的文件分别头部、索引、主体三个部分。其中主体的图像数据和声音数据是交互分开存放的(从AVI的命名也可以看得出来),在播放的时候有一个同步的过程;尾部的索引可以让你跳转到自己想播放放的位置。所有的AVI文件都包括了两个List块,它定义了流和数据流的格式。只要遵循这个标准,任何视频编码方案都可以封装到AVI中,比较常见的有Xvid、H.264、MPEG等视频编码方式。AVI本身只提供了一个框架,内部的图像和声音有可能是诸多的编码格式,但由于它的索引放在了文件的尾部,所以并不适应于Internet的流媒体。AVI因为算法相对来说比较简单,因此同等条件下其生成的文件体积也要大上许多。
TS(Transport Stream)
MPEG2的流行让TS流封装也跟着盛行了起来。TS格式的特点是要求视频流中的任意一段都可以独立编码,它的文件结构由头文件和主体所组成,扩充过的TS流还包括了时间戳。这样就很容易通过时间戳来同步图像,避免了AVI格式的音视频同步问题。TS流从一开始就考虑了网络的播放问题,解决了AVI的硬伤,广泛应用于电视台的数字播放领域。TS流支持HD-DVD和BD所带的所有视、音频解码,包括杜比、DTS等等。
MKV
MKV是一种开放源代码的多媒体封装格式,属于Matroska的其中一种媒体格式,其实还有以MKS(音频文件)、MKA(字幕文件)为名的封装方式。Matroska的最大特点就是可以容纳多种不同类型的编码、音频和字幕流,即使是以封闭为特性出了名的RealMedia和QuickTime也不例外。要知道,MKV支持把多种不同的视频编码、16条以上不同格式的音频、不同语言的字幕流封装到同一个文件当中。由于Matroska的开放性和跨平台性,它成为了有名的H.264编码最主要的封装格式。
除了以上包容的特性,MKV采取了用可变帧率的方式来节省资源(即在播放变化较慢的内容时以较低的FPS来替代),同时提供了TS流和AVI都没有的错误检测及修复功能,进一步适应网络传输时代。值得一提的是,像较于DVD-RIP和HD-RIP等将字幕文件以独立的存在,MKV把字幕封嵌在内容的做法,既不会与视频混淆,又可以做到随意选择字幕,无论是保存和管理都非常方便。
MOV
MOV即QuickTime格式,是由苹果公司开发的一种视、音频文件格式,在高清时代到时下的4K都非常常见。MOV也被称为万能封装器,可见其优越性,它和MKV一样支持封装多个不同的字幕,同时也有非常好的跨平台性和纠错性。在苹果公司的努力下,MOV已经更新了好几个版本,在提升压缩率的同时支持更高的图像深度和改善帧内帧间的压缩算法(这些专业名词我们后文会再提到)。
MP4(MPEG-4 Part 14)
MP4是用于音频、视频信息的压缩编码标准,由国际标准化组织(ISO)和国际电工委员会(IEC)下属的“动态图像专家组”(Moving Picture Experts Group,即MPEG)制定,属于MPEG-4的一部分。MP4是时下优秀的有损压缩格式,甚至被称为H2.64的最佳存储格式。常见的大部分的MP4文件存放AVC(H.264)或MPEG-4(Part 2)编码的视频和AAC编码的音频。由于MP4的开放性,它还衍生出了其他缩水的格式,如M4V、3GP和F4V等等 。
MP4文件由若干称为Atom(或称为box)的数据对象组成,每个Atom的起首为四个字节的数据长度(Big Endian)和四个字节的类型标识,数据长度和类型标志都可以扩展。Atom可以嵌套,即其数据域可以由若干其它Atom组成,从而实现结构化的数据。
常见的一些视频编码方式
大致介绍了一下视频的“外包装”,该是时候介绍一下里面的“饭菜”了。这里讲的内容可能相对来说会更少见一些,但是对于有视频编辑经验的人而言,其实会感觉相当亲切。
MPEG
事实上只要网龄稍长一点,我想对于MPEG编码来说都并不陌生,因为它实在是太过有名了。在这里我会大致介绍一下MPEG-1、MPEG-2以及MPEG-4(为什么没有MPEG-3请接着看
)。
MPEG-1在1990年开始提出,于1992年被正式定为国际标准,它使得以VCD和MP3为代表的MPEG-1产品迅速在世界范围内普及。这个标准在当时大大提高了编码的效率以及声画的质量,但缺点是频宽要求较高。
MPEG-2在1994年公布,相较于MPEG-1,MPEG-2标准具有更高的图像质量、更多的图像格式和传输码率的图像压缩标准。按MPEG-2标准,传输率大概为3-10MB/s左右,按当时的要求来看,性能已经相当优秀,可以满足于HDTV的要求,稍作修改之后就把MPEG-2作为了DVD的标准。在当时专家门发现把MPEG-2修改一下就可以获得了类似于MPEG-3的效果(要求传输速率在20-40MB/S之间,但是会让画面有变形扭曲),所以MPEG-3尚未出生就被MPEG-2干掉了
。
MPEG-4标准在1999年出版,相对于前两版的MPEG标准,MPEG-4提供了低码率、高质量的视、音频压缩方案。也是在互联网飞速发展的年代,MPEG-4标准大大地推动了网络视频的发展。MPEG-4利用了帧重建、数据压缩等等方式对视频进行重建,甚至可以把DVD在不降低画面质量的前提下缩下其体积为原来的几分之一,是在当时非常牛的编码了。
ITU-T制定的编码标准(H.26X系列编码)
另一个非常有名的编码系列则是由ITU-T(国际电信联盟电信标准化部门)与ISO(国际标准化组织)联合制定的视频编解码标准。在高清乃至未来的4K时代都扮演着重要的角色。
H.261对全色彩、实时传输动图像可以达到较高的压缩比,算法由帧内压缩加前后帧间压缩编码组合而成,以提供视频压缩和解压缩的快速处理。由于在帧间压缩算法中只预测到后1帧,所以在延续时间上比较有优势,但图像质量难以做到很高的清晰度,很难实大压缩比和高帧率的录像。
H.263的基本编码方法与H.261相同,均为混合编码方法,但H.263重点偏向于极低的码率传输,所以在编码的各个环节上作了改进。同时,H.263还吸取了MPEG的双向运动预测等措施,进一步提高帧间编码的预测精度,在低码率时,采用H.263只要一半的速率可获得和H.261相当的图像质量,是相当明显的进步。
H.264有两个名称,一个是沿用ITU-T组织的H.26×名称,叫“H.264”;另一个则是AVC(Advanced Video Coding高级视频编码),这个标准也被归为MPEG-4的第10部分。H.264最大的优势是具有很高的数据压缩比率,在同等图像质量的条件下,H.264的压缩比是MPEG-2的2倍以上,是MPEG-4的1.5~2倍。32Kbps的H.264媒体流,其信噪比与128K的MPEG-4媒体流相近。即在同样的画面质量下,H.264的码率仅仅为MPEG-4的四分之一。若用数据来说的话,一个100G左右的原始文件,在经过H.264编码之后仅为1个G左右,压缩比近100:1,这样高的效率非常适合网络传输和无线应用,这也使得H.264编码成为高清时代的最重要编码之一。当然了,H.264编码也不是完全没有缺点的,由于计算复杂度增加,因此这个编码对于硬件的要求较以往变得更高
。
H.264较MPEG-2与MPEG-4的变化,更小的体积,更好的画质
H.265基于H.264,在保留原技术的同时加以改进。它采用了改善码流、编码质量、延时和算法复杂度之间的关系等方式来达到最优化设置。2012年最早由爱立信公司提出了第一个H.265编码器,半年后ITU-T就通过了HEVC/H.265标准,值得一提的是,华为公司在该标准内拥有着非常多的核心专利,是H.265标准主导者之一
。H.265旨在有限的带宽下传输更高质量的视频,仅需要H.264一半的带宽就可以传输相同质量的内容。同时该标准也把支持的分辨率提升到4K(4096*2160)乃于8K(8192*4320)的层次,为超高清视频的传播奠定了基础。
DNxHD(Digital Nonlinear Extensible High Definition)
该来讲讲一些更专业的级别的编码了。DNxHD的设计目标是基于利用较少的存储空间与带宽来满足多次合成需要的理念,它允许在标清处理的存贮与带宽条件下,进行协作式的高清后期处理。这个编码由全球最大的广播电视非线性网络解决方案厂家之一AVID主导,是一个基于MXF格式(Material Exchange Format)的开放式编码。由于DNxHD的开放性,使得它很容易和第三方兼容MXF格式的产品进行数据的交换。
DNxHD支持所有流行的高清格式,能够实现无损的栅格转换,彻底消除了高清压缩技术中压缩前格式转换所带来的分辨率损失现象。它在一个4:2:2的色彩空间上工作,有三个用户可选的带宽模式:分别是220Mbps/10bit;220Mbps/8bit;以及高效8bit处理模式,仅需要145Mbps的带宽。相比之下,未压缩的10bit 标清处理也得需要约200Mbps的带宽。
在这里我们提到了一个对于编码来说非常重要的色彩取样问题,这在广电技术里面是非常重要的内容,但是比较难理解,我会在后文另外再谈
。
ProRes
ProRes编码是由苹果公司推出的针对于影视后期制作的专业编码,旨在提供即时编辑的性能和高质量的画质,同时减少存储的压力。这个编码主要是给苹果自己的非编软件FinalCut Pro用的,在苹果的生态环境下有非常强悍的生产效率,特别是在进行特效叠加编辑的时候,基于ProRes编码的素材可以非常流畅地实时看到效果。
ProRes包括了ProRes 4444 XQ、 ProRes4444、ProRes 422 HQ、ProRes 422、ProRes 422 LT、ProRes 422 Proxy等。其中前两个主要是针对最高质量的编辑要求而用,对于大多数人来说都比较遥远,这里我们主要讲一下PreRes 422。
ProRes 422是专门针对高清制作的编码,它有以下几个特点:
1.采用4:2:2色度采样,10bit取样深度,在多次编译之后依然可以保持相对出色的画质。
2.较低的数据流,它使用了VBR(可变位率)的编码方式,对图像进行分析,可以实现双高清码流,提高设备的利用率。按它的效率,1920*1080分辨率下30fps的视频其数据流大概为147Mbps左右。
3.在Finalcut下可以实现动态实时预览,编码的速度非常高效。
总的来说,ProRes编码非常适用于苹果封闭的生态系统环境,虽然对于大多数人来说基于苹果的编辑平台相当昂贵,但在相对忽视成本的影视制作中,苹果ProRres编码受到了相当多用户的青睐。不过近年感觉FinalCut Pro的功能越做越尴尬,有被其对手抛在身后的趋势。
XAVC
XAVC是由索尼公司主导的编码,适用于高清乃至8K的视频,适用于前期拍摄到后期的编辑输出。由于索尼在行业内的强大领导力,使得该编码迅速在行业内推广开来,各大非编厂商的系统现在都可以非常好地支持它。无论是索尼的民用还是专业机器,基本都支持这个编码。
从上表可见,XAVC编码不支持标清,从720p级到4K都有对应的编码方案,在卡内录制的条件下,最高可以达到600Mbps的码流,由于使用了基于MXF格式的文件进行封装,使得它具有非常好的兼容性。
关于色彩取样
在前文我们提到了一个比较重要的概论,叫色彩取样,后面跟的是一个比例一样的东西(如4:2:2)。这东西说来比较复杂,可以这么来理解。
我们看到的拍摄画面都是从摄像机中来的,那么这有一个成像的过程,光从镜头到CCD/CMOS之后,要进行模数转换,把这些光信息转化成数字信号 ——YUV信号。事实上YUV信号 就是把RGB进行另一种表示方式,在过去的工作经验中工程师们发现,相对于颜色来说,人类的眼睛对于亮暗的区别要更加敏感。因此为了便于视频传输和存储,对于图像信号,我们可以对色彩进行压缩,把更多的带宽留给亮度,即黑白的信号 ,在这个条件下YUV就产生了。
在这里,Y指的是亮度(Luma),U和V指的是色度(Chroma)。当然可能大家在以前的老电视上还看到Y'CbCr,这是YUV的压缩版本,主要用于数字图像领域。我们平常在摄像机里常说的YUV其实就是Y'CbCr。
那么前文说到的色彩取样,其实就是基于YUV的取样方法,主流的方式有4:4:4,4:2:2以及4:2:0三种取样方式。
要把这几样东西解释起来非常复杂,估计讲完了还是没几个人可以听得懂。在这里我们只需要知道以下2点就够了。
1.4:2:2是CCIR(国际无线电咨询委员会)建议的数字电视演播室数字化分量编码标准。也就是说它是广电级别的取样标准,这也是专业的摄像机和民用的摄像机最本质的区别之一,民用的机型大多采用的是4:2:0的取样方式。
2.4:2:2已经比较完整地保留了模拟视频信号的原始信息,4:4:4主要是用于无损的RAW原生视频。4:2:0虽然相较于4:2:2带宽减半,但也因为这样使得一些重要的颜色信号丢失,对于后期制作来说是非常严重的问题,特别是需要抠像的特效制作。
感谢看到这里的值友,由于精力的关系,这一篇就先到这了,后续有机会的话再谈变音频编码以及我们平常播放视频的解码问题。谢谢~





















lhlh1024
那我还是不是很明白,视频编码相当于一种编码压缩方式,多媒体封装格式又是什么,有了编码不就能直接解编码了吗?
一般文件打个压缩包,解压缩就能使用了。
校验提示文案
飞扬不跋扈
校验提示文案
[已注销]
校验提示文案
小学生学霸
校验提示文案
魔幻星尘
校验提示文案
kk_1998
校验提示文案
Sugarniu
校验提示文案
67942mm
校验提示文案
PowerDestroy
校验提示文案
PowerDestroy
校验提示文案
67942mm
校验提示文案
Sugarniu
校验提示文案
lhlh1024
那我还是不是很明白,视频编码相当于一种编码压缩方式,多媒体封装格式又是什么,有了编码不就能直接解编码了吗?
一般文件打个压缩包,解压缩就能使用了。
校验提示文案
kk_1998
校验提示文案
魔幻星尘
校验提示文案
小学生学霸
校验提示文案
[已注销]
校验提示文案
飞扬不跋扈
校验提示文案