当前位置:首页  音频新闻  音响技术  音视频音频正文

直播技术理论基础与实践概论

发布时间:04-08 编辑:音频应用

音视频直播的基本流程都是采集 → 编码推流 → 网络分发 → 解码 → 播放这五大环节,其中又会涉及平台硬件、编解码、网络传输、服务并发、数字信号处理、在线学习等多方面技术。从交互模式上,又可以泛分为单对单模式与会议模式两大类;从实时性要求上,直播又可以分为伪实时、准实时与真实时三个等级:

Live CheatSheet | 直播技术理论基础与实践概论

音视频直播的基本流程都是采集 → 编码推流 → 网络分发 → 解码 → 播放这五大环节,其中又会涉及平台硬件、编解码、网络传输、服务并发、数字信号处理、在线学习等多方面技术。从交互模式上,又可以泛分为单对单模式与会议模式两大类;从实时性要求上,直播又可以分为伪实时、准实时与真实时三个等级:

伪实时:视频消费延迟超过 3 秒,单向观看实时,通用架构是 CDN + RTMP + HLS,譬如很多的直播平台

准实时: 视频消费延迟 1 ~ 3 秒,能进行双方互动但互动有障碍;可以通过 TCP/UDP + FLV 已经实现了这类技术,譬如 YY 直播等

真实时:视频消费延迟 < 1 秒,平均 500 毫秒,譬如 QQ、微信、Skype 和 WebRTC 等

编解码

视频封装格式就是我们通常所说的 .mp4,.flv,.ogv,.webm 等,它其实就是一个盒子,用来将实际的视频流以一定的顺序放入,确保播放的有序和完整性。视频压缩格式(视频编码)就是指能够对数字视频进行压缩或者解压缩(视频解码)的程序或者设备。通常这种压缩属于有损数据压缩。

视频压缩格式和视频格式具体的区别就是,它是将原始的视频码流变为可用的数字编码。首先,由原始数码设备提供相关的数字信号流,然后经由视频压缩算法,大幅度的减少流的大小,然后交给视频盒子,打上相应的 dts,pts 字段,最终生成可用的视频文件。视频编码也可以指通过过特定的压缩技术,将某个视频格式转换成另一种视频格式。


视频封装格式

常见的视频封装格式(简称:视频格式)包括了 AVI,MPEG,VOB 等,即相当于一种储存视频信息的容器,由相应的公司开发出来的。


AVI

AVI 格式(后缀为.AVI):它的英文全称为 Audio Video Interleaved,即音频视频交错格式。它于 1992 年被 Microsoft 公司推出。

这种视频格式的优点是图像质量好。由于无损 AVI 可以保存 alpha 通道,经常被我们使用。缺点太多,体积过于庞大,而且更加糟糕的是压缩标准不统一,最普遍的现象就是高版本 Windows 媒体播放器播放不了采用早期编码编辑的 AVI 格式视频,而低版本 Windows 媒体播放器又播放不了采用最新编码编辑的 AVI 格式视频,所以我们在进行一些 AVI 格式的视频播放时常会出现由于视频编码问题而造成的视频不能播放或即使能够播放,但存在不能调节播放进度和播放时只有声音没有图像等一些莫名其妙的问题。

DV-AVI

DV-AVI 格式(后缀为.AVI):DV 的英文全称是 Digital Video Format,是由索尼、松下、JVC 等多家厂商联合提出的一种家用数字视频格式。

数字摄像机就是使用这种格式记录视频数据的。它可以通过电脑的 IEEE 1394 端口传输视频数据到电脑,也可以将电脑中编辑好的的视频数据回录到数码摄像机中。这种视频格式的文件扩展名也是 avi。电视台采用录像带记录模拟信号,通过 EDIUS 由 IEEE 1394 端口采集卡从录像带中采集出来的视频就是这种格式。

MOV

QuickTime File Format 格式(后缀为.MOV):美国 Apple 公司开发的一种视频格式,默认的播放器是苹果的 QuickTime。

具有较高的压缩比率和较完美的视频清晰度等特点,并可以保存 alpha 通道。大家可能注意到了,每次安装 EDIUS,我们都要安装苹果公司推出的 QuickTime。安装其目的就是为了支持 JPG 格式图像和 MOV 视频格式导入。

MPEG

MPEG 格式(文件后缀可以是 .MPG .MPEG .MPE .DAT .VOB .ASF .3GP .MP4 等):它的英文全称为 Moving Picture Experts Group,即运动图像专家组格式,该专家组建于 1988 年,专门负责为 CD 建立视频和音频标准,而成员都是为视频、音频及系统领域的技术专家。

MPEG 文件格式是运动图像压缩算法的国际标准。MPEG 格式目前有三个压缩标准,分别是 MPEG-1、MPEG-2、和 MPEG-4。MPEG-1、MPEG-2 目前已经使用较少,着重介绍 MPEG-4,其制定于 1998 年,MPEG-4 是为了播放流式媒体的高质量视频而专门设计的,以求使用最少的数据获得最佳的图像质量。目前 MPEG-4 最有吸引力的地方在于它能够保存接近于 DVD 画质的小体积视频文件。你可能一定注意到了,怎么没有 MPEG-3 编码,因为这个项目原本目标是为高分辨率电视(HDTV)设计,随后发现 MPEG-2 已足够 HDTV 应用,故 MPEG-3 的研发便中止。

