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

描述一段视频,只要看五个参数:分辨率、帧率、码率、时长、关键帧间隔——前四个决定【有多大】,最后一个决定【能不能拖得动】。

📝 本节和前面几节的关系

前面三节分别讲了像素、颜色、数据量,这一节把描述视频的五个常用概念排齐。

一、五个参数

分辨率:画面有多少像素——决定清晰程度的上限。 帧率:每秒多少帧——决定动作的流畅程度。 码率:每秒多少数据——决定文件大小与画质。 时长:一共多长——和码率相乘就是总体积。 关键帧间隔:多久出现一个可以独立解码的帧。

二、四个参数决定【多大】

前四个是一组:分辨率与帧率决定【原始数据有多少】,码率决定【压完还剩多少】。 这里有个重要区别:分辨率与帧率是【源】,码率是【果】。 同样的分辨率与帧率,码率高的画质好、文件大——这是一个取舍,不是一个优劣。

三、关键帧间隔容易被忽略

关键帧间隔(GOP 长度)说的是:每隔多少帧有一个能独立解码的帧。 间隔长 → 文件更小,但要拖到某个位置播放,就得从更早的关键帧开始解。 所以短视频常用较密的关键帧——用户拖一下就要立刻响应。 反过来,影视存档会放宽间隔,优先换体积。

四、怎么用这五个参数

拿到一段视频,先读这五项,基本就能判断它是什么规格的产物。 遇到问题时也先看这五项——很多问题看一眼参数就知道方向。 比如【拖动很卡】,先看关键帧间隔;【画面糊】,先看码率与分辨率。

五、动手 Demo:描述一段视频,要看哪五个参数

拿到一段视频,先看这五项,基本就能判断它是什么规格。

rows = [("分辨率", "像素", "画面的清晰程度"), ("帧率", "fps", "动作的流畅程度"),
        ("码率", "bps", "文件大小与画质上限"), ("时长", "秒", "总数据量"),
        ("关键帧间隔", "帧", "能不能快速拖动定位")]
for a, b, c in rows:
    print("%-12s %-6s %s" % (a, b, c))

实跑输出:

--------------------------------------------------------------------
描述一段视频,要看哪五个参数
--------------------------------------------------------------------

拿到一段视频,先看这五项,基本就能判断它是什么规格。

  概念           单位     决定什么
  -------------------------------------------
  分辨率         像素     画面的清晰程度
  帧率           fps      动作的流畅程度
  码率           bps      文件大小与画质上限
  时长           秒       总数据量
  关键帧间隔     帧       能不能快速拖动定位

  五项里最容易忽略的是**关键帧间隔**——
  它长一点,文件小;**但要从中途播就得等更久**。

五项里最容易忽略的是关键帧间隔—— 它长一点,文件小;但要从中途播就得等更久。

30 秒实验

  1. 用 ffprobe 读一段视频,把这五项参数各抄一个出来。
  2. 判断它是【点播优化】还是【存档优化】。

常见误区

  1. 把分辨率当成画质的全部。码率不够时,高分辨率反而更糊。
  2. 忽略关键帧间隔。它直接决定拖动播放的体验。
自测三问(点开对答案) 1. 描述视频的五个参数是什么? —— 分辨率、帧率、码率、时长、关键帧间隔。 2. 分辨率和码率的分工是什么? —— 分辨率与帧率决定原始数据量,码率决定压完之后的大小与画质。 3. 关键帧间隔长有什么好处和坏处? —— 好处是文件更小,坏处是拖动定位要从更早的地方开始解。

相关笔记