多媒体基础 - 新生培训

基本概念

 

什么是文件格式

文件格式主要用于存储,一个文件内可能含有视频、音频、字幕、追踪信息等多种内容,流行的文件格式,较著名的有WAV、MP3、RM、MPG、WMV、WMA、AVI、MOV、MP4、3GP、FLV、MKV、AC3、AMR、OGG、AAC、APE等等。

 

什么是编码格式

编码格式即针对视频、音频或其他数据的压缩格式,如视频压缩技术有RV、VC-1、MPEG2、H.263、H.264、H.265、VP8、VP9,音频压缩技术包含MP3、RA、AMR、AAC、Vorbis、AC3、APE等等,多种编码格式的内容可以被打包在同一个文件内。

 

标准组织

打包格式、编码格式、传输协议和加密方式等都有标准化的空间,也存在大量的标准化组织,多媒体相关的重要标准化组织包括ISO/IEC+MPEG、ITU/T+VCEG、IETF、RFC和DASH-IF等。

 

Frame

或翻译为帧,众所周知,视频的原理是由一系列静止的图像快速播放,一帧即是指其中的一幅图像,对音频而言,一个音频帧意味着一段固定时间内包含的多个采样及相关数据。

 

Raw Data

即原始数据或Primary Data(主要数据),指从源收集的或未经处理的数据,在多媒体领域,通常指未经压缩的音频或视频数据,比如PCM格式的音频帧或YUV/RGB格式的视频帧(图片)。

 

像素

是图像显示的基本单位,英文为Pixel,将一个像素由多少bit表示,通常说明了图像的表现力,比如常见的8Bit、16Bit、24Bit、32Bit、48Bit等,电脑常用的“真彩色”即是24Bit显示,“全彩色”则通常指代32Bit每像素。此外,由于显示机理的不同,还存在子像素的概念,譬如每个子像素只对应一个色彩通道。除了像素数目,还可以有其他定义帮助定义分辨率,如像素密度,我们经常看到某某手机宣传其分辨率达到500DPI,含义是每平方英寸有500™500个像素。

 

帧率

即每秒钟显示的图像数量,帧率越高则在视频运动较剧烈的场景下人眼将感觉较为舒适。NTSC

(美国的彩色广播电视标准)制式规定帧率为30fps,PAL(欧洲和中国采用的电视标准)制式则规定帧率为25fps,传统的电影工业常使用24fps作为电影帧率,实践中还常常可见23.98(24000/1001)fps和29.97(30000/1001)fps,系由一些早期的技术限制和格式转换需求导致。

 

RGBYUV

RGB和YUV是图像常见的两类数字化表达。RGB是基于三原色原理,对红(Red)、绿(Green)、蓝(Blue)三个颜色通道叠加得到各式各样的颜色。RGB24意味着用24个Bit表示一个像素,RGB三个分量各用8个Bit表示,RGB32则在RGB24的基础上,对每个像素增加8Bit用来表示Alpha通道值(即灰度或称透明度)。YUV则是另外一种编码方式,其中Y表示明亮度,U表示色度,V表示浓度。常见的YUV格式有多种不同的采样方法和存储格式,如4:4:4、4:2:2、4:2:0、4:1:1,以及YV12、NV12等等。

 

采样率

也叫采样速度,定义的是每秒从连续信号(模拟信号)中提取并组成离散信号的采样个数,单位是赫兹(Hz),一些常用的采样频率包括:8kHz,电话的采样频率;22.05kHz,无线广播使用;44.1kHz,CD,VCD的常用频率;48kHz,DVD,数字电视的默认频率;96kHz,蓝光音轨的采样率。通常情况下,采样率较高说明音质可以得到较好的还原,根据采样定理,如果采样频率高于信号中最高频率的两倍,则连续信号可以无失真地从采样样本中完全重建。

 

采样位数

指的是在每次采样时,转换后的信号所被记录的位数,如单声道文件,常用8比特的短整数记录,而双声道立体声,每次采样数据为16位整数,高8位为左声道,低8位为右声道。

 

声道

