词典

什么是编解码器标签?

你可能知道什么是编解码器,但你了解编解码标签吗?了解如何读取视频的编解码标签,以及如何根据它找到实际使用的编解码器。

codec-tag

Codec 标签是存储在视频或音频文件中的一个简短代码,用来标明其内容使用了哪种编码格式。它与编解码器名称的信息相同,只是用数字而不是单词来表示。

编解码器标记的来源

你可以在视频和音频文件中找到它,尤其是在 MP4、MOV 和 M4A 系列,以及较旧的 AVI 和 WAV 文件中。它由对文件进行编码的程序在创建文件时自动写入。没人会手动输入它,它本身也无法进行有意义的编辑:它是一个必须与其后面的数据匹配的标签。

并非所有容器都会使用标签。Matroska 和 WebM 文件则通过名称标识其编码格式,因此在这些文件中,标签为空并显示为 0x0000。

该数值的格式

该值是一个用十六进制表示的数字,这是一种使用数字 0 到 9 和字母 a 到 f 来书写数字的方式。前面的 0x 只是一个标记,表示这是十六进制数。典型的值有 0x31637661、0x7634706d 和 0x0000。

这些数字大多是 FOURCC,即四字符代码。这是一种把四个字母或数字打包成一个数字的方式,由 Microsoft 引入,用于给视频流打标签,至今仍被 MP4 系列使用。你可以手动将其转换回来:把这个数字拆成四组两位十六进制数,并将每一组读取为一个字符:

  • 0x31 = 1
  • 0x63 = c
  • 0x76 = v
  • 0x61 = a

这四个字符是倒序存储的,因此 0x31637661 读作 avc1,这是 MP4 文件中 H.264 视频使用的标签。对 0x7634706d 使用相同的方法得到 v、4、p、m,倒过来就是 mp4v。许多报告会帮你省去这些计算,在数字旁边的第二行打印出可读形式。

AVI 和 WAV 文件中的音频是个例外。在那里,标签不是四个字符,而是一个较小的 Microsoft 音频格式编号,所以你会看到像 0x0001 这样的短值,它代表未压缩的 PCM 音频。

它的重要性

播放器或设备在打开文件时,首先查看的字段之一就是这个标签,因此它是一个兼容性字段。同样的视频数据,根据放入哪个容器中,可以使用不同的标签进行标记,而只识别其中一种标签的播放器会拒绝该文件,即使正确的解码器已经安装。这就是为什么对比能正常播放和无法播放的文件的 Codec 标签,是快速缩小回放问题范围的一种方法,特别是在电视、车载音响和其他固定功能设备上。

它还能确认你实际拥有的内容。文件名可以随便起,但标签由编码器写入,用来描述真实内容。它不包含关于你、地点或设备的任何信息。