01一张照片为什么会很大?

一张照片看起来只是“一张图”, 但对电脑来说,它通常包含大量像素

每个像素又需要记录颜色。 如果图片分辨率很高,就意味着要记录很多很多个像素的颜色信息。

100 × 100 10,000 像素

小图片

4000 × 3000 12,000,000 像素

约 1200 万像素照片

02不压缩时,一张照片有多大?

假设一张图片是 4000 × 3000, 一共有 1200 万像素。

如果每个像素用最常见的 24 Bit RGB 保存, 也就是每个像素 3 Byte:

像素数 4000 × 3000 = 12,000,000
×
每像素 3 Byte 24 Bit RGB
=
未压缩像素数据 36,000,000 Byte 约 36 MB(十进制)

这还只是最简单的估算。 如果有 Alpha 通道、更高位深、更复杂色彩格式,数据量还会变化。

03视频为什么比照片更大?

视频不只是“一张图片”, 它要随着时间不断变化。

入门时可以把视频想成: 很多张画面快速连续播放,再加上声音等数据。

画面 1 画面 2 画面 3 画面 4 画面 5
+
声音

04帧率为什么会影响文件大小?

视频每秒显示多少张画面,叫作 帧率(Frame Rate), 常用 fps(frames per second)表示。

24 fps 每秒 24 帧

电影中很常见

30 fps 每秒 30 帧

普通视频很常见

60 fps 每秒 60 帧

运动画面更流畅

如果其他条件相同, 帧率越高,就需要描述越多时间点上的画面变化, 通常会需要更高的数据量。

10 秒视频 30 fps → 300 帧 60 fps → 600 帧

05分辨率和颜色为什么也很重要?

视频中的每一帧仍然是一幅图像, 所以分辨率越高,每一帧包含的像素通常越多。

1280 × 720 720p

约 92 万像素 / 帧

1920 × 1080 1080p

约 207 万像素 / 帧

3840 × 2160 4K UHD

约 829 万像素 / 帧

另外,颜色位深也会影响数据量。 8 Bit、10 Bit、12 Bit 每通道可以记录的颜色等级不同, 所需数据量也不同。

06压缩是怎样把文件变小的?

照片和视频如果完全不压缩,数据量会非常大。 所以实际文件通常会使用压缩。

照片压缩

利用颜色和图像结构中的规律减少数据

例如 JPEG、WebP、HEIF

视频压缩

除了压缩单帧,还会利用前后帧的相似变化

例如 H.264、H.265/HEVC、AV1
前一帧
下一帧
很多地方没变

视频编码器可以重点记录变化,而不是每次都从头保存整幅画面

07码率是什么?

对已经压缩的视频或音频来说, 一个非常重要的概念叫码率(Bitrate)

它表示平均每秒大约需要多少 Bit 的数据。

2 Mb/s

每秒约 2 Megabit

数据量较低

8 Mb/s

每秒约 8 Megabit

数据量更高

20 Mb/s

每秒约 20 Megabit

通常需要更多存储和带宽

粗略估算文件大小时可以想: 文件大小 ≈ 码率 × 时长。 记得 Bit 和 Byte 要换算,8 bit = 1 Byte。

08为什么同样 1080p,大小还能差很多?

因为“1080p”只告诉你画面分辨率, 并没有告诉你其他所有条件。

码率

码率高,通常文件更大

帧率

30 fps 和 60 fps 数据量可能不同

编码器

不同编码格式压缩效率不同

画面内容

运动复杂的画面通常更难压缩

视频时长

时间越长,数据自然越多

音频

声道、采样率和音频码率也会占空间

你已经知道了什么

  • 照片会占空间,是因为它需要记录大量像素的颜色信息。
  • 4000 × 3000 的 24 Bit RGB 图像,如果按未压缩像素数据估算,大约需要 36 MB。
  • 视频要记录随时间变化的画面,还通常包含音频,因此数据量比单张照片大得多。
  • 帧率表示每秒有多少帧;帧率越高,通常需要描述更多时间变化。
  • 分辨率、颜色位深、帧率和时长都会影响原始数据量。
  • 照片和视频通常都会压缩;视频编码还会利用前后帧之间的相似性。
  • 码率表示每秒大约使用多少 Bit 的数据,可以用“码率 × 时长”粗略估算文件大小。
  • 同样是 1080p 视频,码率、帧率、编码器、画面复杂度、音频和时长不同,文件大小也可能差很多。

下一个问题: 数字、文字、图片、声音、视频都能变成电脑里的数据, 那是不是意味着现实世界里的很多信息都可以变成数据? 下一篇:原来一切都可以变成数据