实时视频带宽的计算过程

蓝皮鼠 蓝皮鼠 | 97 | 2022-06-27

1.图像
1.1 什么是图像

什么是图像?简单说图像就是很多带有颜色的点组成的,这些点就是像素点。而像素,也是图像显示的基本单位。

我们通常提到的一张图片是1920 * 1080,意思是说长度为1920个像素点,宽度为1080个像素点,1920 * 1080 = 2073600,也就是说这张图片总共有200多万个像素点,也就是我们通常说的200万像素。

1.2 图像有多大

想要搞清楚图像有多大,就得先搞清楚一个像素点是多少个比特(bit),而想搞清楚一个像素点是多少个bit,就要从颜色开始说起。

我们知道任何颜色都可以用红色、绿色、蓝色按照一定的比例调配出来,而这三种颜色也被称为三原色。

而在计算机里,颜色是用数字来表示的,R、G、B被称为“基色分量”,他们的值分别是从0到255,一种256个等级。因此,任何颜色都可以用R、G、B的三个值的组合来表示。通过RGB的方式,我们可以表达256 * 256 * 256 = 16777216种颜色,这种表示方式,也称为1600万色。

刚才提到,RGB三原色中每一个颜色有256个数值,正好是2的8次方,我们知道在计算机里一个数字是1bit,那么用8位的二进制数来表达,刚好能表达256个数值,那么刚好就是8bit可以表达一个原色,也就是说RGB三原色每个颜色占用8bit,三个颜色就是24bit,这种方式表达的颜色也被称为24位色。

以1080p的图片为例,像素点是2073600个,用24位色表示,每张图片就是 2073600 * 24 bit = 49766400 bit。

结合上一节课的知识,我们得到49766400 / 8 / 1024 / 1024 = 5.9MB,就是说这张图片的大小是5.9MB。

2.视频
2.1 什么是视频

我们提到的视频,其实就是若干张图片连续播放的结果,通常的视频有如下的几张格式:

视频格式 长宽比 分辨率 像素
720p 16:9 1280 * 720 921600
1080p 16:9 1920 * 1080 2073600
2K 16:9 1920 * 1080 82073600
4K 16:9 3840 * 2160 8294400
8K 16:9 7680 * 4320 33177600
好的,我们继续回到视频,那么多张图片通常要怎么样去连续的播放呢,这就涉及到一个概念,帧率。

2.2 视频有多大

视频其实是由若干图片构成的,在视频中,一帧就是一个画面,也就是一张图片,而帧率是指每秒钟图片的数量,单位是FPS(Frame per second)。

常见的帧率有24fps、30fps、60fps,其中24fps是电影的标准,那我们就用24fps来继续计算我们要得到的带宽。

按照上边的结果,每秒的视频就是:49766400 * 24 = 1194393600bit,我们知道1B=8bit,所以每秒的视频就是149299200B。

换言之,每秒的视频就是149299200/1024/1024=142MB。这个数据是很吓人的,1秒142MB,那我们刷会儿抖音流量岂不是分分钟爆炸,这是因为我们对视频进行了压缩,接下来我们就来说说视频的压缩。

2.3 视频的压缩

通常一段视频从录制到播放需要经过如下流程:

•摄像机录像•预处理(A/D转换)•预处理(YUV转换等)•压缩编码•数据封装及传输•解码•图像格式变换•播放

录像机录像以及预处理不是我们要讲的重点,这里就先不展开了,我们只要知道做完这些预处理后,就要开始正式的编码了,而目前编码的主流格式是H.264和H.265。这些编码有很强的压缩率,通过可以实现300~500:1的压缩率,换言之,如果1080p的视频采用H.264的编码格式,那么每秒就是1194393600bit / 300 = 3981312 bit/s,而这里的3981312 bit/s就是码流,也就是视频文件在单位时间内使用的数据流量。

3.结论
综上所述,我们1080p,24fps,采用H.264格式的视频,

码流为:3981312 bit/s

带宽为:3981312 / 1024 / 1024 = 3.79Mbps

通常我们网络带宽需求 = 视频码流 * 1.3,因此,

网络带宽需求为:3.79 Mbps * 1.3 = 4.9 Mbps

同样我们也知道,4.9Mbps的带宽理论速度为:4.9/8=0.612MB/s,也就是我们常说的627k的网速。

文章标签: 流媒体
推荐指数:

真诚点赞 诚不我欺~

实时视频带宽的计算过程

点赞 收藏 评论