WMV

WMV 格式(后缀为.WMV .ASF):它的英文全称为 Windows Media Video,也是微软推出的一种采用独立编码方式并且可以直接在网上实时观看视频节目的文件压缩格式。

WMV 格式的主要优点包括:本地或网络回放,丰富的流间关系以及扩展性等。WMV 格式需要在网站上播放,需要安装 Windows Media Player(简称 WMP),很不方便,现在已经几乎没有网站采用了。

Real Video

Real Video 格式(后缀为.RM .RMVB):Real Networks 公司所制定的音频视频压缩规范称为 Real Media。

用户可以使用 RealPlayer 根据不同的网络传输速率制定出不同的压缩比率,从而实现在低速率的网络上进行影像数据实时传送和播放。RMVB 格式:这是一种由 RM 视频格式升级延伸出的新视频格式,当然性能上有很大的提升。RMVB 视频也是有着较明显的优势,一部大小为 700MB 左右的 DVD 影片,如果将其转录成同样品质的 RMVB 格式,其个头最多也就 400MB 左右。大家可能注意到了,以前在网络上下载电影和视频的时候,经常接触到 RMVB 格式,但是随着时代的发展这种格式被越来越多的更优秀的格式替代,著名的人人影视字幕组在 2013 年已经宣布不再压制 RMVB 格式视频。

FLV

Flash Video 格式(后缀为.FLV):由 Adobe Flash 延伸出来的的一种流行网络视频封装格式。随着视频网站的丰富,这个格式已经非常普及。

MKV

Matroska 格式(后缀为.MKV):是一种新的多媒体封装格式,这个封装格式可把多种不同编码的视频及 16 条或以上不同格式的音频和语言不同的字幕封装到一个 Matroska Media 档内。它也是其中一种开放源代码的多媒体封装格式。Matroska 同时还可以提供非常好的交互功能,而且比 MPEG 的方便、强大。

视频编解码

视频实际上就是一帧一帧的图片,拼接起来进行播放;标准的图像格式使用 RGB 三字节描述像素颜色值,会占用较大的存储空间与带宽。视频编解码器会根据前后图像的变化做运动检测,通过各种压缩把变化的结果发送到对方。

实时视频编码器需要考虑两个因素:编码计算量和码率带宽,实时视频会运行在移动端上,需要保证实时性就需要编码足够快,码率尽量小。基于这个原因现阶段一般认为 H.264 是最佳的实时视频编码器,而且各个移动平台也支持它的硬编码技术;譬如 1080P 进行过 H.264 编码后带宽也就在 200KB/S ~ 300KB/S 左右。

编码基础

总的来说,常用的编码方式分为三种:

变换编码:消除图像的帧内冗余。涉及到图像学里面的两个概念:空域和频域。空域就是我们物理的图片,频域就是将物理图片根据其颜色值等映射为数字大小。而变换编码的目的是利用频域实现去相关和能量集中。常用的正交变换有离散傅里叶变换,离散余弦变换等等。

运动估计和运动补偿:消除帧间冗余。视频压缩还存在时间上的关联性。例如,针对一些视频变化,背景图不变而只是图片中部分物体的移动,针对这种方式,可以只对相邻视频帧中变化的部分进行编码。

熵编码:提高压缩效率,熵编码主要是针对码节长度优化实现的。原理是针对信源中出现概率大的符号赋予短码,对于概率小的符号赋予长码,然后总的来说实现平均码长的最小值。编码方式(可变字长编码)有:霍夫曼编码、算术编码、游程编码等。

I,B,P 实际上是从运动补偿中引出来的,这里为了后面的方便先介绍一下。

I 帧(I-frame): 学名叫做: Intra-coded picture。也可以叫做独立帧。该帧是编码器随机挑选的参考图像,换句话说,一个 I 帧本身就是一个静态图像。它是作为 B,P 帧的参考点。对于它的压缩,只能使用 和 变化编码 这两种方式进行帧内压缩。所以,它的运动学补偿基本没有。

P 帧(P‑frame): 又叫做 Predicted picture--前向预测帧。即,他会根据前面一张图像,来进行图片间的动态压缩,它的压缩率和 I 帧比起来要高一些。

B 帧(B‑frame): 又叫做 Bi-predictive picture-- 双向预测。它比 P 帧来说,还多了后一张图像的预测,所以它的压缩率更高。


考虑到不同帧传输的无序性,我们还需要引入 PTS 与 DTS 来进行控制,使用 DTS 来解码,PTS 来进行播放。

PTS(presentation time stamps): 显示时间戳,显示器从接受到解码到显示的时间。

DTS(decoder timestamps): 解码时间戳。也表示该 sample 在整个流中的顺序

H.26X

H.26X 系列由 ITU 国际电传视讯联盟主导包括, H.261、H.262、H.263、H.264、H.265 等:

