今天我们来做一道算术题——做一次视频直播,到底需要多大的网络带宽。

 

 


废话不多说,我们直接开始。


我们先从最基本的图像开始计算。


图像,大家都知道,是由很多“带有颜色的点”组成的。这个点,就是“像素点(Pixel)”。


像素是图像显示的基本单位。我们通常说一幅图片的大小,分辨率是 1920×1080,就是长度为 1920 个像素点,宽度为 1080 个像素点。乘积是 2,073,600,也就是说,这个图片是两百万像素的。


对视频来说,常见的分辨率有:

 

 

注意:不同的标准,对 2K/4K/8K 的定义不同

 

 


那么,一个像素点是多少比特(bit)呢?

在计算机里,是用数字来表示颜色的。这就牵出了“彩色分量数字化”的概念。


以前我们美术课学过,任何颜色,都可以通过红色(Red)、绿色(Green)、蓝色(Blue)按照一定比例调制出来。这三种颜色,被称为“三原色”。

 

 


在计算机里,R、G、B 也被称为“基色分量”。它们的取值,分别从 0 到 255,一共 256 个等级(256 是 2 的 8 次方)。


所以,任何颜色,都可以用 R、G、B 三个值的组合表示。

 

 

RGB=[183,67,21]


通过这种方式,一共能表达多少种颜色呢?256×256×256=16,777,216 种,因此也简称为 1600 万色。RGB 三色,每色有 8bit,这种方式表达出来的颜色,也被称为 24 位色(占用 24bit)。

这个颜色范围已经超过了人眼可见的全部色彩,所以又叫真彩色。再高的话,对于我们人眼来说,已经没有意义了,完全识别不出来。


我们按现在比较流行的 1080p 直播来举例计算吧,像素点是 2,073,600。用 24 位色,也就是每张图片 2,073,600×24bit=49,766,400bit,约 5.9MB。


感觉有点大呀~ 别急,我们继续往下看。


接下来看帧率(Frame Rate)。


我们的视频,其实就是很多张静止的图像连续播放。

 

 


在视频中,一个帧(Frame)就是指一幅静止的画面。帧率,就是指视频每秒钟包括的画面数量(FPS,Frame per second)。  

 

 

 

帧率越高,视频就越逼真、越流畅。


常见的帧率,有 24fps(电影标准)、30fps、60fps。


我们就以 24fps 来算吧,接上前面的结果,那就是:


49,766,400bit×24=‭1,194,393,600‬bit=‭149,299,200‬byte(8bit 比特=1byte 字节)


也就是说,每秒视频大小约是 142MB,每分钟是 8.3GB,每小时是 499.2GB。每部 90 分钟的电影,是 748.8GB。


这不科学啊,我们平时看的电影,哪有这么大的?不就才几 GB 嘛?


没错,我们平时的视频确实没有那么大,因为我们对视频进行了编码压缩。

我们先来看看,视频从录制到播放的整个过程,如下:

 

 


首先是视频采集。通常我们会使用摄像机、摄像头进行视频采集。限于篇幅,我就不打算和大家解释 CCD 成像原理了。

 

 


采集了视频数据之后,就要进行模数转换,将模拟信号变成数字信号。其实现在很多都是摄像机(摄像头)直接输出数字信号。


信号输出之后,还要进行预处理,将 RGB 信号变成 YUV 信号。


前面我们介绍了 RGB 信号,那什么是 YUV 信号呢?


简单来说,YUV 就是另外一种颜色数字化表示方式。


视频通信系统之所以要采用 YUV,而不是 RGB,主要是因为 RGB 信号不利于压缩。


在 YUV 这种方式里面,加入了亮度这一概念。


在最近十年中,视频工程师发现,眼睛对于亮和暗的分辨要比对颜色的分辨更精细一些,也就是说,人眼对色度的敏感程度要低于对亮度的敏感程度。


所以,工程师认为,在我们的视频存储中,没有必要存储全部颜色信号。我们可以把更多带宽留给黑—白信号(被称作“亮度”),将稍少的带宽留给彩色信号(被称作“色度”)。于是,就有了 YUV。


