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

图像的最小单位是像素,分辨率就是像素的排列数量——像素数按【边长之积】增长,所以从 720p 升到 1080p,数据量涨了 2.25 倍。

📝 本节和前面几节的关系

第四章把音频讲完了,第五章进入第二类媒体:视频。先从它的最小单位说起。

一、像素是什么

图像的显示载体是屏幕,屏幕由一个个发光点组成,每个点就是一个像素。 像素本身只干一件事:记录这一点的颜色。 所谓【分辨率 1920 × 1080】,说的就是横向 1920 个点、纵向 1080 个点。

二、像素数是怎么算的

总像素数 = 宽 × 高,这是一个非常简单的乘法。 720p = 1280 × 720 = 921,600 个像素 1080p = 1920 × 1080 = 2,073,600 个像素 2160p = 3840 × 2160 = 8,294,400 个像素 注意 1080p 只比 720p 长宽各多一半,像素数却是 2.25 倍。

三、一个像素占多大

每个像素要记住自己的颜色。最直观的记法是 RGB 三通道,各 8 bit。 3 字节 = 24 bit——这就是常说的【24 位真彩色】能表示 1677 万种颜色的原因。 所以一张未压缩的 1080p 图片大小约等于 1920 × 1080 × 3 ≈ 5.9 MB。 一张图就近 6 MB,这是后面所有视频问题的起点。

四、为什么这个数字要记

因为它是一切视频数据量的地基。 视频 = 一串图像,所以视频的数据量就是【一帧大小 × 帧率 × 时长】。 4.1.2 里音频用【采样率 × 位深 × 声道】算数据量,视频这边换成【分辨率 × 帧率】,逻辑完全一样。

五、动手 Demo:一张图有多少个像素,占多少空间

图像的最小单位是像素,分辨率就是一张图里像素的排列数量。

rows = [("640 x 480", 640 * 480), ("1280 x 720", 1280 * 720),
        ("1920 x 1080", 1920 * 1080), ("3840 x 2160", 3840 * 2160)]
for name, n in rows:
    print("%-14s %-12s %.1f MB" % (name, format(n, ","), n * 3 / 1024.0 / 1024))

实跑输出:

--------------------------------------------------------------------
一张图有多少个像素,占多少空间
--------------------------------------------------------------------

图像的最小单位是像素。分辨率就是一张图里像素的排列数量。

  分辨率          像素数        未压缩大小(RGB 24bit)
  ----------------------------------------------------
  640 x 480       307,200       0.9 MB
  1280 x 720      921,600       2.6 MB
  1920 x 1080     2,073,600     5.9 MB
  3840 x 2160     8,294,400     23.7 MB

  一条规律:**像素数按【边长之积】增长**——
  1080p 的像素数是 720p 的 2.25 倍,2160p 又再翻 4 倍。

一条规律:像素数按【边长之积】增长—— 1080p 的像素数是 720p 的 2.25 倍,2160p 又再翻 4 倍。

30 秒实验

  1. 算一下你手机屏幕分辨率对应的像素数。
  2. 再乘 3 字节,看它一屏未压缩有多大。

常见误区

  1. 以为分辨率翻倍就是数据量翻倍。长宽各翻一倍,数据量翻四倍。
  2. 把像素数当成文件大小。中间还隔着编码与压缩。
自测三问(点开对答案) 1. 分辨率 1920 × 1080 的像素数是多少? —— 2,073,600 个。 2. 一个 24 位真彩色像素占几个字节? —— 3 字节(RGB 各 8 bit)。 3. 720p 升到 1080p,像素数变成几倍? —— 2.25 倍。

相关笔记