🎬 第五章 视频基础
📄 一句话概括

视频 = 一串静止画面,所以数据量是【一帧大小 × 帧率】——1080p30 未压缩约 1.5 Gbps,家用宽带根本扛不住。

📝 本节和前面几节的关系

5.1.1 和 5.1.2 讲了【一帧】怎么存,这一节把帧串起来,成为视频。

一、视频的本质是一串图

视频没有新东西:它就是一秒钟内闪过很多张图。 人眼有视觉暂留,每秒闪过 24 张以上,就会觉得是连续的。 所以描述视频只比描述图片多一个参数:每秒多少帧(fps)。

二、数据量怎么算

每帧大小 = 宽 × 高 × 每像素字节 每秒数据 = 每帧大小 × 帧率 总大小 = 每秒数据 × 时长 拿 1080p30 算一遍:1920 × 1080 × 3 × 30 ≈ 178 MB/秒,也就是约 1.5 Gbps。

三、这个数字意味着什么

家用宽带常见是 100~1000 Mbps,1.5 Gbps 已经超过大多数家庭的上限。 更麻烦的是:这还只是 30 帧、还没有声音。如果上 4K60,就是 12 Gbps。 所以对视频来说,【不压缩】不是省不省钱的问题,是根本传不了。

四、和音频对照着记

音频的数据量 = 采样率 × 位深 × 声道。 视频的数据量 = 分辨率 × 帧率 × 每像素字节。 两个公式是同一个思路:把三个参数一乘,就是它每秒要吃多少数据。 记住这个思路,后面算任何媒体的体积都不会卡住。

五、动手 Demo:视频为什么是【像素 x 帧率】的乘积

视频就是一串静止画面。数据量 = 每帧大小 × 每秒多少帧。

for res, w, h, fps in [("720p", 1280, 720, 30), ("1080p", 1920, 1080, 30),
                       ("1080p", 1920, 1080, 60), ("2160p", 3840, 2160, 30)]:
    print("%-7s %2d fps   %.0f Mbps" % (res, fps, w * h * 3 * fps * 8 / 1000.0 / 1000))

实跑输出:

--------------------------------------------------------------------
视频为什么是【像素 x 帧率】的乘积
--------------------------------------------------------------------

视频就是一串静止画面。数据量 = 每帧大小 x 每秒多少帧。

  分辨率     帧率       未压缩码率
  ---------------------------------
  720p       30 fps     664 Mbps
  1080p      30 fps     1493 Mbps
  1080p      60 fps     2986 Mbps
  2160p      30 fps     5972 Mbps

  1080p30 的未压缩码率约 **1.5 Gbps**——
  而家用宽带通常只有 100~1000 Mbps,**连一帧都传不顺畅**。
  所以视频不压缩,根本没有【能不能播】这一说。

1080p30 的未压缩码率约 1.5 Gbps—— 而家用宽带通常只有 100~1000 Mbps,连一帧都传不顺畅。 所以视频不压缩,根本没有【能不能播】这一说。

30 秒实验

  1. 算一下 4K60 的未压缩码率,和 1080p30 比一下倍数。
  2. 再查一下你家的宽带上限,看差了多少。

常见误区

  1. 以为高帧率【只是更流畅】。它同时让数据量成比例上去了。
  2. 只算分辨率不算帧率。两个都要乘,缺一个都算不准。
自测三问(点开对答案) 1. 1080p30 的未压缩码率大约是多少? —— 约 1.5 Gbps(178 MB/s)。 2. 视频数据量的三个乘数是什么? —— 分辨率(每帧大小)、帧率、时长。 3. 为什么视频必须压缩? —— 未压缩码率远超传输与存储能力,根本传不了、存不下。

相关笔记