有单声道和双声道(立体声,英文为Stereo)之分,较特别的如杜比环绕立体声(见后AC3部分)则有6个甚至8个声道,立体声因为音箱分处不同位置,可以一定程度还原声音原有的空间感和层次感。

 

编解码

为什么要编码

音视频编码技术是视频行业存在的前提,视频信号数字化后占用大量的存储空间和数据带宽,高清视频可以达到约120MB/s,以此推算120分钟的电影将占到800GB以上,无论从存储还是传输角度都是一个难以接受的数字,而通常可以下载的高清电影视频,也不过是2~5GB大小,其中依靠的就是音视频编码技术。

 

编码技术

音视频压缩通常包含编码器和解码器,前者将原始数据压缩成较小的格式,后者负责将压缩后的格式转换为原始数据。

编码器通常为混合架构,视频的压缩方法主要包括几个主要努力方向,包括去除空间上的冗余信息,去除时间上的冗余信息,去除统计上以及感知上的冗余信息等。视频由一系列连续的图像组成,在某一幅图像之中就存有大量的冗余,譬如某一个像素点与周围的许多像素就存在相似或连续的关系,在连续的一系列图像中也存在相关性。几乎所有的现代视频编码器都结合了空间域和时间域上的压缩,作出折衷的设计。

 

GOP

即Group of Pictures,代表了一组连续的图像帧,通常而言GOP中的第1帧编码为I帧,此外还有P帧和B帧的概念。I帧表示关键帧(Key Frame),其解码时不需要引用来自其他帧的信息即可完成(与图片编解码较为相像),P帧表示前向参考帧(Predictive Frame),B帧通常又叫做双向参考帧(Bi-directional Interpolated Prediction Frame)。P帧体现了当前帧与前面参考帧的区别,需要依赖前面的I帧或P帧才可以解码,B帧记录了当前帧与前后帧的不同,需要依赖其前后两个方向的I帧或P帧才可以完成解码。可以想见,解码时依赖其他帧的信息越多,说明当前帧的冗余越少,压缩率越高,一个简单的估算可以认为I帧、P帧、B帧的大小比例可达到9:3:1。

GOP的概念对Streaming有许多影响,例如多码率时不同码率的GOP应保持对齐,每个视频切片应该从关键帧开始等等。

 

编码器市场

编码器可分为标准组织或公司开发持有的编码器,又可分为需要收专利费和免费的编码器,每一代编码器发展成熟的时间从三到十年不等,一般需要有30%以上的效率提升才有较强的动力更换,另一方面编码器的流行与否很大程度上由播放设备是否提供硬件解码器决定。

 

PSNRSSIM

PSNR(Peak Signal to Noise Ratio,峰值信噪比)表示了信号的最大可能功率和影响它精度的噪声功率的比值,其通常单位为对数分贝。上式针对的是单色的图像,对于每个像素有RGB三色分量的情况,对于8Bit的图像和视频压缩,典型的PSNR值在30~50dB,越接近50dB则认为损失越小,图像和视频越可保留原有信息。

SSIM的设计思路更着重于比较处理前后两帧图像结构上的相似度,从图像组成的角度将结构信息定义为独立属性,失真度由亮度、对比度和结构三个维度估计,其中以均值作亮度估计,以标准差作对比度估计,以协方差作结构相似度的估计,取值范围从-1到1。PSNR和SSIM可以通过FFMpeg在处理视频的同时进行计算,并在OpenCV框架中有对应的实现,EvalVid也是一个常用的开源视频质量评价工具。

 

视频编码器优化方向

一是编码质量,一是编码效率(速度),在点播场景中通常重要的是编码质量,直播场景将兼顾编码效率,常见的优化方向包括选择不同的编码,。

 

AAC编码

AAC的编码器同样借助了预测量化以及熵编码等技术。在MPEG-4中,AAC支持了AAC+也即HE-AAC,HE-AAC混合了AAC与SBR、PS技术(加入PS则被称作HE-AACv2)。SBR是Spectral Band Replication的缩写,因为音乐的能量主要集中在低频部分,高频段虽然重要但幅度很小,SBR针对频谱切分成不同频段,对低频保留主要成分,对高频部分放大编码以保证音质,整体上提高了效率。PS指Parametric Stereo,对两个声道的声音去掉相关性,仅保留其中一个声道的全部信息,对另一声道仅描述声道之间的差值。

 

