文章

01.音视频基础

01.音视频基础

音视频基础

基本概念

分辨率

什么是视频分辨率?

视频分辨率又可称为视频解析度、解像度,指的是视频图像在一个单位尺寸内的精密度。当我们把一个视频放大数倍时,就会发现许多小方点,这些点就是构成影像的单位——像素。

![image.png500](https://raw.githubusercontent.com/hacket/ObsidianOSS/master/obsidian/20240601094641.png)

视频的分辨率与像素密不可分,比如一个视频的分辨率为 1280*720,就代表了这个视频的水平方向有 1280 个像素,垂直方向有 720 个像素。

视频分辨率通常以两种方式表示:

  • 使用视频高度:如 1080p 或 720p
  • 或者使用视频宽乘高:如 1920×1080 或者 1280×720

目前主流的高清格式通常为:720p(1280×720)1080p(1920×1080)2K(2560x1440)4K(4096×2160)

![image.png500](https://raw.githubusercontent.com/hacket/ObsidianOSS/master/obsidian/20240601094512.png)

通常视频在同样大小的情况下,分辨率越高,所包含的像素就越多,视频画面就越细腻、越清晰。

4K/2K/1080P/720P 是什么?

![image.png500](https://raw.githubusercontent.com/hacket/ObsidianOSS/master/obsidian/20240601095437.png)

720 P 是指视频有 720 行像素 P 是 Progressive 逐行扫描; 2 K 是指视频像素的总列数 MP 是像素总数,指像素的行数 (P) 与列数 (K) 乘积的结果(百万像素) 1080 P 分辨率为 1920*1080,总像素 2073600,通常将 1080 P 叫做 200 万像素分辨率

科普:视频分辨率是什么?

4K

4K 也是我们常说的 4K 分辨率,是指水平方向每行像素达到或接近 4096 个,多数情况下特指 4096*2160 分辨率。

根据使用范围的不同,4K 分辨率也衍生出不同的分辨率,比如 Full Aperture 4K 的 4096*3112 分辨率、Academy 4K 的 3656*2664 分辨率,以及 UHDTV 标准的 3840*2160 分辨率,这些都属于 4K 分辨率。

4K 级别的分辨率属于超高清分辨率,提供了 800 万以上的像素,可看清视频中的每一个细节。当然了,追求 4K 也有一定的要求,4K 视频每一帧的数据量都达到了 50MB,因此无论是解码播放还是编辑,都需要非常高配置的设备。由于 4K 视频文件比较大,下载时也需要较长时间。

2K

2K 即是 2K 分辨率,指的是水平方向的像素达到 2000 以上的分辨率,主流的 2K 分辨率有 2560_1440 以及 2048_1080,不少的数字影院放映机主要采用的就是 2K 分辨率,像其他的 2048*15362560*1600 等分辨率也被视为 2K 分辨率的一种。

2K 的分辨率主要有哪些?

分辨率设备
2048*1080支持 2K 分辨率的标准设备
2048*1536iPad 第三代、mini2
2560*1440WQHD
2560*1600WQXGA
1080P

1080P 指的是 1920*1080 分辨率,也称为 “ 全高清 “,表示视频的水平方向有 1920 个像素,垂直方向有 1080 个像素。对于大多数的视频显示设备来说,1080P 能提供更多的像素,让视频在设备上看起来更清晰。 现在大多数的高清电视或都以 1080P 的分辨率为标准,具有 1080P 的原始分辨率。比如高清液晶电视、等离子高清电视以及 D-LLASXRDDLP 等前投影技术。

720P

720P 指的是 1280*720 分辨率,又称 “ 高清 “,表示的是视频的水平方向有 1280 个像素,垂直方向有 720 个像素,在视频网站上用得比较多的就是这种分辨率。720P 是高清的最低标准,因此也被称为标准高清。只有达到了 720P 的分辨率,才能叫高清视频。

码率

什么是码率?

码率(比特率,bit per second / bps / bit rate):码率是指视频文件在单位时间内使用的数据流量,也叫码流率。

比如,如果你将视频压缩软件的码率设置为 3 mbps,软件就会将视频压缩为每秒 3 mb 的数据(平均)传输给解码器或播放器。

讨论码率时,实际在讨论:视频压缩的比率与视频质量损失的平衡,压缩得越多,视频质量越低。

压缩视频时,以下几种算法可以用于码率控制,它们是:

  • CBR(恒定码率,Constant Bitrate):宁愿视频质量有损失也要优先保持码率恒定。
  • VBR(可变码率,Variable Bitrate):保持恒定的视频质量, 允许码率波动。
  • Capped VBR(受限的 VBR):尽可能保持恒定的视频质量, 允许码率在设定的范围内波动。

注意:

  1. 高码率视频的质量通常高于低码率的视频(因为视频质量达到某一个点将不在提升,无论如何增加码率)
  2. 码率是指比特 (bit) 而非字节 (byte)
  3. 仅码率并不能决定视频质量,还得考虑分辨率、帧率、显示尺寸等因素
  4. 用于视频压缩的编解码器:H.264/AVCHEVCVP9AV1;如果更改视频编解码器及其设置,那么相同的码率的视频质量将截然不同

码率单位

单位时间内传输的数据量(二进制个数),通常用 Kbps、Mbps 表示。

单位 bps(bit per second),通常用 Kbps、Mbps 表示:

  • kbps 或者千比特每秒
  • mbps 或兆比特每秒

码率与画质

码率越大(说明单位时间内取样率越大,数据流精度就越高),压缩比就越小,精度就越高,处理出来的文件就越接近原始文件,图像质量越好,画质越清晰,要求播放设备的解码能力也越高。

当你在压缩视频时,通常需要设置视频压缩软件不要超过某个特定码率

示例

比如被压缩的 1080P 的视频,假设它的长度为 100 分钟,大小为 1GB。 【时间】(秒) = 100X60S=6000s 【文件大小】(bit) = 1GB=1024MB= 1024X1024KB=1024X1024X1024Byte=1024X1024X1024X8bit=8589934592bit 【码率】 = 8589934592 / 6000 = 1.4Mbit/s 也就是说这个视频的大概码率是 1.4Mbit/s

码率和分辨率选择

码率和分辨率对于实时视频流都很重要。

在压缩视频前,了解以下几件事对于你来说很重要:

  • 首先,你需要了解你的观众(再怎么强调也不过分)。
  • 你的观众平时常用的带宽是多少?你是为拥有高速互联网的城市居民提供视频服务,还是为低网速的乡村人口提供服务?
  • 他们是使用固定连接的网线,还是使用移动互联网?
  • 你的终端用户使用什么设备? 他们平时会看大屏幕的智能电视吗?还是使用智能手机看视频?
  • 你所提供的视频服务的内容属性是什么? 是充满各种动作的电影、体育赛事,还是没有那么多动作的新闻,亦或是很容易压缩的动画片?了解你的内容。
  • 你有多少时间压缩视频? 如果你分别花了 15 分钟和 3 小时来压缩 3mbps 的视频,那么很可能花费 3 小时压缩的视频质量更好,因为有更多时间来应用复杂的算法并提高视频质量。如果你的时间很少,你可能要考虑降低视频分辨率来快速压缩视频,并配置更合适的码率。
  • 你使用哪种视频编解码器? 目标观众的设备能否解码 H.264/AVC、 HEVC、AV1 或者 VP9?

现在,让我们来看几个实际的例子,其中你需要选择 码率-分辨率 组合。

  1. 目标观众只在智能手机上观看视频。 这种情况,你应该考虑较低码率(也许一个 1080p),并专注于创建更多分辨率为 720p 和码率在 2~3mbp 的组合。这样用户就能将码率降低到更适用移动环境以及数据连接较差的情况。
  2. 目标观众为城市居民,并只在智能电视或者 Roku 上观看视频。 在这种情况下,你可以轻松创建两到三个 1080p 的视频流:如 1080p 8mbps、1080p 6mbps、1080p 4mbps,并根据用户的带宽选择合适的视频流,因为你几乎可以确定用户网络带宽良好,而且 1080p 在大电视上看起来会很不错。
  3. 新闻和脱口秀直播:全天候。 在这种情况下,编码器可以轻松且高效地压缩视频,所以你可以选择 1080p 和 3~4mbps,并将获得非常高的视频质量。

帧率

帧率(frames per seconds / fps):指播放时每秒移动多少帧。

由于人类眼睛的特殊生理结构,如果所看画面之帧率高于 24 的时候,就会认为是连贯的,此现象称之为视觉暂留

视频帧率影响的是画面流畅感,也就是说视频帧率超高,表现出来的效果就是:画面越显得流畅。你也可以这样理解,假设 1 秒只显 1 帧,那么一段视频看起来,就是有很明显的卡顿感,不流畅不连惯。当然视频帧率越高,意味着画面越多,也就相应的,这个视频文件的大小也会随之增加,占用存储空间也就增大了。帧率就是在 1 秒钟时间里传输的图片的帧数,也可以理解为图形处理器每秒钟能够刷新几次。

所以说要想得到非常流畅的画面感,帧率当然是越高越好,但是超过 60 帧每秒估计人类也可能感知不出效果了。当然,在实际情况中我们还要考虑服务器整体性能。

  • 电影帧率一般是 24fps(帧每秒);
  • 电视剧一般是 25fps;
  • 监控行业常用 25fps;
  • 音视频通话常用 15fps;

采样率

采样率(sample rate):指每秒采集的次数,这个是指音频的,采的越多,声音质量越好,当然体积也会大。

带宽

网络带宽是指在单位时间(一般指的是 1 秒钟)内能传输的数据量。网络和高速公路类似,带宽越大,就类似高速公路的车道越多,其通行能力越强。网络带宽作为衡量网络特征的一个重要指标。

传输带宽也指的是数据传输的速率。对于流媒体的播放,影响最大的属性就是传输带宽。如果带宽过低,使得数据传输下载的速度小于视频流播放的数率,那么在视频的播放将会经常出现停顿和缓冲,极大的影响了客户观看的流畅性;而为了保证视频观看的流畅性,在低带宽的条件下,只能选择低品质、低码流的视频进行传输,这样又会影响到客户的光看效果。所以,一个良好的传输带宽环境是客户活动高品质的流媒体体验的重要保证。

清晰度

  • 在码率一定的情况下,分辨率与清晰度成反比关系:分辨率越高,图像越不清晰,分辨率越低,图像越清晰。\
  • 在分辨率一定的情况下,码率与清晰度成正比关系,码率越高,图像越清晰;码率越低,图像越不清晰。

小结

  • 码率影响体积,与体积成正比;码率越大,体积越大;码率越小,体积越小。
  • 帧率影响画面流畅度,与画面流畅度成正比:帧率越大,画面越流畅;帧率越小,画面越有跳动感。如果码率为变量,则帧率也会影响体积,帧率越高,每秒钟经过的画面越多,需要的码率也越高,体积也越大。
  • 分辨率影响图像大小,与图像大小成正比:分辨率越高,图像越大;分辨率越低,图像越小。

音视频录制播放原理

音视频录制原理

![image.png900](https://raw.githubusercontent.com/hacket/ObsidianOSS/master/obsidian202406042331604.png)

音视频播放原理

![image.png900](https://raw.githubusercontent.com/hacket/ObsidianOSS/master/obsidian202406042331907.png)

视频播放基本流程

视频播放器播放一个互联网上的视频文件,需要经过以下几个步骤:解协议解封装解码视音频视音频同步。如果播放本地文件则不需要解协议,为以下几个步骤:解封装解码视音频视音频同步

![image.png700](https://raw.githubusercontent.com/hacket/ObsidianOSS/master/obsidian/20240601001331.png)
![image.png900](https://raw.githubusercontent.com/hacket/ObsidianOSS/master/obsidian/20240602230116.png)

1. 解协议

将流媒体协议的数据,解析为标准的相应的封装格式数据,常用协议:HTTPRTMPMMS 等;

视音频在网络上传播的时候,常常采用各种流媒体协议,例如 HTTP,RTMP,或是 MMS 等等。这些协议在传输视音频数据的同时,也会传输一些信令数据。这些信令数据包括对播放的控制(播放,暂停,停止),或者对网络状态的描述等。解协议的过程中会去除掉信令数据而只保留视音频数据。例如,采用 RTMP 协议传输的数据,经过解协议操作后,输出 FLV 格式的数据。

2. 解封装

将输入的封装格式的数据,分离成为音频流压缩编码数据和视频流压缩编码数据,常见视频格式:MP4MKVFLVRMVBAVITS 等。

它的作用就是将已经压缩编码的视频数据和音频数据按照一定的格式放到一起。例如,FLV 格式的数据,经过解封装操作后,输出 H.264 编码的视频码流和 AAC 编码的音频码流。

3. 解码

解码(视、音频解码):将视频/音频压缩编码数据,解码成为非压缩的视频/音频原始数据

常见解码:视频编码H264->像素数据YUV/RGB音频编码AAC->采样数据PCM

音频的压缩编码标准包含 AACMP3AC-3 等等,视频的压缩编码标准则包含 H.264/H.265?MPEG2VC-1 等等。解码是整个系统中最重要也是最复杂的一个环节。通过解码,压缩编码的视频数据输出成为非压缩的颜色数据,例如 YUV420PRGB 等等;压缩编码的音频数据输出成为非压缩的音频抽样数据,例如 PCM 数据。

4. 音画同步

根据解封装模块处理过程中获取到的参数信息,同步解码出来的视频和音频数据,并将视频音频数据送至系统的显卡和声卡播放出来。

以 FFMPEG 库为例,利用时间戳去同步二者:PTS(Presentation Time Stamp 显示时间戳)、DTS(Decoding Time Stamp 解码时间戳);

5. 终端设备播放

显卡、声卡对视(YUV、RGB)音频(PCM)的输出。

有关本文中涉及到的协议数据、封装格式数据、视频编码数据、音频编码数据、视频像素数据、音频采样数据的分析可以参考下面系列文章:

流媒体协议

流媒体协议是服务器与客户端之间通信遵循的规定。当前网络上主要的流媒体协议如表所示。

名称推出机构传输层协议客户端目前使用领域
RTSP+RTPIETFTCP+UDPVLC, WMPIPTV
RTMPAdobe Inc.TCPFlash互联网直播
RTMFPAdobe Inc.UDPFlash互联网直播
MMSMicrosoft Inc.TCP/UDPWMP互联网直播 + 点播
HTTPWWW+IETFTCPFlash互联网点播
HLSApple Inc.TCPiOS, macOS互联网直播 + 点播

基于 TCP 的协议传输可靠,但是会有抖动、延迟等问题。基于 UDP 的协议虽然抖动和延迟情况会好些,但是不够可靠存在丢包的情况。所以不能说哪个协议最好,只能根据自身业务需求选择一种适合的协议,亦或是自行制定协议,在封装可靠的 UDP 连接等。

RTSP+RTP 经常用于 IPTV 领域。因为其采用 UDP 传输视音频,支持组播,效率较高。但其缺点是网络不好的情况下可能会丢包,影响视频观看质量。因而围绕 IPTV 的视频质量的研究还是挺多的。

因为互联网网络环境的不稳定性,RTSP+RTP 较少用于互联网视音频传输。互联网视频服务通常采用 TCP 作为其流媒体的传输层协议,因而像 RTMP,MMS,HTTP 这类的协议广泛用于互联网视音频服务之中。这类协议不会发生丢包,因而保证了视频的质量,但是传输的效率会相对低一些。

此外 RTMFP 是一种比较新的流媒体协议,特点是支持 P2P。

封装格式

封装格式,就是以怎样的方式将视频轨音频轨字幕轨等数据打包成一个文件的规范。说得通俗点,视频轨相当于饭,而音频轨相当于菜,封装格式就是一个碗或者一个锅,是用来盛放饭菜的容器。

一般我们所说的视频包括画面和声音,二者分开的话顶多算是图片和音频,封装便是把画面和声音打包到一起组成视频文件,解封装便是打包的逆过程,将画面和声音分开,播放是交给不同的设备输出。视频封装同样有很多格式,平时都是以文件后缀就可以区分,如常见的:.mp4.flv.rmvb 等等。支持不同的音视频编码决定其最终的画质和音质;支持流媒体协议与否,决定其能不能以流媒体形式传输。

现如今流行的封装格式如下表所示:

名称推出机构流媒体支持的视频编码支持的音频编码目前使用领域
AVIMicrosoft Inc.不支持几乎所有格式几乎所有格式BT 下载影视
MP4MPEG支持MPEG-2, MPEG-4, H.264, H.263 等AAC, MPEG-1 Layers I, II, III, AC-3 等互联网视频网站
TSMPEG支持MPEG-1, MPEG-2, MPEG-4, H.264MPEG-1 Layers I, II, III, AAC,IPTV,数字电视
FLVAdobe Inc.支持Sorenson, VP6, H.264MP3, ADPCM, Linear PCM, AAC 等互联网视频网站
MKVCoreCodec Inc.支持几乎所有格式几乎所有格式互联网视频网站
RMVBReal Networks Inc.支持RealVideo 8, 9, 10AAC, Cook Codec, RealAudio LosslessBT 下载影视

由表可见,除了 AVI 之外,其他封装格式都支持流媒体,即可以 “ 边下边播 “。有些格式更 “ 万能 “ 一些,支持的视音频编码标准多一些,比如 MKV。而有些格式则支持的相对比较少,比如说 RMVB

视频文件的封装格式并不影响视频的画质,影响视频画面质量的是视频的编码格式。

编码

一部 25 帧每秒,90 分钟,分辨率 1024*768,24 位真彩色的视频,没有经过压缩的大小:

1
2
3
4
5
6
7
8
// 1字节
1 Byte = 8 bit
// 一帧大小
1024*768 * 24 = 18874368 bit = 2359296 Byte
// 总帧数
90 * 60 * 25 = 135000
// 总大小
一帧大小 x 总帧数 = 318504960000Byte= 303750MB)≈ 296GB

存储一部 90 分钟没有压缩的电影需要 296 GB 空间,所以我们需要对视频进行压缩,这种视频压缩技术就是我们所说的编码。

视频编码方式:H.26X(H.261、H.262、…、H.264(目前最常用)H.265
音频编码方式:MP3AAC

通过视频压缩算法,减少了视频文件的大小。压缩比越大,解压缩还原后播放的视频越失真,这是因为压缩的同时不可避免的丢失了视频中原来图像的数据信息。

解码就是将编码的视频解压缩处理,从而得到系统音频驱动和视频驱动能够识别的音频采样数据(如 PCM 数据)和视频像素数据(如 YUV420P,RGB)。

音频

音频常见名词

采样频率

每秒钟采样的点的个数。常用的采样频率有:

  • 22000(22 kHz): 无线广播
  • 44100(44.1 kHz):CD 音质
  • 48000(48 kHz): 数字电视,DVD
  • 96000(96 kHz): 蓝光,高清 DVD
  • 192000 (192 kHz):蓝光,高清 DVD

采样精度 (采样深度)

每个 “ 样本点 “ 的大小,常用的大小为 8bit, 16bit,24bit。

通道数

单声道,双声道,四声道,5.1 声道。

交错模式

数字音频信号存储的方式。数据以连续帧的方式存放,即首先记录帧 1 的左声道样本和右声道样本,再开始帧 2 的记录…

非交错模式

首先记录的是一个周期内所有帧的左声道样本,再记录所有右声道样本

音频编码

音频编码的主要作用是将音频采样数据(PCM 等)压缩成为音频码流,从而降低音频的数据量。

音频编码也是互联网视音频技术中一个重要的技术。但是一般情况下音频的数据量要远小于视频的数据量,因而即使使用稍微落后的音频编码标准,而导致音频数据量有所增加,也不会对视音频的总数据量产生太大的影响。高效率的音频编码在同等的码率下,可以获得更高的音质。

常见音频编码:

名称推出机构推出时间目前使用领域
AACMPEG1997各个领域(新)
AC-3Dolby Inc.1992电影
MP3MPEG1993各个领域(旧)
WMAMicrosoft Inc.1999微软平台

近年来并未推出全新的音频编码方案,可见音频编码技术已经基本可以满足人们的需要。音频编码技术近期绝大部分的改动都是在 MP3 的继任者——AAC 的基础上完成的。

这些编码标准之间的比较可以参考文章:音频编码方案之间音质比较(AAC,MP3,WMA等)

结果大致是这样的:AAC+ > MP3PRO > AAC> RealAudio > WMA > MP3

AAC 格式的介绍:AAC格式简介

AAC 几种不同版本之间的对比:AAC规格(LC,HE,HEv2)及性能对比

AAC 专利方面的介绍:AAC专利介绍

此外杜比数字的编码标准也比较流行,但是貌似比最新的 AAC 稍为逊色:AC-3技术综述

音频编码的简单原理可以参考:视频压缩编码和音频压缩编码的基本原理

视频

视频常见名词

位深

我们看到的彩色图片,都有三个通道,分别为红 (R)、绿 (G)、蓝 (B) 通道。(如果需要透明度则还有 alpha 分量);通常每个通道用 8bit 表示, 8bit 能表示 256 种颜色,所以可以组成 256*256*256=16,777,216 = 1677万 种颜色。

这里的 8bit 就是我们讲的位深。

每个通道的位深越大,能够表示的颜色值就越大,比如现在高端电视说的 10bit 色彩,即是每个通道用 10bit 表示,每个通道有 2^10=1024 种颜色。 1024*1024*1024约为10,7374万 色=10 亿色,是 8bit 的 64 倍

常见的颜色还是 8bit 居多。

视频编码

视频编码的主要作用是将视频像素数据(RGBYUV 等)压缩成为视频码流,从而降低视频的数据量。如果视频不经过压缩编码的话,体积通常是非常大的,一部电影可能就要上百 G 的空间。视频编码是视音频技术中最重要的技术之一。视频码流的数据量占了视音频总数据量的绝大部分。高效率的视频编码在同等的码率下,可以获得更高的视频质量。

不同的压缩算法,就产生了不同的编码格式,应用的比较广泛的就是 H.264 了。下面是常用的视频编码格式:

名称推出机构推出时间目前使用领域
HEVC(H.265)MPEG/ITU-T2013研发中
H.264MPEG/ITU-T2003各个领域
MPEG4MPEG2001不温不火
MPEG2MPEG1994数字电视
VP9Google2013研发中
VP8Google2008不普及
VC-1Microsoft Inc.2006微软平台

注:视频编码技术在整个视音频技术中应该是最复杂的技术。

更多:

视频压缩编码和音频压缩编码的基本原理

主流编码标准

实际中使用最多的就是 H.264 了,性能强悍(超过了很多商业编码器),而且开源。其基本教程网上极多,不再赘述。编码时候可参考:x264编码指南——码率控制。编码后统计值的含义:X264输出的统计值的含义(X264 Stats Output)

H.264 仅仅是一个编码标准,而不是一个具体的编码器,H.264 只是给编码器的实现提供参照用的。基于 H.264 标准的编码器还是很多的,究竟孰优孰劣?可参考:MSU出品的 H.264编码器比较(2011.5) 在学习视频编码的时候,可能会用到各种编码器(实际上就是一个 exe 文件),他们常用的编码命令可以参考:各种视频编码器的命令行格式 学习 H.264 最标准的源代码,就是其官方标准 JM 了。但是要注意,JM 速度非常的慢,是无法用于实际的:H.264参考软件JM12.2RC代码详细流程

Google 推出的 VP8 属于和 H.264 同一时代的标准。总体而言,VP8 比 H.264 要稍微差一点。有一篇写的很好的 VP8 的介绍文章:深入了解 VP8。除了在技术领域,VP8 和 H.264 在专利等方面也是打的不可开交,可参考文章:WebM(VP8) vs H.264

此外,我国还推出了自己的国产标准 AVS,性能也不错,但目前比 H.264 还是要稍微逊色一点。不过感觉我国在视频编解码领域还算比较先进的,可参考:视频编码国家标准 AVS 与 H.264 的比较(节选)

近期又推出了 AVS 新一代的版本 AVS+,具体的性能测试还没看过。不过据说 AVS+ 得到了国家政策上非常强力的支持。

下一代编码标准

下一代的编解码标准就要数 HEVC 和 VP9 了。VP9 是 Google 继 VP8 之后推出的新一代标准。VP9 和 HEVC 相比,要稍微逊色一些。它们的对比可参考:(1)HEVC与VP9编码效率对比 (2)HEVC,VP9,x264性能对比

HEVC 在未来拥有很多大的优势,可参考:HEVC将会取代H.264的原因

学习 HEVC 最标准的源代码,就是其官方标准 HM 了。其速度比 H.264 的官方标准代码又慢了一大截,使用可参考:HEVC学习—— HM的使用

未来实际使用的 HEVC 开源编码器很有可能是 x265,目前该项目还处于发展阶段,可参考:x265(HEVC编码器,基于x264)介绍 。x265 的使用可以参考:HEVC(H.265)标准的编码器(x265,DivX265)试用

主流以及下一代编码标准之间的比较可以参考文章:视频编码方案之间的比较(HEVC,H.264,MPEG2等)

此外,在码率一定的情况下,几种编码标准的比较可参考:限制码率的视频编码标准比较(包括MPEG-2,H.263, MPEG-4,以及 H.264)

结果大致是这样的:HEVC > VP9 > H.264> VP8 > MPEG4 > H.263 > MPEG2

比较直观的了解各种编码标准:

视频参数(流媒体系统,封装格式,视频编码,音频编码,播放器)对比

几个视频参数对比的资源,是 Wikipedia 上的,总结的非常好:

流媒体系统对比:Comparison of streaming media software - Wikipedia

封装格式对比:Comparison of video container formats - Wikipedia

视频编码器对比:Comparison of video codecs - Wikipedia

音频编码格式对比:http://en.wikipedia.org/wiki/Comparison_of_audio_formats

视频播放器对比:Comparison of video player software - Wikipedia

视音频同步

根据时间,帧率和采样率采用一定的算法,同步解码出来的视频和音频数据,并将视频音频数据送至显卡和声卡播放出来。

音视频是不同设备去采集,音视频编码解码时间不一致,流媒体传输将音视频分开传输等等原因,不作处理,声音和画面播放往往是不同步的,直接播放肯定是没法看的。采集的时候需要给每个视频帧和音频样本加上时间戳,再通过一个基准将音画进行同步处理,解决方案有如下几种:

  1. Audio Master 将视频同步到音频上,就是以音频的播放速度为基准来同步视频。视频比音频播放慢了,加快其播放速度;快了,则延迟播放。
  2. Video Master 将音频同步到视频上,就是以视频的播放速度为基准来同步音频。
  3. External Clock Master 将视频和音频同步外部的时钟上,选择一个外部时钟为基准,视频和音频的播放速度都以该时钟为标准。

一般情况下 Audio Master > External Clock Master > Video Master

工具

  • 文件信息查看: mediainfo
  • 封装格式: Elecard Format Analyer
  • 编解码数据: Elecard Stream Eye
  • 视频: YUV player
  • 音频: Adobe Audition
  • 协议查看数据和跨平台数据: Vlc和ffplay

MediaInfo

MediaInfo 是一个专门查看视音频格式的工具

使用 MediaInfo 可以获得多媒体文件的哪些信息? 内容信息:标题,作者,专辑名,音轨号,日期,总时间…… 视频:编码器,长宽比,帧频率,比特率…… 音频:编码器,采样率,声道数,语言,比特率…… 文本:语言和字幕 段落:段落数,列表

MediaInfo 支持哪些文件格式? 视频:MKV, OGM, AVI, DivX, WMV, QuickTime, Real, MPEG-1, MPEG-2, MPEG-4, DVD (VOB)… (编码器:DivX, XviD, MSMPEG 4, ASP, H.264, AVC…) 音频:OGG, MP 3, WAV, RA, AC 3, DTS, AAC, M 4 A, AU, AIFF… 字幕:SRT, SSA, ASS, SAMI…

MediaInfo 的主要功能特点: 支持众多视频和音频文件格式 多种查看方式:文本,表格,树形图,网页…… 自定义查看方式 信息导出:文本,CSV,HTML…… 三种发布版本:图形界面,命令行,DLL (动态链接库) 与 Windows 资源管理器整合:拖放,右键菜单

本文由作者按照 CC BY 4.0 进行授权