YUV 里面的“Y”,就是亮度(Luma),“U”和“V”则是色度(Chroma)。


YUV 码流的存储格式其实与其采样的方式密切相关。(采样,就是捕捉数据。)


主流的采样方式有三种,YUV4:4:4,YUV4:2:2,YUV4:2:0。

 

 


具体解释起来有点繁琐,大家只需记住,通常用的是 YUV4:2:0 的采样方式,能获得 1/2 的压缩率。


这些预处理做完之后,就是正式的编码了。


编码的过程和原理我们就不解释了。目前比较流行的编码格式有 H.264,H.265。


这些编码格式有着非常惊人的压缩率。以 2013 年推出的 H.265 为例,压缩率能够达到 300~500:1(包括前面的视频输入信号 YUV 重采样)。


也就是说,刚才那个 1080p 的视频,我们要直播的话,如果采用 H.265 编码格式(按 300:1 算),码流就是:

1,194,393,600‬bit ÷ 300 = 3,981,312 bit/s


码流(Data rate)是视频文件在单位时间内使用的数据流量,我们可以理解为视频文件大小除以视频时长。一般来说,码流越大,视频的压缩比就越小,画面质量就越好。


是不是这样就算完啦?当然没有,我们还有音频没有计算呢。

 

 

 

 

音频的计算相对来说要简单一点。

声音是连续的模拟信号,我们对声音进行采样、量化、编码,最终变成数字信号,然后在网络中传输。

 

采样的指标是采样率,也就是单位时间内(每秒)用多少个数据来描述声音波形。

 

采样率越高,波形越接近,音质越好。


采样率通常有 24KHz、44.1KHz、48KHz 等。

 

常见的数字音频采样率


现在视频直播基本上都是用 44.1KHz 或 48KHz 采样率。


然后是采样位数,也称为位深、精度、比特。

这个值有点像前面所说的图像位色。它可以理解数字音频设备处理声音的解析度,即对声音的辨析度。这个数值越大,解析度就越高,录制和回放的声音就越真实(声音越细腻)。


声音的采样位数有 8bit,16bit,24bit 等。


一个 bit 数据大约可以记录 6dB 的声音,故定义 0dB 为峰值。常见的 16bit(CD 音质),可以记录大概 96 分贝的动态范围。24bit 的声音动态范围 -144dB(24×6)—0dB。


人耳的无痛苦极限声压是 90 分贝,所以,一般来说数字音频基本上都会采用 16bit 的采样位数。

 

声音通常会分为单声道或多声道(双声道、四声道等,两个以上的声道就属于立体声)。双声道的话,就是×2。


所以,在无损无压缩格式(例如 wav 格式)中,音频的码率=采样率(48k)× 位深度(16)× 通道数(2)= 1,536 kbps。


注意,如果是有损压缩(例如 mp3 格式),音频的码率不等于这个格式,因为原始信息已经被破坏了。
 

Mp3 通过抽取音频中的一些频段来达到提高压缩比,降低码率,减少所占空间,但同时声音的细节如人声的情感、后期的混响等等都已经发生变形。盲听的话也很难较快地分辨出 wav 和 mp3,需要借助设备。

 

Mp3 目前是最为普及的声频压缩格式,可以最大程度地保留压缩前的音质。Mp3 常见码率是 128kbps、192kbps、224kbps、256kbps。320kbps 是 mp3 格式的最高码率。

 

我们一般都是用有损压缩格式,192kbps 已经够用了,我们以 192kbps 为例吧。

 

视频加音频,就是 3,981,312 bps + 192 kbps = 4,080 kbps。

 

一般来说,考虑到一些抖动和冗余,网络需求带宽≈视频码率×1.3。所以,带宽需求大约是 5,304 kbps。也就是说,差不多 6Mbps 的带宽,就可以满足了。

 

好啦,整个计算过程,大家有没有看明白?这些都是音视频的基础知识,值得好好研究一下哦!

 

最后,感谢大家的支持!我们下期再见!