不同于视频编码器领域的激烈竞争,AAC编码器所生成的基本格式称作EP,在存储和网络传输中为便于使用,又基于EP对音频负载规定了不同层次,不同用途的封装格式,譬如LATM、ADIF、ADTS、LOAS等。

ADIF,特征是仅有一个统一的头标记了解码器所需的参数信息,解码必须从明确定义的位置开始,多用于文件存储。ADTS则是一个有同步字的流,解码可以从流的任何位置开始,因为每一帧上都有固定字符长度的ADTS头,包含了解码信息。LATM/LOAS则是MPEG-4加入进来的另一种封装格式,较ADTS效率更高,由AudioSpecificConfig与负载组成,其中AudioSepcificConfig可以带内或带外传递。LATM中包含的负载可以容易地映射到RTP包的负载上传输,而LATM封装的帧再加入同步层即为LOAS封装,ADTS和LATM/LOAS格式之间也可以简单地相互转换。

 

分发

传统流媒体传输协议有哪些

MPEG2-TS、RTSP+RTP+RTCP、RTMP

 

MPEG2-TS

MPEG2-TS又称Transport Stream或TS,是ISO/IEC标准13818-1或ITU-T Rec. H.222.0中规定的标准的音视频传输协议,因传输的Packet可不经转换地存到文件中,又可被视为文件格式。TS流可视为由一系列188字节的包组成(可能在不同环境中定义不同长度),包头固定为4字节,以0x47作为同步码起始,其中的关键信息是PID。

 

TS码流的基础是ES流即Elementary Stream,包含视频、音频或数据的连续码流,在此基础上,拆分成不同大小的数据包并加上包头,就形成了PES流,TS流由对一个或多个PES码流进行再封装得到,也即TS流内可以包含多个PES流,一个音频PES包需要小于等于64KB,视频PES包即是视频的一帧,由于TS包的负载大小仅为184字节,一个PES包需要被分成多个TS包进行传输,如有空余负载则以固定值填充。

 

RTSP+RTP+RTCP

RTSP(Real Time Streaming Protocol)是早期常用的流媒体协议,它用来建立客户端与服务器之间的会话,客户端发布播放暂停等命令,通常与RTP和RTCP协议共同使用,其中RTSP是服务端与客户端间的双向协议,与HTTP1.1类似,譬如404代表错误码“Not Found”,200代表“OK”。

RTSP支持的命令包括:

    DESCRIBE

    ANNOUNCE

    GET_PARAMETER

    OPTIONS

    PAUSE

    PLAY

    RECORD

    SETUP

    SET_PARAMETER

    TEARDOWN

RTP初始被设计来单独使用传输音视频数据,后常与RTSP、H.323、SIP、WebRTC等协议配合使用。RTP协议将不同编码和封装格式的音视频数据进行再封装,加上RTP头形成RTP包,再行发送,RTP包头内的重要信息包括序列号、时间戳、负载格式等,提供抖动补偿和数据无序到达的检测机制,对实时多媒体传输,及时送达是首要目标,为此可以忍受部分丢包。

RTCP是质量控制协议,通过向服务端发送客户端信息帮助调整发送速度,整个RTSP协议体系较为复杂,在一个播放会话中需要占用五个端口是其主要缺点。RTSP协议也可以配合TS或TS over RTP的方式使用。

 

RTMP

RTMP是Adobe公司的专有协议,属于Flash的一部分,该协议虽然应用广泛,但都基于Adobe公开而不完整的规范,在其上尚有许多私有定义,除非通过逆向工程进行解析,否则无法兼容使用。RTMP并非一个单独协议,而是由多个相关协议组成的协议族:

  1. RTMP,默认使用TCP端口1935的明文协议
  2. RTMPS,即通过TLS/SSL连接传输的RTMP
  3. RTMPE,使用Adobe私有安全机制加密的RTMP
  4. RTMPT,使用HTTP封装的RTMP、RTMPS或RTMPE,利于穿透防火墙
  5. RTMPFP,使用UDP的RTMP,允许用户进行P2P连接

