现代播放器原理
现代播放器简单架构
用户界面(UI)
皮肤 播放器视觉相关部分:进度条控制、按钮、动画图标等
UI逻辑
定义了播放过程中和用户交互方面所有可见的交互:播放列表、缩略图、播放频道的选择以及社交媒体分享等。最好的实现方式是让各种特性都以插件/模块
的形式添加到UI核心模块中。
业务逻辑 不可见的一部分,构成了业务独特性:认证和支付、频道和播放列表的获取、以及广告,A/B测试逻辑(升级灰度部分用户体验),以及和设备相关的配置。
多媒体引擎
声明文件解释和解析器
在基于HTT P的视频流中,一切都是以一个描述文件开始。该声明文件包含了媒体服务器所需理解的元信息:有多少种不同类型的视频质量、语言以及字母
等,它们分别是什么。解析器从XML文件(对于HLS来说则是一种特殊的m3u8文件)中取得描述信息,然后从这些信息中取得正确的视频信息。媒体服务器
的类型很多,并不是所有都正确地实现了规范,因此解析器可能需要处理一些额外的实现错误。一旦提取了视频信息,解析器则会从中解析出数据,用于构建
流式的视觉图像,同时知道如何获取不同的视频片段。这些视觉图像先以一副抽象多媒体图的形式出现,然后在屏幕上绘制出不同HTT P视频流格式的差异特
征。在直播流场景中,解析器也必须周期性地重新获取声明文件,以便获得最新的视频片段信息。
下载器
下载器是一个包装了处理HTT P请求原生API的模块。它不仅用于下载多媒体文件,在必要的时候也可以用于下载声明文件和DRM密钥。下载器在处理网络错
误和重试方面非常重要,同时能够收集当前可用带宽的数据。
注意:下载多媒体文件可能使用HTTP协议,也可能使用别的协议,如点对点实时通信场景中的WebRTC协议
流播放引擎
流播放引擎是和解码器API交互的中央模块,它将不同的多媒体片段导入编码器,同时处理多码率切换和播放时的差异性(如声明文件和视频切片的差异,以
及卡顿时的自动跳帧)
资源质量参数预估器
预估器从各种不同的维度获取数据(块大小,每片段下载时间,以及跳帧数),并将其汇聚起来用于估算用户可用的带宽和CPU计算能力。这是输出用于ABR
(Adaptive Bitrate,自适应码率)切换控制器做判断。
ABR切换控制器
ABR切换器可能是多媒体引擎中最为关键的部分——通常也是大家最为忽视的部分。该控制器读取预估器输出的数据(带宽和跳帧数),使用自定义算法根据
这些数据做出判断,告诉流播放引擎是否需要切换视频或者音频质量。
该领域有很多研究性的工作,其中最大的难点在于在再缓冲风险和切换频率(太频繁的切换可能导致糟糕的用户体验)之间找到平衡。
DRM管理器
所有的付费视频服务都基于DRM管理,而DRM则很大程度上依赖于平台或者设备,多媒体引擎中的DRM管理器是更底层解码器中内容解密API的包装。只要
有可能,它会尽量通过抽象的方式来屏蔽浏览器或者操作系统实现细节的差异性。该组件通常和流处理引擎紧密连接在一起,因为它经常和解码器层交互。
格式转换复用器
每个平台在封包和编码方面都有它的局限性(Flash读的是FLV容器封装的H.264/AAC文件,MSE读的是ISOBMFF容器封装的H.264/AAC文件)。这就导致
了有些视频片段在解码之前需要进行格式转换。例如,有了MPEG2-TS到ISOBMFF的格式转换复用器之后,hls.js就能使用MSE格式的内容来播放HLS视频
流。多媒体引擎层面的格式转换复用器曾经遭受质疑;然而,随着现代JavaScript或者Flash解释权性能的提升,它带来的性能损耗几乎可以忽略不计,对用户
体验也不会造成多大的影响。
解码器和DRM管理器
解码器:解码器处理最底层播放相关的逻辑。它将不同封装格式的视频进行解包,并将其内容解码,然后将解码后的视频帧交给操作系统进行渲染,最终让终
端用户看到。
由于视频压缩算法变得越来越复杂,解码过程是一个需要密集计算的过程,并且为了保证解码性能和流畅的播放体验,解码过程需要强依赖于操作系统和硬
件。现在的大部分解码都依赖于GPU加速解码的帮助(这也是为什么免费而更强大的VP9解码器没有赢得H.264市场地位的原因之一)。如果没有GPU的加
速,解码一个1080P的视频就会占去70%左右的CPU计算量,并且丢帧率还可能很严重。
在解码和渲染视频帧的基础之上,管理器也提供了一个原生的buffer,多媒体引擎可以直接与该buffer进行交互,实时了解它的大小并在必要的时候刷新它。
每个平台都有自己的渲染引擎和相应的API:Flash平台有Netstream,Android平台有Media Codec API,而Web上则有标准的Media Sources Extensions。
MSE越来越吸引眼球,将来可能会成为继浏览器之后其它平台上的事实标准。
DRM管理器:在传输工作室生产的付费内容的时候,DRM是必要的。这些内容必须防止被盗,因此DRM的代码和工作过程都向终端用户和开发者屏蔽了。解
密过的内容不会离开解码层,因此也不会被拦截。
为了标准化DRM以及为各平台的实现提供一定的互通性,几个Web巨头一起创建了通用加密标准Common Encryption(CENC)和通用的多媒体加密扩展En
crypted Media Extensions,以便为多个DRM提供商(例如,EME可用于Edge平台上的Playready和Chrome平台上的Widewine)构建一套通用的API,这些
API能够从DRM授权模块读取视频内容加密密钥用于解密。
CENC声明了一套标准的加密和密钥映射方法,它可用于在多个DRM系统上解密相同的内容,只需要提供相同的密钥即可。
在浏览器内部,基于视频内容的元信息,EME可以通过识别它使用了哪个DRM系统加密,并调用相应的解密模块(Content Decryption Module,CDM)解
密CENC加密过的内容。解密模块CDM则会去处理内容授权相关的工作,获得密钥并解密视频内容。
CENC没有规定授权的发放、授权的格式、授权的存储、以及使用规则和权限的映射关系等细节,这些细节的处理都由DRM提供商负责。
延迟优化
明确问题方向
共通问题----用户端的网络质量、用户端与服务器之间的交互质量
首屏时间----页面信息加载(移动端界面加载)、发起url请求、DNS解析、鉴权、视频数据下载、播放器渲染解码、填充播放器、直播流信息
卡顿率----卡顿的定义、卡顿的计算方式、主播推流质量、推拉流客户端的逻辑、填充播放器、直播流信息、用户端类型分布情况、cdn内部链路传输质量、
用户端的网络质量、客户逻辑特性与cdn的兼容性。
失败率----失败的定义、失败率的计算方式、发起url请求、dns解析、建连、鉴权、播放器渲染解码、主播推流质量、推拉流客户端的逻辑、填充播放器、直
播流信息、cdn内部链路传输质量、用户端的网络质量、客户端逻辑特性与cdn兼容性
编码优化
确保Codec开启了最低延迟的设置。Codec一般都会有低延迟优化的开关,对于H.264来说其效果尤其明显。H.264的解码器正常情况下会在显示之前缓存一
定的视频帧,对于QCIF分辨率大小的视频(176×144)一般会缓存16帧,对于720P的视频则缓存5帧。对于第一帧的读取来说,这是一个很大的延迟。如果你
的视频不是使用H.264来编码压缩的,确保没有使用到B帧,它对延迟也会有较大的影响,因为视频中B帧的解码依赖于前后的视频帧,会增加延迟。
编码器一般都会有码控造成的延迟,一般也叫做初始化延迟或者视频缓存检验器VBV的缓存大小,把它当成编码器和解码器比特流之间的缓存,在不影响视频
质量的情况下可以将其设置得尽可能小也可以降低延迟。
如果是仅仅优化首开延迟,可以在视频帧间插入较多的关键帧,这样客户端收到视频流之后可以尽快解码。但如果需要优化传输过程中的累计延迟,尽可能少
使用关键帧也就是I帧(GOP变大),在保证同等视频质量的情况下,I帧越多,码率越大,传输所需的网络带宽越多,也就意味着累计延迟可能越大。这个优
化效果可能在秒级延迟的系统中不是很明显,但是在100ms甚至更低延迟的系统中就会非常明显。同时,尽量使用ACC-LC Codec来编码音频,HE-ACC或
者HE-ACC 2虽然编码效率高,但是编码所需时间更长,而产生更大体积的音频造成的传输延迟对于视频流的传输来说影响更小。
不要使用视频MJPEG的视频压缩格式,至少使用不带B帧的MPEG4视频压缩格式(Simple profile),甚至最好使用H.264 baseline profile(X264还有一个
「-tune zerolatency」的优化开关)。这样一个简单的优化可以降低延迟,因为它能够以更低的码率编码全帧率视频。
如果使用了FFmpeg,降低「-probesize」和「-analyze duration」参数的值,这两个值用于视频帧信息监测和用于监测的时长,这两个值越大对编码延迟的
影响越大,在直播场景下对于视频流来说analyzeduration参数甚至没有必要设定。
固定码率编码CBR可以一定程度上消除网络抖动影响,如果能够使用可变码率编码VBR可以节省一些不必要的网络带宽,降低一定的延迟。因此建议尽量使用
VBR进行编码。
传输协议优化
在服务端节点和节点之间尽量使用RTMP而非基于HT TP的HLS协议进行传输,这样可以降低整体的传输延迟。这个主要针对终端用户使用HLS进行播放的情
况。
如果终端用户使用RTMP来播放,尽量在靠近推流端的收流节点进行转码,这样传输的视频流比原始视频流更小。
如果有必要,可以使用定制的UDP协议来替换TCP协议,省去弱网环节下的丢包重传可以降低延迟。它的主要缺点在于,基于UDP协议进行定制的协议的视频
流的传输和分发不够通用,CDN厂商支持的是标准的传输协议。另一个缺点在于可能出现丢包导致的花屏或者模糊(缺少关键帧的解码参考),这就要求协议
定制方在UDP基础之上做好丢包控制。
传输网络优化
七牛直播云的实时流传输网络,它是一种新型的节点自组织的网状传输网络,既适合国内多运营商网络条件下的传输优化,也适合众多海外直播的需求。
在服务节点中缓存当前的GOP,配合播放器端优化视频首开时间
服务端实时记录每个视频流流向每个环节时的秒级帧率和码率,实时监控码率和帧率的波动
客户端(推流和播放)通过查询服务端准时获取当前最优节点(5秒一次),准实时下线当前故障节点和线路
推流、播放优化
考察发送端系统自带的网络buffer大小,系统可能在发送数据之前缓存数据,这个参数的调优也需要找到一个平衡点
播放端缓存控制对于视频的首开延迟也有较大影响,如果仅优化首开延迟,可以在0缓存情况下在数据到达的时候立即解码。但如果在弱网环境下为了消除网
络抖动造成的影响,设置一定的缓存也有必要,因此需要在直播的稳定性和首开延迟优化上找到平衡,调整优化缓冲区大小这个值
播放端动态buffer策略,这是上面播放端缓存控制的改进版本。如果只是做0缓存和固定大小的缓存之间进行选择找到平衡,最终还是会选择一个固定大小的
缓存,这对亿级的移动互联网终端用户来说并不公平,他们不同的网络状况决定了这个固定大小的缓存并不完全合适。因此,我们可以考虑一种「动态buffer
策略」,在播放器开启的时候采用非常小甚至0缓存的策略,通过对下载首片视频的耗时来决定下一个时间片的缓存大小,同时在播放过程中实时监测当前网
络,实时调整播放过程中缓存的大小。这样即可做到极低的首开时间,又可能够尽量消除网络抖动造成的影响
动态码率播放策略。除了动态调整buffer大小的策略之外,也可以利用实时监测的网络信息来动态调整播放过程中的码率,在网络带宽不足的情况下降低码率
进行播放,减少延迟
推流和传输
推送协议
RTMP
定义:real time messaging protocol(实时消息传输协议)。基于TCP,包括RTMP基本协议及RTMPT/RTMPS/RTMPE等多种变种。主要用来在Flash/AIR平
台和支持RTMP协议的流媒体/交互服务器之间进行音视频和数据通信。是目前主流的流媒体传输协议,广泛用于直播领域。
优点
CDN支持良好,主流CDN厂商都支持
协议简单,在各平台上实现容易
缺点
基于T CP,传输成本高,在弱网环境丢包率高的情况下问题显著
不支持浏览器推送
Adobe私有协议,已经不再更新
WebRTC
定义:源自网页即时通信(web real-time communication)的缩写,是一个支持网页浏览器进行实时语音对话或视频对话的API。目前主要应用于视频会议
和连麦中
协议分层
优点
W3C标准,主流浏览器支持度高
谷歌在背后支撑,并在各平台有参考实现
底层基于SRTP和UDP,弱网情况优化空间大
可以实现点对点通信,通信双方延时低
缺点
ICE ST UN T URN传统CDN没有类似服务提供
基于UDP的私有协议
定义:有些直播应用会使用UDP作为底层协议开发自己的私有协议,因为UDP在弱网环境下的优势通过一些定制化的调优可以达到比较好的弱网优化效果。
优点 更多空间进行定制化优化
缺点
开发成本高
CDN不友好,需要自建CDN或者和CDN达成协议
独立作战,无法和社区一起演进
传输网络 传统CDN
新需求
对cache的要求没有那么高
对实时性的要求很高
对节点运维的要求很高,要更智能,尽量减少人工干预
对扩容这种运维事件响应度要求非常高
针对新需求的策略
去中心化,网状拓扑
全球全网调度
节点无状态,节点对等
智能运维
编码和封装
编码
封装
意义:封装可以理解为采用哪种货车去运输,也就是媒体的容器,容器就是把编码器生成的多媒体内容(视频,音频,字母,章节信息等)混合封装在一起的
标准。
容器使得不同多媒体内容同步播放变得很简单。
为多媒体内容提供索引,也就是说没有容器存在的话,一部影片你只能从一开始看到最后,不能拖动进度条,而且如果不自己手动另外载入音频就没有声音。
格式
AVI(后缀为 .avi) 它的英文全称为Audio Video Interleaved,即音频视频交错格式。优点是图像质量好。由于无损AVI可以保存alpha通道,经常被我们使用。
缺点太多,体积过于庞大,而且更加糟糕的是压缩标准不统一,最普遍的现象就是高版本Windows媒体播放器播放不了采用早期编码编辑的AVI格式视频,而
低版本Windows媒体播放器又播放不了采用最新编码编辑的AVI格式视频,所以我们在进行一些AVI格式的视频播放时常会出现由于视频编码问题而造成的视频
不能播放或即使能够播放,但存在不能调节播放进度和播放时只有声音没有图像等一些莫名其妙的问题。
DV-AVI(后缀为 .avi) DV的英文全称是Digital Video Format,数字摄像机就是使用这种格式记录视频数据的。它可以通过电脑的IEEE 1394端口传输视频数据
到电脑,也可以将电脑中编辑好的的视频数据回录到数码摄像机中。这种视频格式的文件扩展名也是AVI。电视台采用录像带记录模拟信号,通过EDIUS由IEE
E 1394端口采集卡从录像带中采集出来的视频就是这种格式。
QuickTime File Format(后缀为 .mov) 美国Apple公司开发的一种视频格式,默认的播放器是苹果的QuickT ime。具有较高的压缩比率和较完美的视频清晰度
等特点,并可以保存alpha通道。
MPEG(后缀可以是 .mpg .mpeg .mpe .dat .vob .asf .3gp .mp4等) 它的英文全称为Moving Picture Experts Group,即运动图像专家组格式,MPEG文件格
式是运动图像压缩算法的国际标准。MPEG格式目前有三个压缩标准,分别是MPEG-1、MPEG-2、和MPEG-4。MPEG-1、MPEG-2目前已经使用较
少,MPEG-4是为了播放流式媒体的高质量视频而专门设计的,以求使用最少的数据获得最佳的图像质量。目前MPEG-4最有吸引力的地方在于它能够保存
接近于DVD画质的小体积视频文件。
WMV(后缀为 .flv) 它的英文全称为Windows Media Video,也是微软推出的一种采用独立编码方式并且可以直接在网上实时观看视频节目的文件压缩格式。
WMV格式的主要优点包括:本地或网络回放,丰富的流间关系以及扩展性等。WMV格式需要在网站上播放,需要安装Windows Media Player(简称WMP),
很不方便,现在已经几乎没有网站采用了。
Real Video(后缀为 .rm .rmvb) 用户可以使用RealPlayer根据不同的网络传输速率制定出不同的压缩比率,从而实现在低速率的网络上进行影像数据实时传送
和播放。RMVB格式:这是一种由RM视频格式升级延伸出的新视频格式,当然性能上有很大的提升。RMVB视频也是有着较明显的优势,一部大小为700 MB
左右的DVD影片,如果将其转录成同样品质的RMVB格式,其个头最多也就400 MB左右。目前已被替代。
Flash Video(后缀为 .flv) 由Adobe Flash延伸出来的的一种流行网络视频封装格式。随着视频网站的丰富,这个格式已经非常普及。
Matroska(后缀为 .mkv) 是一种新的多媒体封装格式,这个封装格式可把多种不同编码的视频及16条或以上不同格式的音频和语言不同的字幕封装到一个Matr
oska Media档内。它也是其中一种开放源代码的多媒体封装格式。Matroska同时还可以提供非常好的交互功能,而且比MPEG的方便、强大。
MPEG2-T S(后缀为 .ts) MPEG2-T S格式(后缀为.ts)(Transport Stream「传输流」;又称MTS、T S)是一种传输和存储包含音效、视频与通信协议各种数
据的标准格式,用于数字电视广播系统,如DVB、ATSC、IPT V等。Media Player Classic、VLC多媒体播放器等软件可以直接播放MPEG-TS文件。
目前,我们在流媒体传输,尤其是直播中主要采用的就是FLV和MPEG2-TS格式,分别用于RTMP/HT TP-FLV和HLS协议。
处理
视频
美颜:美颜的主要原理是通过「磨皮+美白」来达到整体美颜的效果。磨皮的技术术语是「去噪」,也即对图像中的噪点进行去除或者模糊化处理,常见的去
噪算法有均值模糊、高斯模糊和中值滤波等。当然,由于脸部的每个部位不尽相同,脸上的雀斑可能呈现出眼睛黑点的样子,对整张图像进行「去噪」处理的
时候不需要将眼睛也去掉,因此这个环节中也涉及到人脸和皮肤检测技术。
水印:播放器水印,视频内嵌水印。一般用于版权保护,广告设置等。通常使用视频内嵌水印。
滤镜:通过调用GPUImage等库来使用,这是一个开源的基于GPU的图片或视频的处理框架,内置了多达120多种常见的滤镜效果。有了它,添加实时的滤镜
只需要简单地添加几行代码,还可以基于这个库自己写算法实现更丰富端效果。
连麦
流程
主播跟部分观众进行互动,将互动结果实时播放给观众看。在主播端和连麦观众端进行双向推流和双向播流的方式互动,然后在服务端将两路推流合成一路推
送给其他观众。
技术难点
低延迟互动:保证实时互动,必须保证两者能在秒级以内听到对方的声音以及视频。
音画同步:互动直播中对音画同步的需求和单向直播中类似,只不过互动直播中延迟要求更高,碧玺保证在音频秒级传输情况下的秒级同步。
音视频实时合成:观众需要实时观看对话结果,因此需要在客户端或者服务端将画面和声音实时合成,然后以低成本高品质的方式传输观众端。
现状:目前视频和电话领域,比较成熟的是思科或者webex方案,但这些商用方案不开源,比较封闭,成本也高。所以目前市场上比较成熟的是使用基于web
RTC的实时通讯方案
音频
混音
降噪
声音特效
采集
音频
采集过程:主要通过设备将环境中的模拟信号采集成PCM编码的原始数据
技术参数
采样率(samplerate):采样就是把模拟信号数字化的过程,采样频率越高,记录这段音频信号所用的数据量就越大,同时音频质量就越高
位宽:每个采样点都要用一个数值来表示大小,这个数值的数据类型是大小可以是:4、8、16、32bit等,位数越大表示的越精细,声音质量越好,但数据量
也会成倍增大,通常使用位宽是8或16bit。
声道数(channels):音频的采集和播放是可以叠加的,可以同时从多个音频源采集声音并分别输出到不同的扬声器,故声道数一般表示声音录制时的音源数
量或回放时相应的扬声器数量,通常声道参数为单声道(1)和双声道(2)
音频帧(frame):音频数据为流式,本身无帧概念,为了音频算法处理/传输的方便,一般约定俗成2.5ms-60ms为单位的数据量为一帧视频,这个时间被称
之为采样时间,其长度没有特别的标准,根据编解码器和具体应用需求来决定的
总结:计算一帧音频的大小,假设某音频信号时采样率为8KHZ、双通道、位宽为16bit,20ms一帧,则一帧音频数据大小为:size = 8000 * 2 * 16bit * 0.02s
= 5120 bit = 640 byte
压缩格式:MP3, AAC, OGG, WMA, Opus, FLAC, APE, m4a, AMR 等
面临挑战:音频采集和编码主要面临的挑战在于:延时敏感、卡顿敏感、噪声消除(Denoise)、回声消除(AEC)、静音检测(VAD)和各种混音算法等
采集源:麦克风采集,音频文件,系统声音。
图像
采集过程:图像采集后的结果组成一组连续播放的动画,即构成视频中可肉眼观看的内容。采集过程主要由摄像头等设备拍摄成YUV编码的原始数据,然后经
过编码压缩成H.264等格式的数据粉发出去
技术参数
图像传输格式:通用影像传输格式(Common Intermediate Format)是视讯会议(video conference)中常使用的影像传输格式。
图像格式:通常采用YUV格式存储原始数据信息,其中包含用8位表示的黑白图像灰度值,以及可由RGB三重色彩组合成的彩色图像。
传输通道:正常情况下视频的拍摄只需1路通道,随着VR和AR技术日渐成熟,为了拍摄一个完整地360度视频,可能需要通过不同角度拍摄,然后经过多通道
传输合成。
分辨率:单位长度所表达的像素数目,像素越大,分辨率越高。随着屏幕尺寸日渐增多,采集中原始分辨率越来越重要,后续处理环节中使用的所有视频分辨
率都以原始视频分辨率为基础,视频采集卡能支持的最大点阵反映了其分辨率的性能。
封装格式:常见有MP4, 3GP, AVI, MKV, WMV, MPG, VOB, FLV, SWF, MOV, RMVB, WebM等。
采集源
摄像头采:主播使用手机的前置和后置摄像头拍摄。在现场直播场景中,也有专业的摄影、摄像设备用来采集。安防监控场景中也有专业的摄像头进行监控采
集。
屏幕录制
从视频文件推流,比如在线电台或者电视节目,它们的输入可能直接来自于一些已经录制剪辑好的视频内容。
常用词解释
术语
流媒体
定义:是一种以流方式在网络中传送音频、视频和多媒体文件的媒体形式。
特征:把连续的音频和视频信息压缩后放到网络服务器上,用户边下载边观看,而不必等待整个文件下载完毕。
原理:支持采用流式传输及播放的媒体格式,将动画、音频、视频等多媒体文件经过特殊的压缩方式分成一个个压缩包,由视频服务器向用户计算机联系、实
时传输。
像素:通常所说的像素是CCD/CMOS上光电感应元件的数量,一个感光元件经过感光,光电信号转换,A/D转换等步骤以后,在输出的照片上就形成一个
点,如果把影像放大数倍,会发现这些连续色调其实是由许多色彩相近的小方点所组成,这些小方点就是构成影像的最小单位“像素”(Pixel)。
分辨率:指的是单位长度所表达或撷取的像素数目。像素和分辨率是成正比的,像素越大,分辨率也越高。
PPI(pixels per inch)是图像分辨率的单位,图像ppi值越高,画面的细节就越丰富,因为单位面积的像素数量更多,所以数码相机拍出来的图片因品牌或生产
时间不同可能有所不同,常见的有72ppi,180ppi和300ppi,默认出来就是这么多。
帧:是视频的基本组成单元,一帧就是一副静止的图片,有可能是压缩过的,也可能是没有压缩的。连续的帧就形成动画,如电视图象等。
帧率:也称为 FPS(Frames Per Second)的缩写:帧/秒。是指每秒钟传输的图片的帧数,也可以理解为图形处理器每秒钟能够刷新几次, 每一帧都是静止的
图象, 快速连续地显示帧便形成了运动的假象。要生成平滑连贯的动画效果,帧速率一般不小于8;电影的帧速率一般为 24fps。每秒钟帧数 (fps) 愈多,所
显示的动作就会越流畅、越逼真。
关键帧:也叫做I帧,它是帧间压缩编码里的重要帧,帧间编码就是MPEG那类,I帧的间隔调节会影响到GOP长度,进而影响到读取GOP的速度,如果I帧间隔
设置过大,在必须要用到I帧的场合就可能被迫用B/P帧来代替,那样就是降低画面质量。
I帧是帧间压缩的基础。假设一个GOP(IBP帧包)结构一般是:IBBPBBPBBPBBPBBPBB,B是前后参考帧,即参考前面和后面两帧的数据加上本帧的变化而
得出本帧的数据,P是向前参考帧,解释参考B帧,假设I帧损坏,那么整个GOP结构就坏掉了,即IBBPBBPBBPBBPBBPBB这么多帧一起坏掉,设置过长的间
隔也会导致编码出来的东西不稳定。
码率:就是数据传输时单位时间传送的数据位数,一般我们用的单位是kbps,即千位每秒,它是视频编码中画面质量控制中最重要的部分。同样分辨率下,视
频文件的码率越大,压缩比就越小,画面质量就越高。并发流受码率影响的限制,码率越大并发流越小。带宽单位和码率单位相同,都是指单位时间传送的数
据位数,所以码率可以直接等于单位时间消耗的带宽。
缩略词
GOP(Group of Pictures):画面组,既关键帧间隔,是指两个关键帧之间的时间间隔。
CBR(Constant Bitrate):指文件从头到尾都是一种码率,这是以固定文件大小为前提的压缩方式。
VBR(Variable Bitrate):指没有固定的码率,压缩时根据视音频数据即时确定使用什么码率,这是以质量为前提兼顾文件大小的压缩方式。用比较多的码字
对复杂度高的段进行编码,用比较少的码字对复杂度低的段进行编码。
ABR(Average Bitrate):通常是指数字音乐或者视频的平均码率。例如如果说一个MP3文件的平均码率是128kbps,就是说,平均每秒有128,000bit被传
输/解码。
OBS(Open Broadcaster Software):一款开源的免费推流工具,目前使用最为广泛的第三方推流工具。
HLS(HTT P Live Streaming):apple的动态码率自适应技术。主要用于PC和Apple终端的音视频服务。包括一个m3u(8)的索引文件,TS媒体分片文件和ke
y加密串文件。
HDL(Http Download Live Streaming):使用 HTT P 下载技术实现直播服务的技术方案。
流程
直播技术详解
评论0