感谢IT之家网友鲜枣课堂的线索投递! 今天我们来做一道算术题 做一次视频直播,到底需要多大的网络带宽。 废话不多说,我们直接开始。 我们先从最基本的图像开始计算。 图像,大家都知道,是由很多带有颜色的点组成的。这个点,就是像素点(Pixel)。 像素是图像显示的基本单位。我们通常说一幅图片的大小,分辨率是19201080,就是长度为1920个像素点,宽度为1080个像素点。乘积是2,073,600,也就是说,这个图片是两百万像素的。 对视频来说,常见的分辨率有: 注意:不同的标准,对2K4K8K的定义不同 那么,一个像素点是多少比特(bit)呢? 在计算机里,是用数字来表示颜色的。这就牵出了彩色分量数字化的概念。 以前我们美术课学过,任何颜色,都可以通过红色(Red)、绿色(Green)、蓝色(Blue)按照一定比例调制出来。这三种颜色,被称为三原色。 在计算机里,R、G、B也被称为基色分量。它们的取值,分别从0到255,一共256个等级(256是2的8次方)。 所以,任何颜色,都可以用R、G、B三个值的组合表示。 RGB〔183,67,21〕 通过这种方式,一共能表达多少种颜色呢?25625625616,777,216种,因此也简称为1600万色。RGB三色,每色有8bit,这种方式表达出来的颜色,也被称为24位色(占用24bit)。 这个颜色范围已经超过了人眼可见的全部色彩,所以又叫真彩色。再高的话,对于我们人眼来说,已经没有意义了,完全识别不出来。 我们按现在比较流行的1080p直播来举例计算吧,像素点是2,073,600。用24位色,也就是每张图片2,073,60024bit49,766,400bit,约5。9MB。 感觉有点大呀别急,我们继续往下看。 接下来看帧率(FrameRate)。 我们的视频,其实就是很多张静止的图像连续播放。 在视频中,一个帧(Frame)就是指一幅静止的画面。帧率,就是指视频每秒钟包括的画面数量(FPS,Framepersecond)。 帧率越高,视频就越逼真、越流畅。 常见的帧率,有24fps(电影标准)、30fps、60fps。 我们就以24fps来算吧,接上前面的结果,那就是: 49,766,400bit241,194,393,600bit149,299,200byte(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的采样方式,能获得12的压缩率。 这些预处理做完之后,就是正式的编码了。 编码的过程和原理我们就不解释了。目前比较流行的编码格式有H。264,H。265。 这些编码格式有着非常惊人的压缩率。以2013年推出的H。265为例,压缩率能够达到300500:1(包括前面的视频输入信号YUV重采样)。 也就是说,刚才那个1080p的视频,我们要直播的话,如果采用H。265编码格式(按300:1算),码流就是: 1,194,393,600bit3003,981,312bits 码流(Datarate)是视频文件在单位时间内使用的数据流量,我们可以理解为视频文件大小除以视频时长。一般来说,码流越大,视频的压缩比就越小,画面质量就越好。 是不是这样就算完啦?当然没有,我们还有音频没有计算呢。 音频的计算相对来说要简单一点。 声音是连续的模拟信号,我们对声音进行采样、量化、编码,最终变成数字信号,然后在网络中传输。 采样的指标是采样率,也就是单位时间内(每秒)用多少个数据来描述声音波形。 采样率越高,波形越接近,音质越好。 采样率通常有24KHz、44。1KHz、48KHz等。 常见的数字音频采样率 现在视频直播基本上都是用44。1KHz或48KHz采样率。 然后是采样位数,也称为位深、精度、比特。 这个值有点像前面所说的图像位色。它可以理解数字音频设备处理声音的解析度,即对声音的辨析度。这个数值越大,解析度就越高,录制和回放的声音就越真实(声音越细腻)。 声音的采样位数有8bit,16bit,24bit等。 一个bit数据大约可以记录6dB的声音,故定义0dB为峰值。常见的16bit(CD音质),可以记录大概96分贝的动态范围。24bit的声音动态范围144dB(246)0dB。 人耳的无痛苦极限声压是90分贝,所以,一般来说数字音频基本上都会采用16bit的采样位数。 声音通常会分为单声道或多声道(双声道、四声道等,两个以上的声道就属于立体声)。双声道的话,就是2。 所以,在无损无压缩格式(例如wav格式)中,音频的码率采样率(48k)位深度(16)通道数(2)1,536kbps。 注意,如果是有损压缩(例如mp3格式),音频的码率不等于这个格式,因为原始信息已经被破坏了。 Mp3通过抽取音频中的一些频段来达到提高压缩比,降低码率,减少所占空间,但同时声音的细节如人声的情感、后期的混响等等都已经发生变形。盲听的话也很难较快地分辨出wav和mp3,需要借助设备。 Mp3目前是最为普及的声频压缩格式,可以最大程度地保留压缩前的音质。Mp3常见码率是128kbps、192kbps、224kbps、256kbps。320kbps是mp3格式的最高码率。 我们一般都是用有损压缩格式,192kbps已经够用了,我们以192kbps为例吧。 视频加音频,就是3,981,312bps192kbps4,080kbps。 一般来说,考虑到一些抖动和冗余,网络需求带宽视频码率1。3。所以,带宽需求大约是5,304kbps。也就是说,差不多6Mbps的带宽,就可以满足了。