🎬 第三章 音视频开发常用工具
📄 一句话概括

参数不用全记——只要求【和预期不符的那一项】,符合预期的一眼扫过,对不上的那一行才是问题。

📝 本节和前面几节的关系

3.2.2 讲了怎么用,这一节说输出里各项怎么读。

一、六个必看的参数

Format:容器格式——和扩展名对不上,说明文件被改过后缀。 Codec ID:编码标识——播放器不认,多半卡在这一项。 Bit rate:码率——远高于同规格,说明压得不干净。 Frame rate:帧率——非常规值,可能是变速或抓帧。 Duration:时长——明显偏短,说明文件被截断。 Channels:声道数——只有 1,说明原始就是单声道。

二、怎么读:和预期对比

读参数的诀窍不是【全看懂】,而是看哪一项和你的预期不符。 比如你以为是 1080p,参数显示 854×480——这就是问题所在。 符合预期的参数看一眼就过,对不上的那一行才值得研究。

三、两类最常见的异常

扩展名与 Format 不符:文件被改过后缀,或者下载时改错了名。 总码率明显高于各流之和:说明还有别的数据(比如大段的元信息或广告)。 这两类问题看一遍参数就能发现,不用真的去播放。

四、参数背后的含义

每一行参数背后都是一个工程决定: 码率是质量与成本的取舍;帧率是流畅度与体积的取舍; 采样率是音质与兼容性的取舍。 读参数时多想一句【它为什么选了这个值】——这就是从【会看】到【会判断】的那一步。

五、动手 Demo:几个关键参数,看什么

MediaInfo 参数很多,但排查问题时真正要看的就那么几个。

params = [
    ("Format",     "容器格式", "和扩展名不符=文件被改过后缀"),
    ("Codec ID",   "编码标识", "播放器不认多半卡在这里"),
    ("Bit rate",   "码率",     "远高于同规格=压得不干净"),
    ("Frame rate", "帧率",     "非常规值=可能是变速或抓帧"),
    ("Duration",   "时长",     "明显偏短=文件被截断"),
    ("Channels",   "声道数",   "只有 1 =原始就是单声道"),
]
for name, mean, bad in params:
    print("%-11s %-9s %s" % (name, mean, bad))

实跑输出:

--------------------------------------------------------------------
几个关键参数,看什么
--------------------------------------------------------------------

MediaInfo 参数很多,但排查问题时真正要看的就那么几个。

  参数           含义         异常时说明什么
  ---------------------------------------------------------
  Format         容器格式     和扩展名不符=文件被改过后缀
  Codec ID       编码标识     播放器不认多半卡在这里
  Bit rate       码率         远高于同规格=压得不干净
  Frame rate     帧率         非常规值=可能是变速或抓帧
  Duration       时长         明显偏短=文件被截断
  Channels       声道数       只有 1 =原始就是单声道

  看参数的诀窍:**不要求全,要求【和预期不符的那一项】**。
  符合预期的参数看一眼就过,**对不上的那一行才是问题所在。**

读参数的诀窍:不要求全,要求【和预期不符的那一项】。 符合预期的一眼扫过,对不上的那一行才是问题所在。

30 秒实验

  1. 拿一个文件,先写下你以为的四个参数(分辨率、帧率、码率、声道)。
  2. 再用 MediaInfo 读一遍,看有几项和你以为的不一样。

常见误区

  1. 想把每个参数都背下来。只用看和预期不符的那一项。
  2. 忽略扩展名与 Format 不符。那是文件被改过的最直接证据。
自测三问(点开对答案) 1. 六个必看的参数是哪些? —— Format、Codec ID、Bit rate、Frame rate、Duration、Channels。 2. 读参数的正确方法是什么? —— 和预期对比,只关注对不上的那一项。 3. 总码率明显高于各流之和说明什么? —— 文件里还有别的数据,比如大段元信息或附加内容。

相关笔记