如上图,采集端通过拍摄、收音采集音视频元数据。但鉴于元数据过于庞大,不利于传输,所以需要进行编码压缩。之后为了方便存储与传输,需要对编码压缩后的音视频数据流切片,分段封装到一个一个文件中,最后遵循流媒体传输协议将这些文件数据封装成网络数据包,实时传输给业务服务器。业务服务器接收到推流来的数据后,为了直播时移与回放功能会对直播内容进行录制存储;为了适应不同网络环境下的不同客户端,会转码成不同码率的数据流供用户选择;为了减小单个服务器响应压力,需要做负载均衡,CDN将数据流遵循流媒体传输协议传输给客户端。客户端遵循流媒体传输协议从业务服务器拉流,对数据流进行解协议、解封装、软硬件解码、音视频同步,最终在客户端播放。
以上是直播的一个基本核心架构,所有的直播场景都会存在如图的几个关键节点和过程。看到这里的时候有个疑问,拿这个过程类比信息的传递过程,采集端可以理解为信源,播放端可以理解为信宿,推拉流过程可以理解为信道。那么为什么还需要一个业务服务器的存在?播放端不能直接从采集端那里拉流吗?不要这个业务服务器节点岂不是时延更低吗?
此时不妨思考下业务服务器的作用,即在实际的直播场景中,采用播放端直接从采集端拉流的架构下。如果某些主播或直播节目人气很高,无法满足数亿万计观众同时观看怎么办?观众观看直播的设备、平台、网络环境都不尽相同的情况下,如何保证尽可能多的观众都能观看呢?采集端视频流违法、违规需要管理怎么办呢?等等一系列问题,随着直播规模的扩大和业务的扩展,众多随之带来的问题都需要解决,那么业务服务器的出现就是为了解决这些问题与需求:
转码:业务服务器将采集端推来的数据流,转为不同的码率,以适用不同的网络环境,然后转为不同流媒体传输协议所使用的音视频封装格式,供不同播放端拉流播放。
CDN(Content Delivery Network,内容分发网络):业务服务器将网站的内容发布到最接近用户的网络”边缘”,使用户可以就近取得所需的内容,解决 Internet网络拥挤的状况,提高用户访问网站的响应速度。
QOS(Quality of Service,服务质量):为满足用户对不同应用不同服务质量的要求,就需要服务器能根据用户的要求分配和调度资源,对不同的数据流提供不同的服务质量。对实时性强且重要的数据报文优先处理;对于实时性不强的普通数据报文,提供较低的处理优先级,网络拥塞时甚至丢弃。
负载均衡:英文名称为Load Balance,其含义就是将外部发送来的负载(请求任务)均匀分配到对称结构中的某一台服务器上,而接收到请求的服务器独立地回应客户的请求,以提供快速获取重要数据,解决大量并发访问服务问题。
【更多音视频学习资料,点击下方链接免费领取↓↓,先码住不迷路~】
音视频开发(资料文档+视频教程+面试题)(FFmpeg+WebRTC+RTMP+RTSP+HLS+RTP)
2.1、音视频采集
直播形式无论是用简单的手机、PC端,还是专业的摄像头、麦克风等工具,其关键就在于对视频的录制以及对声音的采集。其中涉及的技术如下:
视频元数据:基于CCD(Charg Coupled Device,电荷耦合器件)或CMOS(Complementary Metal Oxide Semiconductor,互补金属氧化物半导体)技术的图像传感器通过对图像采集与处理,将图像转换成电信号,采集到的数据一般都是YUV或RGB格式。
音频元数据:声电转换装置(麦克风)和音频放大电路构成的拾音器,完成声音采集和处理,把声音转换成电信号,一般都是PCM数据格式。
2.2、视频编码
音视频采集到的元数据都是非常庞大的,为了方便传输,需要对这些元数据进行编码压缩,已知的编码压缩标准或方案有以下几个系列:
2.2.1、MPEG-系列
MPEG(Moving Picture Experts Group,动态图像专家组)是ISO(International Standardization Organization,国际标准化组织)和IEC(International Electrotechnical Commission,国际电工委员会)于1988年成立的专门针对运动图像和语音压缩制定国际标准的组织。该专家组成功将声音和影像的记录脱离了传统的模拟方式,并制定出MPEG-系列编码标准,目前包含MPEG-1、MPEG-2、MPEG-4、MPEG-7、MPEG-21这五个标准,主流常见的就是MPEG-1、2、4这三个。
MPEG-1是MPEG组织制定的第一个音视频有损压缩编码标准,编号为ISO/IEC11172,该标准于1992年正式发布,其是为CD光盘介质定制的视频和音频压缩格式。MPEG-1标准分三层,并且高层兼容低层:
MPEG-1 Layer1编码简单,用于DCC(Digital Compact Cassette,数字盒式磁带录音机),压缩率4:1。
MPEG-1 Layer2(即MP2)算法复杂度适中,压缩率8:1~6:1,应用于数字电视、DAB(数字信号广播,Digital Audio Broadcasting)、CD-ROM(Compact Disc Read-Only Memory,只读光盘)和VCD(Video Compact Disc,影碟光盘)等。
MPEG-1 Layer3(即MP3)最为出名,其编码复杂,压缩率高(12:1~10:1),由于在低码率条件下高水准的声音质量优势,被用于互联网上的高质量声音的传输。
MPEG-1提出了编码的基本图像,即我们所说的I帧、P帧、B帧:
I帧:(Intra Coded Picture,帧内编码图像)是I帧和P帧的参考图像,相当于一个固定图像,且独立于其它的图像类型。每个图像组群由I帧开始,编码时独立编码,仅适用帧内编码技术,解码时不参考其他帧。
P帧:(Predictive Coded Picture,预测编码图像)通过参照前面靠近它的I帧或P帧来预测得到,编码时使用运动补偿和运动估计,采用前向估计,即保存其与前一帧时间和空间上的差异信息即可,即压缩了与前一帧所重复的冗余信息,因而相比I帧会有更高的压缩比例。
B帧:(Bidirectionally Predictive Coded Pictures,前后预测编码图像)编码时也使用运动补偿和运动估计,预估采用前向估计、后向估计或是双向估计,主要参考前面的或者后面的I帧或者P帧,即保存与前后帧的差异,相比I和P帧会有更大的压缩比例。
MPEG-2于1994年公布,编号为ISO/IEC13818,与MPEG-1标准相比,MPEG-2标准具有更高的图像质量、更多的图像格式和传输码率的图像压缩标准。但其并不是对MPEG-1标准的简单升级,而是在传输和系统方面做了更加详细的规定和进一步的完善。为更好地表示编码数据,MPEG-2用句法规定了一个层次性结构。它分为六层,自上到下分别是:
序列(Sequence):指构成某路节目的图像序列,序列起始码后的序列头中包含了图像尺寸,宽高比,图像速率等信息。序列扩展中包含了一些附加数据,为保证能随时进入图像序列,序列头是重复发送的。
图像组(GOP, Group Of Picture):一个图像组由相互间有预测和生成关系的一组I、P、B图像构成,但头一帧图像总是I帧。
图像(Picture):即上面提到的I、P、B三类图像帧。
宏块条(Slice):一个宏块条包括一定数量的宏块,其顺序与扫描顺序一致。
宏块(Macro Block):MPEG-2中定义了4:2:0宏块、4:2:2宏块和4:4:4宏块这三种宏块结构,分别代表构成一个宏块的亮度像块和色差像块的数量关系。4:2:0宏块中包含四个亮度像块,一个Cb色差像块和一个Cr色差像块;4:2:2宏块中包含四个亮度像块,二个Cb色差像块和二个Cr色差像块;4:4:4宏块中包含四个亮度像块,四个Cb色差像块和四个Cr色差像块。这三种宏块结构实际上对应于三种亮度和色度的抽样方式。
块(Block):像块是MPEG-2码流的最底层,是DCT(Discrete Cosine Transform,离散余弦变换)的基本单元。MP@ML(Main Profile@Main Level,主档次@主等级)中一个像块由8x8个抽样值构成,同一像块内的抽样值必须全部是Y信号样值,或全部是Cb信号样值,或全部是Cr信号样值。另外,像块也用于表示8x8个抽样值经DCT变换后所生成的8x8个DCT系数。
MPEG-1、2标准的视频压缩编码技术主要利用了具有运动补偿的帧间压缩编码技术以减小时间冗余度,利用DCT技术以减小图像的空间冗余度,利用熵编码则在信息表示方面减小了统计冗余度。这几种技术的综合运用,大大增强了压缩性能。
MPEG-2是针对标准数字电视和高清晰电视在各种应用下的压缩方案,传输速率在3 Mbit/s~10 Mbit/s之间。除了作为DVD的指定标准外,MPEG-2还可用于为广播,有线电视网,电缆网络以及卫星直播提供广播级的数字视频。由于MPEG-2的出色性能表现,已能适用于HDTV,使得原打算为HDTV设计的MPEG-3,还没出世就被抛弃了。
MPEG-4标准于1999年2月式公布了MPEG-4标准第一版本,同年年底MPEG-4第二版亦告底定,且于2000年年初正式成为国际标准。该标准目前分为27个部分(part),统称为ISO/IEC14496国际标准。与MPEG-1/2相比,MPEG-4的特点是其更适于交互AV服务以及远程监控,其传输速率要求较低,利用很窄的带宽,通过帧重建技术,压缩和传输数据,以求以最少的数据获得最佳的图像质量。MPEG-4是第一个使观众由被动变为主动,即不再只是观看,允许你加入其中,具有交互性。
MPEG-4的出现是由于MPEG-1和MPEG-2的压缩技术不能将它放在网络上作为影音资料传递之用,所以MPEG-4不再是采用每张画面压缩的方式,而是采用了全新的压缩理念。先将画面上的静态对象统一制定规范标准,例如文字、背景、图形等,然后再以动态对象作基础的方式将画面压缩,务求以最少数据获得最佳的画质,并将之作为网络上传送之用。
在MPEG-4制定之前,MPEG-1、MPEG-2、H.261、H.263都是采用第一代压缩编码技术,着眼于图像信号的统计特性来设计编码器,属于波形编码的范畴。第一代压缩编码方案把视频序列按时间先后分为一系列帧,每一帧图像又分成宏块以进行运动补偿和编码,这种编码方案存在以下缺陷:
将图像固定地分成相同大小的块,在高压缩比的情况下会出现严重的块效应,即马赛克效应;
不能对图像内容进行访问、编辑和回放等操作;
未充分利用HVS(Human Visual System,人类视觉系统)特性;
MPEG-4则代表了基于模型/对象的第二代压缩编码技术,它充分利用了人眼视觉特性,抓住了图像信息传输的本质,从轮廓、纹理思路出发,支持基于视觉内容的交互功能,这适应了多媒体信息的应用由播放型转向基于内容的访问、检索及操作的发展趋势。
【更多音视频学习资料,点击下方链接免费领取↓↓,先码住不迷路~】
音视频开发(资料文档+视频教程+面试题)(FFmpeg+WebRTC+RTMP+RTSP+HLS+RTP)
MPEG-4为支持基于内容编码而提出了一个重要概念AVO(Audio Visual Object,视听对象),对象是指在一个场景中能够访问和操纵的实体,对象的划分可根据其独特的纹理、运动、形状、模型和高层语义为依据。在MPEG-4中所见的视音频已不再是过去MPEG-1、MPEG-2中图像帧的概念,而是一个个视听场景(AV场景),这些不同的AV场景由不同的AV对象组成。AV对象是听觉、视觉、或者视听内容的表示单元,其基本单元是原始AV对象,它可以是自然的或合成的声音、图像。原始AV对象具有高效编码、高效存储与传输以及可交互操作的特性,它又可进一步组成复合AV对象。因此MPEG-4标准的基本内容就是对AV对象进行高效编码、组织、存储与传输。AV对象的提出,使多媒体通信具有高度交互及高效编码的能力,AV对象编码就是MPEG-4核心编码技术。在AV对象这个核心技术上,MPEG-4还使用视频对象提取技术、VOP(Video Object Plane,视频对象平面)视频编码技术、视频编码可分级技术、运动估计与运动补偿等关键技术来实现编码过程。
上面说到的AV对象的概念听起来比较抽象,根据我的理解,这就像是我们要用游戏引擎来创建《愤怒的小鸟》这款游戏的游戏场景一样。我们能看到的游戏界面就是一个AV场景,这个场景中,弹弓是一个对象,小鸟是一个对象,小猪是一个对象等等。这些一个一个对象共同组成了这个游戏场景。每个对象有自身的参数,比如弹弓的大小、高度、回弹力度,小鸟的大小、种类、颜色等等,对这些对象编码,就可以理解为是对弹弓和小鸟的参数的编码。通过记录弹弓的回弹,小鸟的飞行轨迹,小猪的爆炸过程等数据就可以模拟出我们玩游戏时的动态过程。而对于一些AV对象可以进一步组成复合AV对象的理解,有点类似《我的世界》这款游戏里的高级素材包,这个高级素材包是由一些基本的素材组成的,而素材包本身又可以组成更高级的材料。这一段是我个人的主观理解,不一定完全正确,但起码会形象,容易理解一点。
2.2.2、H.26X系列
H.26X系列由ITU(International Telecommunication Union,国际电传视讯联盟)主导,ITU-T的标准包括 H.261、H.262、H.263、H.264、H.265,ITU-T的VCEG组织和ISO/IEC的MPEG组织也联合制定了一些标准,比如H.262标准等同于 MPEG-2的视频编码标准,而H.264标准则被纳入 MPEG-4的第10部分。
H.261是1990年ITU-T制定的世上第一个实用的数字视频编码标准,用于面对面的可视电话和视频会议。其设计的目的是能够在带宽为64kbps的倍数的ISDN(Integrated Services Digital Network,综合业务数字网)上传输质量可接受的视频信号,故其又称为又称为P*64,其中P为64kb/s的取值范围,是1到30的可变参数。实际的编码算法类似于MPEG-1、2算法,但双方并不兼容。H.261支持的分辨率格式有CIF(Common Intermediate Format,通用影像传输格式)和QCIF(Quarter common intermediate format,四分之一CIF),其中的CIF分辨率为352 x 288 像素,影像传输可达每秒30帧,而QCIF可以简单理解为分辨率上看水平和垂直像素均为CIF的一半。
H.262技术内容上和ISO/IEC的MPEG-2视频标准一致,即等同与MPEG-2。其是由ITU-T的VCEG组织和ISO/IEC的MPEG组织联合制定的,所以制定完成后分别成为了两个组织的标准,正式名称是"ITU-T建议H.262"和"ISO/IEC 13818-2"。这两个标准在所有的文字叙述上都是相同的(也许除了封面和标价之外)。
H.263是1995年由ITU-T制定的视频会议用的低码率视频编码标准,属于视频编解码。是为低码流通信而设计的,但实际上这个标准可用在很宽的码流范围,而非只用于低码流应用。其与H.261标准的编码算法基本一致,但也吸收了MPEG等其它一些国际标准中有效、合理的部分,使它性能优于H.261,因此它在许多应用中被用于取代H.261。H.263与H.261区别如下:
H.263的运动补偿使用半像素精度,而H.261则用全像素精度和环路滤波;
数据流层次结构的某些部分在H.263中是可选的,使得编解码可以配置成更低的数据率或更好的纠错能力;
H.263包含四个可协商的选项以改善性能;
H.263采用无限制的运动向量以及基于语法的算术编码;
采用事先预测和与MPEG中的P-B帧一样的帧预测方法;
H.263支持五种分辨率格式,除了H.261所支持的CIF和QCIF外,还支持SQCIF(128×96像素)、4CIF(4倍CIF)和16CIF(16被CIF);
H.263+是1998年IUT-T推出的H.263标准的第二版,所以也叫H.263v2,相比H.263做出了如下改进:
提高了压缩效率:增加帧内编码模式;增强PB帧模式,改进H.263的不足,增强了帧间预测的效果;
增强了网络传输的适应性:增加了时间分级、信噪比分级、空间分级,对在噪声信道和大量丢包的网络中传输视频信号,增强了抗错能力。参考帧选择模式、片结构模式增强了视频传输的抗误码能力;
支持更大范围的图像格式:自定义的图像尺寸,使之可以处理基于视窗的计算机图像、更高帧频的图像序列和宽屏图像;
而后出现的H.263++标准为了增强码流在恶劣信道上的抗误码能力和提高编码效率,在H.263+基础上主要增加了三个选项:
增强参考帧选择模式:能够提供增强的编码效率和信道错误再生能力,尤其是在丢包的网络环境下;
增加数据分片选项:提供增强型的抗误码能力,尤其是在传输过程中本地数据被破坏的情况下,通过分离视频码流中的DCT的系数头和运动矢量数据,采用可逆编码方式保护运动矢量;
在H.263+码流中增加补充信息,保证增强型的反向兼容性;
H.264标准于2003年5月发布,其同H.262一样,都是由ITU-T的VCEG组织和ISO/IEC的MPEG组织联合制定,这个标准在ITU-T这边称为H.264,在MPEG这边则是被纳入MPEG-4的第10部分:AVC(Advanced Video Coding,高级视频编码),所以对外统称H.264/AVC,以明确的说明它是由双方开发。其特点如下:
低码率:和MPEG2和MPEG4 ASP等压缩技术相比,在同等图像质量下,H.264压缩后的数据量只有MPEG2的1/8,MPEG4的1/3;
高质量的图像:H.264能在低码率情况下提供连续、流畅的高质量图像,这也是其被广泛应用的一个关键亮点;
容错能力强:H.264提供了解决网络传输丢包问题的工具,使其在高误码率传输的网络环境中同样适用;
网络适应性强:H.264为解决不同网络传输应用中的的差异,在系统层面上,对VCL(Video Coding Layer,视频编码层)和NAL(Network Abstraction Layer,网络抽象层)进行概念分割,前者负责高效的视频内容表示,后者负责以网络所要求的恰当的方式对数据进行打包和传送,使其适应不同的网络传输环境;
计算复杂度高:H.264性能的改进是以增加复杂性为代价换来的,其在编码和解码过程中要求大量的计算能力在特定类型的算术运算上;
H.265标准由ITU-T的VCEG组织于2013发布,是继H.264之后所制定的新的视频编码标准,该标准全称为高效视频编码(High Efficiency Video Coding),即HEVC/H.265。其围绕之前的H.264标准,保留原来的某些技术,同时对一些相关的技术加以改进,旨在在有限带宽下传输更高质量的网络视频,仅需原先的一半带宽即可播放相同质量的视频。H.263可以2~4Mbps的传输速度实现标准清晰度广播级数字电视(符合CCIR601、CCIR656标准要求的720*576);而H.264由于算法优化,可以低于2Mbps的速度实现标清数字图像传送;H.265 High Profile可实现低于1.5Mbps的传输带宽下,实现1080p全高清视频传输。然而因为版权、竞争、硬件配套等发展原因,该标准目前普及度并不是特别高。
H.266:2015年10月, 参与了H264和H265标准研发的ISO/IEC MPEG 和ITU-T VCEG共同成立了JVET(Joint Video Experts Team ),JVET提出了ITU-T H.266 | ISO/IEC 23090-3标准,该标准称为VVC(Versatile Video Coding)。2020年7月,德国的Fraunhofer Heinrich Hertz Institute (简称Fraunhofer HHI)联合Apple, Ericsson, Intel, Huawei, Microsoft, Qualcomm, and Sony发布了H.266/VVC标准。对比HEVC/H.265,H.266进一步优化了压缩,大约可以节省50%的数据流量,同时保证视频传输清晰度不变。
上一代HEVC/H.265视频技术领域最大的专利池是总部位于美国波士顿的Access Advance公司所管理的HEVC Advance专利池,为了改善以往专利池许可中的不佳做法,Access Advance下了不少功夫。例如,为了方便许可人和被许可人,Access Advance将专利池的详细信息、入池的相关操作步骤、FRAND费率设置的解释、以及池中现有专利的详细信息等诸多资料放在网站上供查阅。这种公开透明的做法,对潜在许可纠纷的化解具有积极意义。对于某些厂商如果签了专利池许可和双边许可,或者同时签了两个专利池的许可,出现有一些专利可能同时包括在两份许可中的情况,Access Advance专门拟定了相关政策:避免出现许可人对同一专利重复收费的情况,对许可人而言,它应当采取措施避免收两次专利费,如果无法避免,就需要偿还重复的款项,Access Advance也会应其要求预先扣除或者退回重复许可费。
此外,H.266/VVC标准发布后,Access Advance不仅启动了VVC专利许可池VVC Advance,而且从长远考虑,提出了MCBA(Multi-Codec Bridging Agreement,多编解码器衔接协议)。这不是一份许可协议,而可以理解为是给广大被许可人准备的一张“优惠券”,即能能显著降低总费用。在HEVC升级为VVC成为行业趋势的情况下,这种做法还有利于简化流程以及使未来许可成本可控,对于推动厂商从HEVC标准向更先进的VVC标准平滑过渡具有积极作用。
2.2.3、VC-1
VC1(Video Codec 1,视讯编解码器)是微软所开发的视频编解码系统,在2003年,微软基于其WMV 9格式提出了视频压缩规程的草案,将其提交SMPTE(The Society of Motion Picture and Television Engineers,电影和电视工程师协会)协会进行标准化。在2006年3月协会官方通过了SMPTE 421M标准,即VC-1标准,使WMV(Windows Media Video,Windows媒体视频) 9格式成为一种开放的标准。WMV从第七版(WMV1)开始,微软公司开始使用它自己非标准MPEG-4Part2,但是,由于WMV第九版已经是SMPTE的一个独立标准(421M,也称为VC-1),所以WMV的发展已经不象MPEG-4,而是一个它自己专有的编解码技术。相对于MPEG2,VC-1的压缩比更高,但相对于H.264而言,编码解码的计算则要稍小一些。
2.2.4、AVS系列
AVS(Audio Video coding Standard,音视频编码标准)是《信息技术先进音视频编码》系列标准的简称,是我国具备自主知识产权的第二代信源编码标准,也是数字音视频产业的共性基础标准。2006年2月,AVS视频编码成为国家标准,获批的标准号为GB/T20090,并于2006年3月1日起实施。该标准是基于我国创新技术和部分公开技术的自主标准,编码效率比MPEG-2高2-3倍,与AVC相当,而且技术方案简洁,芯片实现复杂度低。而且AVS通过简洁的一站式许可政策,解决了AVC专利许可问题死结,是开放式制订的国家、国际标准,易于推广。
AVS的管理模式在其被提出时就有相关规范,主要由技术研发、包括专利池与专利授权在内的知识产权管理、产业联盟三部分组成。这种模式在十几年前具有非凡的创新意义,即使在今天看来也是十分先进的理念。现在AVS上百位工作组会员与产业联盟成员为整个标准提供有力支撑,帮助其持续优化发展。
AVS系列发展:AVS于2002年确立,2003年第一代标准AVS1基本完成,随后中国高清电视广播使用AVS标准,于2006年2月颁为国家标准GB/T 20090.2-2006;AVS+于2012年7月颁为广电行业标准GY/T 257-2012;AVS2于2012年9月启动,2015年12月完成AVS2标准的制订,于2016年5月颁为广电行业标准GY/T 299.1-2016,并于同年12月颁为国家标准GB/T 33475.2-2016;AVS3于2018年3月启动,于2019年8月发布第一版。
2.2.5、VPX系列
VP8:2010年2月,Google以1.246亿美元完成了对On2 Technologies的收购,在之后的第三个月举办的GoogleI/O开发者大会上,Google开放了其拥有的VP8视频编码技术源代码并免费提供给所有开发者使用,Google目前在Android,Chrome浏览器、YouTube网站等服务中均有使用VPX技术。VP8和H.264属于同一个时代的标准,总体而言,VP8比H.264要差一些。其致力于实现产品及服务差异化的网络电视、IPTV和视频会议公司提供理想的解决方案。VP8有一个专利上的问题就是它实在是太像H.264了,这使得双方在专利等方面打的不可开交。
VP9:VP9是Google继VP8之后于2013年推出的新一代标准,VP9的目标之一是相同质量下相对于VP8可以减少50%的比特率,而另一个目标就是争取能在压缩效率上超越HEVC,但从结果来看,VP9要比HEVC稍微逊色一些。VP9相比VP8有着很多的提升。在比特率方面,VP9比VP8提高2倍图像画质,VP9另一大优势是没有版税,即免费使用。
2.2.6、AV1
AV1(AOMedia Video 1)是2018年发布的一个开放、免专利的视频编码格式,针对互联网传输视频而设计。它由AOMedia(Alliance for Open Media,开放媒体联盟)所开发,该联盟由半导体企业、视频点播供应商和网页浏览器开发商等组成,并于2015年成立。它是互联网工程任务组(IETF)视频标准化工作组NetVC的主要竞争者,其目标是取代前身VP9,并与HEVC/H.265竞争,其对标HEVC/H.265有如下主要特征:
因为HEVC/H.265复杂且重复的专利池使得专利费用高昂,而AV1则完全免费,包括灵活的商业和非商业内容,以及用户生成的内容;
H.265编码对硬件要求比较高,需要编码性能优越的处理芯片,而AV1可以运行在一般性能的处理芯片上;
因为AV1主要是为互联网打造的视频编码标准,它的网络适应性更好,能更好的适应网络媒体,使用于更多的网络终端;
获得比HEVC/H.265节省约30%的bit-rate;
【更多音视频学习资料,点击下方链接免费领取↓↓,先码住不迷路~】
音视频开发(资料文档+视频教程+面试题)(FFmpeg+WebRTC+RTMP+RTSP+HLS+RTP)
音频编码的主要作用是将音频采样数据(PCM等)压缩成为音频码流,从而降低音频的数据量。对音频元数据的编码压缩,除了减少数据冗余外,还会借助其他学科中的知识,会对我们自身的研究内容有质的帮助。比如参考人耳能听到的声音频率范围,就可以去除声源中人耳听不到的频率范围的声音,以达到压缩效果。类似的还有根据遮蔽效应,从人的听觉、视觉特点上着手对音视频数据进行压缩……
根据编码方式的不同,音频编码技术分为三种:
波形编码:在时间轴上对模拟语音信号按一定的速率抽样,直接将时间域信号变换为数字代码,使重构的语音波形尽可能地与原始语音信号的波形形状保持一致。该方法简单、易于实现、适应能力强并且语音质量好,接近无损,但压缩效果不好。
参数编码:参数编码是把语音信号产生的数字模型作为基础,然后求出数字模型的模型参数,再按照这些参数还原数字模型,进而合成语音。该方法压缩效果好,保密性好,但该方法最终得到的语音信号是通过建立的数字模型还原出来的,因此重构的语音信号波形与原始语音信号的波形可能会存在较大的区别、失真会比较大。
混合编码:混合编码是指同时使用两种或两种以上的编码方法进行编码。这种编码方法克服了波形编码和参数编码的弱点,并结合了波形编码高质量和参数编码的低编码率,能够取得比较好的效果。
2.3.1、PCM
PCM (Pulse Code Modulated Audio,脉冲编码调制)是目前计算机应用中最高保真水平的音频编码格式。PCM音频数据是未经压缩的音频采样数据裸流,它是由模拟信号经过采样、量化、编码转换成的标准的数字音频数据。PCM约定俗成了无损编码,能做到最大程度的无限接近绝对保真。被广泛用于素材保存及音乐欣赏,CD、DVD以及我们常见的WAV文件中均有应用,优点是音质好,缺点是体积大。
2.3.2、MP3
MP3(MPEG-1 Layer 3)即MPEG-1标准中第三层的的音频部分,简称MP3。其压缩率最高达12:1,且由于在低码率条件下高水准的声音质量优势,被用于互联网上的高质量声音的传输。其作为目前最为普及的音频压缩格式,为大众所熟知与使用。MP3编码格式属于有损编码,刚出现时它的编码技术并不完善,它更像一个编码标准框架,留待人们去完善。封装文件后缀名:.MP3
早期的MP3编码采用的的是固定编码率的方式(CBR),看到的128Kbps,就是代表它是以128Kbps固定数据速率编码——你可以提高这个编码率,最高可以到320Kbps,音质会更好,自然,文件的体积会相应增大。
因为MP3的编码方式是开放的,可以在这个标准框架的基础上自己选择不同的声学原理进行压缩处理,所以,很快由Xing公司推出可变编码率的压缩方式(VBR,Variable bitrate)。它的原理就是利用将一首歌的复杂部分用高比特率编码,简单部分用低比特率编码,通过这种方式,进一步取得质量和体积的统一。当然,早期的Xing编码器的VBR算法很差,音质与CBR相去甚远,但后续效果一直在改进中。公认比较好的首推LAME,它完美地实现了VBR算法,而且它是是完全免费的软件,并且由爱好者组成的开发团队一直在不断的发展完善。
而在VBR的基础上,LAME更加发展出ABR(Average Bitrate,平均比特率)算法,是VBR的一种插值参数。LAME针对CBR不佳的文件体积比和VBR生成文件大小不定的特点独创了这种编码模式。ABR在指定的文件大小内,以每50帧(30帧约1秒)为一段,高频和不敏感频率使用相对低的流量,低频和大动态表现时使用高流量,可以做为VBR和CBR的一种折中选择。
2.3.3、AAC
AAC(Advanced Audio Coding,高级音频编码)出现于1997年,基于MPEG-2的音频编码技术,由Fraunhofer IIS、杜比实验室、AT&T,索尼等公司共同开发,目的是取代MP3格式。MPEG-4标准出现后,AAC重新集成了其特性,加入了SBR(Spectral Band Replication,频段复制)技术和PS技术,包含在MPEG-4 part 3部分,为了区别于传统的MPEG-2 AAC又称为MPEG-4 AAC。对比MP3,AAC采用了全新的算法进行编码,更加高效,压缩比高。利用AAC格式,可使人感觉声音质量没有明显降低的前提下,更加小巧,但其缺点是有损压缩,与其他无损编码格式的音质存在“本质上”的差距。封装文件后缀名:.AAC
2.3.4、RA
RA(Real Audio)主要适用于网络上的在线播放,大部分音乐网站的在线试听都是采用了Real Audio,这种格式完全针对的就是网络上的媒体市场,支持非常丰富的功能。最大的闪烁点就是这种格式可以根据听众的带宽来控制自己的码率,在保证流畅的前提下尽可能提高音质。RA可以支持多种音频编码,和WMA一样,不但都支持边读边放,也同样支持使用特殊协议来隐匿文件的真实网络地址,从而实现只在线播放而不提供下载的欣赏方式。这对唱片公司和唱片销售公司很重要,在各方的大力推广下,RA和WMA是目前互联网上,用于在线试听最多的音频媒体格式。封装文件后缀名:.RA
2.3.5、WMA
WMA(Windows Media Audio,Windows媒体音频)是微软公司推出的与MP3格式齐名的一种新的音频格式。WMA在压缩比和音质方面都超过了MP3,更远胜于RA格式,即使在较低的采样频率下也能产生较好的音质。WMA格式是以减少数据流量但保持音质的方法来达到更高的压缩率目的,其压缩率一般可以达到18:1,生成的文件大小只有相应MP3文件的一半。另外WMA还支持音频流技术,即一边读一边播放,适合在网络上在线播放。作为微软抢占网络音乐的开路先锋可以说是技术领先、风头强劲,更方便的是不用像MP3那样需要安装额外的播放器,而Windows操作系统和Windows Media Player的无缝捆绑让你只要安装了windows操作系统就可以直接播放WMA音乐。WMA的另一个优点是内容提供商可以通过DRM(Digital Rights Management)方案如Windows Media Rights Manager 7加入防拷贝保护,这种内置了版权保护技术可以限制播放时间和播放次数甚至于播放的机器等等,这对被盗版搅得焦头烂额的音乐公司来说可是一个福音。封装文件后缀名:.WMA
2.3.6、AC-3
AC-3:1994年,日本先锋公司宣布与美国杜比实验室合作研制成功一种崭新的环绕声制式,并命名为“杜比AC-3”(Dolby Surround Audio Coding-3)。杜比AC-3原理上是它将每一声道的音频根据人耳听觉特性划分为许多最优的狭窄频段,利用音响心理学“听觉掩蔽效应”,删除人耳所听不到或可忽略的部分,保留有效的音频,删除多作的信号和各种噪声频率,使重现的声音更加纯净,分离度极高。采用数字信号压缩编码的同时,利用狭窄频段的划分使部分频段噪声在编码时可被几乎全部滤除,使其余噪声的频谱靠近在信号频谱附近,而这些噪声可被信号所抑制。因此杜比AC-3系统实际上是一种具选择性及强抑噪的系统。封装文件后缀名:.AC3
特点:以较低的码率支持全音频多声道,并具优良的回放音质和效果;具有很好的兼容性,它除了可执行自身的解码外,还可以为杜比定向逻辑解码服务;是一种灵活的音频数据压缩技术,它具有将多种声轨格式编码为一种低码率比特流的能力,支持8种不同的声道配置方式,从传统的单声道、立体声到拥有6个分离声道的环绕声格式(左声道、中置声道、右声道、左环绕声道、右环绕声道及低音效果声道)。
2.3.7、OGG
OGG(OGG Vorbis)是一种类似于MP3的音频压缩格式,两者的相同点在于,都像一个音频编码框架,能够在编码方案已经固定下来后还能对音质进行明显的调节和新算法的改良,因此声音质量将会越来越好。两者不同之处在于OGG是完全免费、开放和没有专利限制的,而Fraunhofer要收取MP3专利使用费,且OGG支持多声道、支持流式播放。此外,OGG通过使用更加先进的声学模型去减少损失,因此,同样位速率(BitRate)编码的OGG与MP3相比听起来更好一些。OGG缺点在于普及性、兼容性不好,而且其相比MP3优势的方面,其他编码方式做的更好。封装文件后缀名:.OGG
2.3.8、WAV
WAV文件是WaveForm的简写,也称为波形文件,可直接存储声音波形,还原的波形曲线十分逼真。WAV文件是在PC机平台上很常见的、最经典的多媒体音频文件,最早于1991年8月出现在Windows3.1操作系统上,文件扩展名为WAV。该文件是微软专门为Windows开发的一种标准数字音频文件,它符合RIFF(Resources lnterchange File Format,资源互换文件格式)规范,在Windows平台下,基于PCM编码的WAV是被支持得最好的音频格式,所有音频软件都能完美支持,由于本身可以达到较高的音质的要求,因此,WAV也是音乐编辑创作的首选格式,适合保存音乐素材。而且该文件能记录各种单声道或立体声的声音信息,并能保证声音不失真,但WAV文件有一个致命的缺点,就是它所占用的磁盘空间太大(每分钟的音乐大约需要12兆磁盘空间)。封装文件后缀名:.WAV
2.3.9、APE
APE开发者为Matthew T. Ashland,源代码开放,因其界面上有只“猴子”标志而出名。其作为一种无损压缩音频格式,通过Monkey's Audio这个软件可以将庞大的WAV音频文件压缩为APE,体积虽然变小了,但音质和原来一样。Monkey's Audio提供了Winamp的插件支持,因此这就意味着压缩后的文件不再是单纯的压缩格式,而是和MP3一样可以播放的音频文件格式。通过Monkey's Audio解压缩还原以后得到的WAV文件可以做到与压缩前的源文件完全一致,所以APE被誉为“无损音频压缩格式”,Monkey''s Audio被誉为“无损音频压缩软件”。与MP3这类有损压缩格式不可逆转地删除(人耳听力不敏感的)数据以缩减源文件体积不同,APE这类无损压缩格式,是以更精炼的记录方式来缩减体积,还原后数据与源文件一样,从而保证了文件的完整性。相较同类文件格式FLAC,APE有查错能力但不提供纠错功能,以保证文件的无损和纯正;其另一个特色是压缩率约为55%,比FLAC高,体积大概为原CD的一半,便于存储。封装文件后缀名:.APE
2.3.10、FLAC
FLAC(Free Lossless Audio Codec,自由无损音频压缩编码)的特点是无损压缩,不同于其他有损编码编码,它不会破坏任何原有的音频信息,所以可以还原音乐光盘音质。FLAC是免费的并且支持大多数的操作系统,“FLAC是自由(free)的”不仅仅意味着你可以不花钱而得到它,更重要的是FLAC的文件格式是对公众完全开放的,你可以以任何目的使用它(FLAC 项目只保留维护 FLAC 格式规格和确认兼容特性的权利),FLAC的文件格式和编码/解码的实现方式都不受任何已知专利的限制。还有,所有的源代码都在开放源代码的授权方式下可以得到,封装文件后缀名:.FLAC。特性如下:
版权:开源免费,但也因此不提供版权保护;
解码:FLAC更看重解码的速度,解码只需要整数运算,解码简单;
压缩率:压缩效果不好,压缩率低于APE;
硬件支持:相对于大多数编码方式而言,对计算速度要求很低,在很普通的硬件上就可以轻松实现实时解码;
可以用于流媒体:FLAC的每个数据帧都包含了解码所需的全部信息,解码当前帧无需参照它前面或后面的数据帧,并且使用了同步代码和CRC(Cyclic Redundancy Check,循环冗余校验),这样解码器在数据流中跳跃定位时可以有最小的时间延迟;
可以定位:FLAC支持快速采样精确定位,这不仅对于播放有益,更使得FLAC文件便于编辑;
富于弹性的metadata:可以定义和实现新类型的metadata数据块,而不会影响旧的数据流和解码器的使用;
适合于存档应用:FLAC是一个开放的编码格式,并且没有任何数据的损失,你可以将它转换为你需要的任何其他格式,并且每个数据帧的CRC和MD5标记对数据的完整性提供保障;
便于对CD进行备份:基于FLAC有一个“CUE表”metadata数据块用于保存CD的内容列表和所有音轨的索引点,因此你可以把平时单独存放的CUE文件嵌入到FLAC文件里,当你的原来的CD损坏的时候,你就可以用这个文件恢复出与原来一模一样的CD副本;
抗损伤:由于FLAC的帧结构,使得一旦发生数据流的损坏,损失会被限制在受损伤的数据帧之内;
2.3.11、AMR
AMR(Adaptive multi-Rate compression,自适应多速率音频压缩)被标准语音编码 3GPP在1998年10月选用,现在广泛在GSM和UMTS中使用。主要用于移动设备的音频压缩,压缩比非常高,但是音质比较差。主要用于语音类的音频压缩,不适合对音质要求较高的音乐类音频的压缩。许多现代移动电话手机可以存储AMR格式的短录音,并且存在免费和专有程序以在此格式和其他格式之间进行转换,但AMR是一种语音格式,不太可能为其他格式提供理想的结果音频。 封装文件后缀名:.AMR
2.3.12、MPC
MPC(MusePaCk)是由德国人Andree Buschmann开发的一种完全免费的高品质音频格式,基于MP2算法,故早前称作MPEGplus、MPEG+或MP+。在高码率下,MPC的高频要比MP3细腻不少,可以在节省大量空间的前提下获得最佳音质的音乐欣赏。MPC的编码方案是在MP2的基础上改进而来,它同样采用子带编码技术,但相比MP2,它所采用的心理声学模型要优秀得多,并加入了像ANS(Adaptive Noise Shaping)、CVD(ClearVoiceDetection)等技术,甚至改变了压缩时所用的Huffman编码,以得到更大的压缩率。另外,MPC采用的是可变码率进行编码,因而其编码效率要高一些。封装文件后缀名:.MPC
2.3.13、ALAC
ALAC(Apple lossless audio codec,苹果无损音频编码)是苹果公司开发的一种无损音频格式,苹果在Apache v2.0许可证下开源了ALAC。ALAC与MP3的主要分别在于编码过程中,MP3会取消小部分高频及低频部分的音频数据,而ALAC则会如实记录,不会删除音频中任何细节数据,因而ALAC音频文件大小会比MP3大。封装文件后缀名:.ALAC
封装,也叫多路复用(mux),封装的目的一般为了在一个文件(流)中能同时存储视频(video)、音频(audio)、字幕(subtitle)等内容——这也正是“复用”的含义所在(分时复用)。封装还有另一个作用是在网络环境下确保数据的可靠快速传输。一方面由于对音视频采用不同的压缩与处理方式,另一方面为了方便存储与传输,使得音视频的封装格式多种多样。
2.4.1、视频封装格式
mpg、mpe、mpeg:基于MPEG-1、2标准的封装格式;
m1v、m2v:m1v文件是基于MPEG-1标准的视频文件,储存了视频、音频和元数据;m2v文件是使用MPEG-2标准压缩编码的视频文件,它仅包含视频数据,不包含任何音频或字幕。DVD制作软件通常使用M2V文件搭配音频文件(例如m2v视频和wav音频文件)来创建DVD视频光碟;
dat、vob:dat文件是基于MPEG-1标准的视频文件,用于VCD光盘;vob文件是基于MPEG-2标准的视频文件,用于DVD光盘;
ASF:ASF(Advanced Streaming format,高级串流格式)是Microsoft为了和Real Player竞争而发展出来的一种可以直接在网上观看视频节目的文件压缩格式,使用了MPEG-4的压缩算法,其压缩率和图像质量都很不错;
【更多音视频学习资料,点击下方链接免费领取↓↓,先码住不迷路~】
音视频开发(资料文档+视频教程+面试题)(FFmpeg+WebRTC+RTMP+RTSP+HLS+RTP)
MOV:即QuickTime影片格式,其使用MPEG-4标准进行压缩,是Apple公司开发的一种音频、视频文件格式,用于存储常用数字媒体类型。当选择QuickTime作为保存类型时,动画将保存为.mov文件。它具有较高的压缩比率和较高的视频清晰度等特点,但是其最大的特点还是跨平台性,即不仅能支持MacOS,同样也能支持Windows系列;
DivX:DivX是由MPEG-4衍生出的另一种视频编码压缩标准,也即我们通常所说的DVDrip格式,它采用了MPEG-4的压缩算法同时又综合了MPEG-4与MP3各方面的技术,说白了就是使用DivX压缩技术对DVD盘片的视频图像进行高质量压缩,同时用MP3或AC3对音频进行压缩,然后再将视频与音频合成并加上相应的外挂字幕文件而形成的视频格式;
AVI、nAVI:AVI(Audio Video Interleaved,音视频交错)于1992年被Microsoft公司推出,随Windows3.1一起被人们所认识和熟知。它只能有一个视频轨道和一个音频轨道(有非标准插件可加入最多两个音频轨道),还可以有一些附加轨道,如文字等,可以将视频和音频交织在一起进行同步播放。这种视频格式的优点是图像质量好,可以跨多个平台使用,但是其缺点是体积过于庞大,以及压缩标准不统一;nAVI是NewAVl的缩写,是一个名为Shadow Realm的地下组织发展起来的一种新视频格式。它是由MicrosoftASF压缩算法修改而来的,视频格式追求的无非是压缩率和图像质量,所以nAVI为了追求这个目标,改善了原始的ASF格式的一些不足,让nAVI可以拥有更高的帧率。可以说,nAVI是一种去掉视频流特性的改良型ASF格式;
WMV:WMV(Windows Media Video,windows媒体视频)也是微软推出的一种采用独立编码方式并且可以直接在网上实时观看视频节目的文件压缩格式,是在ASF格式升级延伸来得,在同等视频质量下,WMV格式的体积非常小,因此很适合在网上播放和传输。WMV格式的主要优点包括:本地或网络回放、可扩充的媒体类型、可伸缩的媒体类型、多语言支持、环境独立性、丰富的流间关系以及扩展性等;
3GP:是“第三代合作伙伴项目”制定的一种多媒体标准,即一种3G流媒体的视频编码格式,主要是为了配合3G网络的高传输速度而开发的,也是目前手机中最为常见的一种视频格式。其核心由包括高级音频编码、自适应多速率和MPEG-4和H.263视频编码解码器等组成,目前大部分支持视频拍摄的手机都支持3GP格式的视频播放;
RM、RMVB:RM(Real Media)是Networks公司所制定的音频视频压缩规范,用户可以使用RealPlayer或RealOne Player对符合RealMedia技术规范的网络音频/视频资源进行实况转播,并且RealMedia还可以根据不同的网络传输速率制定出不同的压缩比率,从而实现在低速率的网络上进行影像数据实时传送和播放。这种格式的另一个特点是用户使用RealPlayer或RealOne Player播放器可以在不下载音频/视频内容的条件下实现在线播放;RMVB(Real Media Variable Bit Rate)即实时媒体可变比特率,它是由RM视频格式升级而来的视频格式,它的先进之处在于RMVB视频格式打破了原先RM格式那种平均压缩采样的方式,在保证平均压缩比的基础上合理利用比特率资源,就是说静止和动作场面少的画面场景采用较低的编码速率,这样可以留出更多的带宽空间,而这些带宽会在出现快速运动的画面场景时被利用。这样在保证了静止画面质量的前提下,大幅地提高了运动图像的画面质量,从而图像质量和文件大小之间就达到了微妙的平衡;
FLV、F4V:FLV(Flash Video)即FLASH视频,是一种网络视频格式,用作流媒体格式。由于它形成的文件较小、加载速度很快,使得网络观看视频文件成为可能,它的出现有效地解决了视频文件导入Flash后,使导出的SWF文件体积庞大,不能在网络上很好地使用等缺点,应用较为广泛;F4V是继FLV格式后Adobe公司推出的支持H.264的高清流媒体格式,它和FLV的主要区别在于,FLV格式采用的是H.263编码,而F4V则支持H.264编码的高清晰视频,码率最高可达50Mbps。F4V更小更清晰,更利于网络传播,已逐渐取代FLV,且已被大多数主流播放器兼容播放,而不需要通过转换等复杂的方式;
MKV:MKV文件是以Matroska多媒体容器格式保存的视频文件,Matroska是一种开放标准的自由的容器和文件格式。其最大的特点就是能容纳多种不同类型编码的视频、音频及字幕流,甚至可以容纳RealMedia及QuickTime这类高密流媒体文件,同时将它们的音频和影像重新组织起来,从而达到一个更好和鲜明的效果;
MP4:MP4是MPEG-4 Part 14的缩写,其以存储数字音频及数字视频为主,但也可以存储字幕和静止图像。因其可容纳支持比特流的视频流(如高级视频编码),因而MP4也可以在网络传输时使用流式传输。MP4文件视频使用MPEG-4视频编码进行压缩,而音频使用AAC音频编码进行压缩;
TS:TS(Transport Stream,传输流)是一种视频的容器格式,全称为MPEG2-TS。MPEG2-TS格式的特点就是要求从视频流的任一片段开始都是可以独立解码的。TS是专为不太可靠的传输而设计的,具有纠错和流同步功能,特别是对广播视频非常有用。 每当信号降级时,传输流(TS)都会处理纠错,并且流同步问题要比其他各种文件格式好得多;
2.4.2、音频封装格式
常见音频封装格式基本与2.3小节音频编码方案同名,以下只对未提到的格式做补充说明:
MP1、MP2、MP3:MPEG-1标准的音频部分分为三层,即MPEG-1 Layer 1、MPEG-1 Layer 2、MPEG-1 Layer 3,分别对应MP1、MP2、MP3;
AIFF:AIFF(Audio Interchange File Format,音频交换文件格式)是苹果公司开发的一款音频文件格式,主要用于存储的数字音频(波形)数据,和WAV非常相像。这一格式的特点就是格式本身与数据的意义无关,因此受到了微软的青睐,并据此搞出来WAV格式。AIFF虽然是一种很优秀的文件格式,但由于它是苹果电脑上的格式,因此在PC平台上并没有得到很大的流行,AIFF文件通常以AIF为后缀名的形式出现在windows系统上。
MIDI:MIDI(Musical Instrument Digital Interface,乐器数字接口)是用于电子乐器之间以及电子乐器与电脑之间交换音乐信息的标准协议。该标准定义了音乐事件的代码,其中包括音符的开头、音高、长度、音量和音乐属性,还定义了电子乐器上使用的各种按钮、转盘和踏板调节的代码。MIDI文件并不储存实际的音频数据,而是储存音符、控制参数等指令, 它指示MIDI 设备要做什么,怎么做, 如演奏哪个音符、多大音量等;
VQF:由YAMAHA和NTT共同开发的一种音频压缩技术,它的压缩率能够达到1:18;
AU:Sun Microsystems为Unix平台开发的一种音频文件格式,通常在Sun或其他基于Unix系统的计算机上使用;
DTS:DTS(Digital Theatre System,数字化影院系统)格式编码的多声道音频文件,保存用于环绕声的五轨音频数据,DTS声道分为左、中、右、左环绕、右环绕5个声道,加上低音声道组成5.1声道,广泛应用于DVD音效上;
2.5.1、RTMP
RTMP(Real Time Messaging Protocol,实时消息传输协议)基于TCP,是一个协议族,包括RTMP基本协议及RTMPT、RTMPS、RTMPE等多种变种。其最初由 Macromedia 开发,后被 Adobe 收购,至今仍被使用。该协议用来进行实时数据通信的网络协议,主要用来在Flash/AIR平台和支持RTMP协议的流媒体/交互服务器之间进行音视频和数据通信,应用于互联网直播、点播。由于 RTMP 播放视频需要依赖Flash插件,而Flash插件多年来一直受安全问题困扰,正在被迅速淘汰。但由于该协议采用实时的流式传输,时延非常低,所以现在主要用来提取采集端推来的数据流。即采集端通过RTMP协议将数据流推送到服务器,服务器解协议后,将处理后的数据通过其他流媒体传输协议(比如HLS)下发给播放端。
2.5.2、RTSP + RTP
RTSP+RTP经常用于IPTV领域,因为其采用UDP传输音视频,支持组播,效率较高。但其缺点是网络不好的情况下可能会丢包,影响视频观看质量。在该IPTV应用场景下,RTSP通常基于TCP来完成控制信令的传输,而把具体的TS数据包交给RTP。TS数据包经过RTP封装后,可以选择TCP或UDP传输方式来传输,UDP方式传输快但存在丢包,TCP不会丢包但传输相对UDP慢一些。
RTSP(Real-time Steaming Protocol,实时流媒体协议)是由哥伦比亚大学、网景和RealNetworks公司提交的IETF RFC标准,编号RFC2326。这是一个应用层协议,它可以在媒体服务器和客户端之间建立和控制连续的音/视频媒体流,协同更低层协议RTP、RSVP等一起来提供基于Internet的整套流式服务。RTSP提供了一个可扩展框架,使实时数据,如音频与视频的受控点播成为可能。该协议目的在于控制多个数据发送连接,为选择发送通道如UDP、组播UDP和TCP提供途径,并为选择基于RTP上发送机制提供方法。RTSP在语法和操作上与HTTP/1.1类似,因此HTTP的扩展机制大都可加入RTSP,但双方也存在如下区别:
RTSP引入了大量新方法并具有一个不同的协议标识符;
在大多数情况下,RTSP服务器需要保持缺省状态,即有状态,而HTTP是无状态协议;
RTSP中客户端和服务器都可以发出请求,即双向的,而HTTP是单向的请求与响应;
RTSP数据可以由不同协议传输,而HTTP通常基于TCP;
RTSP文本字符使用ISO 10646(UTF-8)而并非ISO 8859-1,采用SDP(Session Description Protocol,会话描述协议);
RTP(Real-time Transport Protocol,实时传输协议)是一个网络传输协议,它是由IETF的多媒体传输工作小组1996年在RFC 1889(旧版)中公布,国际电信联盟ITU-T也发布了自己的RTP文档,最终编号RFC3550(新版)。其为数据提供了具有实时特征的端对端传送服务,如在组播或单播网络服务下的交互式视频音频或流媒体系统(配合RTSP协议)。RTP 可以与其它适合的底层网络或传输协议一起使用,如果底层网络提供组播方式,那么 RTP 可以使用该组播表传输数据到多个目的地。 RTP 实行有序传送, 但并不保证传送或防止无序传送,所以其允许接收方重组发送方的包序列。RTP也不确定底层网络的可靠性,即并没有提供按时发送机制或其它服务质量(QoS)保证,它依赖于底层服务去实现这一过程。
RTP标准定义了两个子协议,RTP和RTCP(Real-time Transport Control Protocol,实时传输控制协议)。RTP本身并不能为按顺序传送数据包提供可靠的传送机制,也不提供流量控制或拥塞控制,它依靠RTCP传输控制协议提供这些服务。为了可靠、高效地传送实时数据,RTP和RTCP必须配合使用。RTCP传输控制协议主要用于周期的传送RTCP包,监视RTP传输的服务质量。在RTCP包中,含有已发送的数据包的数量、丢失的数据包的数量等统计资料。因此,服务器可以利用这些信息动态地改变传输速率,甚至改变有效载荷类型,实现流量控制和拥塞控制服务。
2.5.3、HTTP
HTTP-FLV:通过HTTP(Hyper Text Transfer Protocol,超文本传输协议)协议传输分片很小的FLV文件,因为HTTP本身没有复杂的状态交互,所以打开速度更快。但因为FLV封装格式的播放依赖于Flash插件,使其发展有限制,且Flash插件的使用正在逐步减少。
HLS(HTTP Live Streaming):是一个由苹果公司提出的基于HTTP的自适应码率流媒体传输协议,编号RFC8216,其主要由HTTP+M3U8+TS共同组成。HLS只请求基本的HTTP报文,与RTP协议不同,HLS可以穿过任何允许HTTP数据通过的防火墙或者代理服务器,也很容易使用CDN来传输媒体流。它的工作原理是把整个流分成一个个小的基于HTTP的文件,起播时先请求一个包含元数据的M3U8文件,然后播放端根据M3U8文件中的TS播放列表,去请求具体的TS分片,最终拼接并完成顺序播放。且在M3U8文件中,提供了不同码率的数据源,这使得播放端可以根据自身的网络环境选择不同码率的数据源,以提高观看体验,比如较差的网络环境下,也尽可能进行流畅播放,减少卡顿。
但该方案缺点在于时延较高,但 Apple 在 WWDC 2019 发布了新的解决方案,可以将延迟从8秒降低到1至2秒,具体参考其官网说明。另一方面,HLS协议的小切片方式会生成大量的文件,存储或处理这些文件会造成大量资源浪费。如果要实现数天的时移,索引量将会是个巨额数字,大量的I/O操作会明显影响请求速度,对磁盘要求变得苛刻。对此的解决方案是:不将TS切片文件存到磁盘,而是存在内存当中,这种技术使得服务器的磁盘上面不再会有“数以吨计”的文件碎片,极大减少了磁盘的I/O次数,延长了服务器磁盘的使用寿命,极大提高了服务器运行的稳定性。
直播与点播:直播相比电影、剧集等这样点播形式的播放,其关键在于实时性。比如近期2022年中国冬奥会现场赛事直播,各种紧张刺激的赛事比赛通过众多专业的高速摄像头捕捉、拍摄、整合,最终呈现在屏幕前的观众眼中,这样的形式关键在于低时延。而像电影、电视剧这样的点播形式,是前期剧组编排、拍摄、剪辑、渲染、版权、上映等一系列复杂过程,最后经过很长一段时间后才会呈现在观众眼中,其不存在实时性。实时性所包含的另一层感觉就是结果的未知性,冬奥会赛事、游戏比赛、体育赛事等等直播形式,我们在观看时,无法知道下一秒会发生什么以及结局将会是怎样的。所以观众才会因为下一秒突然的进球、倏然的超越、意外的败北等等,体验与感受着这一秒所带来的兴奋、悲伤等一系列人类身上复杂情感的交织,这便是直播的魅力。如果你错过了直播时间,当然可以通过直播时移、重播、回放形式来补看直播过程,但此时比赛直播的结果已经出现了,你通过拖动回放进度条或者其他途径就能看到最终的结果,此时的回放、重播便不再属于直播,而属于点播了,因为已经不存在实时性了,且未知性的结果这个神秘面纱已被揭下。
直播时移:所谓时移,是指观众可以任意回放过去时间的直播内容。时移是直播与点播相结合而形成的一种新业务,是直播业务的补充。比如观看一场球赛时,就因为离开了一小会儿却错过了一个精彩进球,那我们想看看刚才那个进球怎么办呢?答案就是通过直播时移来弥补。该技术在直播过程中对直播内容进行录播,观众需要时移回看方才的进球时,以点播形式拉流观看之前的录播内容,看完进球后又想回到直播过程时,直接拉取直播流并通过时间同步,以回到实时直播过程。
广播、组播、单播:广播意味着网络向子网每一个主机都投递一份数据包,不论这些主机是否乐于接收该数据包,所以广播的使用范围非常小,只在本地子网内有效,通过路由器和网络设备控制广播传输;单播是在发送者和每一接收者之间实现点对点网络连接,如果一台发送者同时给多个的接收者传输相同的数据,也必须相应的复制多份的相同数据包,如果有大量主机希望获得数据包的同一份拷贝时,将导致发送者负担沉重、延迟长、网络拥塞,为保证一定的服务质量需增加硬件和带宽;组播解决了单播和广播方式效率低的问题,如果一台发送者同时给多个接收者传输相同的数据,也只需复制和发送一份相同的数据包即可。它提高了数据传送效率,减少了骨干网络出现拥塞的可能性;
采样率:也称为采样速度或者采样频率,定义了单位时间内从连续信号中提取并组成离散信号的采样个数,它用赫兹(Hz)来表示。采样频率的倒数是采样周期或者叫作采样时间,它是采样之间的时间间隔,通俗的讲采样频率是指计算机单位时间内能够采集多少个信号样本;
码率:指视频文件在单位时间内使用的数据流量,通俗一点的理解就是视频取样率。是视频编码中画面质量控制中最重要的部分,一般用kb/s或者Mb/s表示。同样分辨率下,视频文件的码流越大,压缩比就越小,画面质量就越高。码流越大,说明单位时间内取样率越大,数据流,精度就越高,处理出来的文件就越接近原始文件,图像质量越好,画质越清晰,要求播放设备的解码能力也越高。码率(kbps)=文件大小(KB) * 8 / 时间(秒);
帧率FPS:FPS指每秒显示的图片数,或者GPU每秒能够更新的次数,帧率越高可以看到更加流畅的画面,同时文件大小会增加。我们人眼在30fps的时候就可以认为很流畅了,60fps可以有很好的体验了,再增大则对人眼来说意义不大。帧率会影响画面流畅度,与画面流畅度成正比,帧率越大,画面越流畅;帧率越小,画面越有跳动感;
SD、HD、FHD、4K、8k:
以分辨率形式1080i50hz和1080p60hz为例,其中i(Interlace Scaninterlace)是指隔行扫描;P(ProgressiveScan)代表逐行扫描,这两者在画面的精细度上有着很大的差别,相同分辨率情况下逐行扫描的画质要高于隔行扫描,即1080P的画质要胜过1080i