H.261:主要在老的视频会议和视频电话产品中使用。

H.263:主要用在视频会议、视频电话和网络视频上。

H.264:H.264/MPEG-4 第十部分,或称 AVC(Advanced Video Coding,高级视频编码),是一种视频压缩标准,一种被广泛使用的高精度视频的录制、压缩和发布格式。

H.265:高效率视频编码(High Efficiency Video Coding,简称 HEVC)是一种视频压缩标准,H.264/MPEG-4 AVC 的继任者。HEVC 被认为不仅提升图像质量,同时也能达到 H.264/MPEG-4 AVC 两倍之压缩率(等同于同样画面质量下比特率减少了 50%),可支持 4K 分辨率甚至到超高画质电视,最高分辨率可达到 8192×4320(8K 分辨率),这是目前发展的趋势。直至 2013 年,Potplayer 添加了对于 H.265 视频的解码,尚未有大众化编码软件出现。

H.264 是由 ITU 和 MPEG 两个组织共同提出的标准,整个编码器包括帧内预测编码、帧间预测编码、运动估计、熵编码等过程,支持分层编码技术(SVC)。单帧 720P 分辨率一般 PC 上的平均编码延迟 10 毫秒左右,码率范围 1200 ~ 2400kpbs,同等视频质量压缩率是 MPEG4 的 2 倍,H.264 也提供 VBR、ABR、CBR、CQ 等多种编码模式,各个移动平台兼容性好。

H.264 为了防止丢包和减小带宽还引入一种双向预测编码的 B 帧,B 帧以前面的 I 或 P 帧和后面的 P 帧为参考帧。H.264 为了防止中间 P 帧丢失视频图像会一直错误它引入分组序列(GOP)编码,也就是隔一段时间发一个全量 I 帧,上一个 I 帧与下一个 I 帧之间为一个分组 GOP。


在实时视频当中最好不要加入 B 帧,因为 B 帧是双向预测,需要根据后面的视频帧来编码,这会增大编解码延迟。

MPGA 系列

MPEG 系列由 ISO 国际标准组织机构下属的 MPEG 运动图象专家组开发视频编码方面主要有:

MPEG-1 第二部分(MPEG-1 第二部分主要使用在 VCD 上,有些在线视频也使用这种格式。该编解码器的质量大致上和原有的 VHS 录像带相当。)

MPEG-2 第二部分(MPEG-2 第二部分等同于 H.262,使用在 DVD、SVCD 和大多数数字视频广播系统和有线分布系统(cable distribution systems)中。)

MPEG-4 第二部分(MPEG-4 第二部分标准可以使用在网络传输、广播和媒体存储上。比起 MPEG-2 和第一版的 H.263,它的压缩性能有所提高。)

MPEG-4 第十部分(MPEG-4 第十部分技术上和 ITU-T H.264 是相同的标准,有时候也被叫做“AVC”)最后这两个编码组织合作,诞生了 H.264/AVC 标准。ITU-T 给这个标准命名为 H.264,而 ISO/IEC 称它为 MPEG-4 高级视频编码(Advanced Video Coding,AVC)。

音频编码器

实时音视频除了视频编码器以外还需要音频编码器,音频编码器只需要考虑编码延迟和丢包容忍度,所以一般的 MP3、AAC、OGG 都不太适合作为实时音频编码器。从现在市场上来使用来看,Skype 研发的 Opus 已经成为实时音频主流的编码器。Opus 优点众多,编码计算量小、编码延迟 20ms、窄带编码-silk、宽带编码器 CELT、自带网络自适应编码等。

同视频编码类似,将原始的音频流按照一定的标准进行编码,上传,解码,同时在播放器里播放,当然音频也有许多编码标准,例如 PCM 编码,WMA 编码,AAC 编码等等。

直播协议

常用的直播协议包括了 HLS, RTMP 与 HTTP-FLV 这三种,其对比如下:

协议优势缺陷延迟性
HLS支持性广延时巨高10s 以上
RTMP延时性好,灵活量大的话,负载较高1s 以上
HTTP-FLV延时性好,游戏直播常用只能在手机 APP 播放2s 以上

HLS

HLS, HTTP Live Streaming 是 Apple 提出的直播流协议,其将整个流分成一个个小的块,并基于 HTTP 的文件来下载;HLS 由两部分构成,一个是 .m3u8 文件,一个是 .ts 视频文件;每一个 .m3u8 文件,分别对应若干个 ts 文件,这些 ts 文件才是真正存放视频的数据,m3u8 文件只是存放了一些 ts 文件的配置信息和相关路径,当视频播放时,.m3u8 是动态改变的,video 标签会解析这个文件,并找到对应的 ts 文件来播放,所以一般为了加快速度,.m3u8 放在 web 服务器上,ts 文件放在 CDN 上。 HLS 协议视频支持 H.264 格式的编码,支持的音频编码方式是 AAC 编码。


声明:该文观点仅代表作者本人,音频应用信息发布平台,官网仅提供信息存储空间服务。
最新音频交流