RTMP是基于TCP的可靠传输层协议,会将由该协议传送的音视频及其他数据封装为RTMP Message,而在实际传输时会进一步将Message划分为带有Message ID的Chunk,每个Chunk可以携带一个Message但更多情况下一个Message将由多个Chunk承载,直到客户端接收后将其还原。

 

264265的封包方式

H.264在网络传输时通常封装为NAL格式作为网络协议或文件格式中的负载部分,NAL的定义中,每一个包称作NAL Unit,包含NALU Header和RBSP(Raw Byte Sequence Paylaod)。NALU的Type取值为0到31,定义了该包是用来传输数据还是编码数据。一种常用对H.264的打包方式是将其NALU封装到RTP包内,对SPS、PPS等内容可将多个NALU包组合成一个RTP包,对相同时间戳的NALU包也可放于一个RTP包内,又或者一个NALU包可以对应一个RTP包,也可以拆成多个RTP包进行传输。

 

基于HTTP的流媒体协议有哪些

HLS(from Apple)、HDS(from Adobe)、Smooth Streaming(from Microsoft)、DASH(from MPEG)

 

HLS

HLS协议在苹果的手机、平板、Safari浏览器上是首选的流媒体协议,协议的原理是将点播所需的多媒体文件或直播的视频流,切分成许多小块的文件,让客户端基于HTTP进行下载,当播放时,客户端需下载包含metadata信息的M3U8文件(也称作索引文件、Playlist或Manifest文件),根M3U8文件的内容,可依据网络条件选择不同码率的内容进行播放。

M3U8文件是文本文件,后缀名常为.m3u或.m3u8,对音视频文件,仅支持MPEG2-TS格式的Segment和Fragmented MP4(可简称fMP4),支持以ADTS头封装的AAC帧、MP3、AC3和EAC3格式,只支持WebVTT格式字幕。

 

DASH

MPEG-DASH是基于HTTP的自适应码率流媒体技术其标准文档为ISO/IEC 23009-1,发布自2012年4月,与HLS设计理念相近,将音视频文件或直播流分割成一系列可下载播放的文件切片,使用MPD文件为客户端描述切片信息。MPD内有时间戳信息、编码、分辨率、码率等信息,在客户端对MPD文件解析后,再行下载所需的文件切片,交由播放器组装并播放。

 

流媒体服务器

基于HTTP协议的流媒体分发可以通过通用的HTTP服务器如Nginx,甚至RTMP等协议也可通过对应插件实现

 

QOS

QOS即服务质量,流媒体分发的主要指标包括播放成功率、错误率、Re-buffer次数和时间、起始时间、快进响应时间、视频码率、延迟等等。

 

CDN

CDN又称内容分发网络,是利用多个分别部署的数据中心、机房、服务器,选取最靠近或服务质量最佳的服务器为每位用户提供服务。

 

框架和播放

DAG

DAG,即Directed Acyclic Graph(有向无环图),如果一个有向图从任意节点出发无法回到该点,就可以称作有向无环图。因为所有节点是否可达的判断构成了局部的顺序关系,经常用来表示任务的依赖关系,在多媒体领域里也常常用作Pipeline的结构表示,下图是播放软件组成的DAG:

 

FFMPEG

FFMpeg是一个开源项目,项目主要使用C语言,拥有几乎全部常用的图像、视频、音频编解码和文件解析、封装库,流媒体协议支持,除链接库的使用方式外,还提供ffprobe、ffplay、ffmpeg、ffserver等编译好的工具供执行。

 

H5播放

现代浏览器如Chrome、Edge、Firefox、Safari等均对W3C标准定义的MSE(Media Source Extension)和EME(Encrypted Media Extensions)进行支持,即可支持MPEG-DASH协议,运用Javascript开发的网页播放器只需下载MPD文件并解析,再将音视频文件送给浏览器,就能很容易地播放。

 

浏览器以外,Android、Chrome、Roku等多种平台上均有对MPEG-DASH的支持。在不支持DASH的平台上,亦可通过移植浏览器(Chromium)的方式加入视频播放功能。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值