格式名称是媒体文件容器格式的简短名称。它告诉你 FFmpeg 软件如何称呼你文件的格式。容器是一种文件格式,用来存储一个或多个音频或视频流以及元数据,这样它们就可以一起播放。
格式全名是第二个字段,用更容易理解的词来描述同一种格式。FFmpeg 程序 ffprobe 将这两个字段报告为 format_name 和 format_long_name。
数值的呈现方式
FFmpeg 使用称为解复用器的部分来读取每一种文件。格式名称是该解复用器的简短名称,全名是它的说明。一个解复用器可以读取多个相关格式,所以格式名称可以是用逗号分隔的列表。
这些配对来自 FFmpeg 源代码,前面是格式名称:
- MP4、MOV 和 M4A 文件的
mov,mp4,m4a,3gp,3g2,mj2和QuickTime / MOV - MKV 和 WebM 文件的
matroska,webm和Matroska / WebM - MP3 音频的
mp3和MP2/3 (MPEG audio layer 2/3) - WAV 音频的
wav和WAV / WAVE (Waveform Audio) - MPEG‑2 节目流(扩展名可以是 .mpg)的
mpeg和MPEG-PS (MPEG-2 Program Stream) - PNG 图像的
png_pipe和piped png sequence
有些 FFmpeg 构建版本省略了格式全名。此时全名可能显示为 unknown 或者缺失。
数值的来源
文件本身不会存储它的格式名称。FFmpeg 会读取文件开头,并为它已知的每种格式打分。它会选择得分最高的格式,探测得分字段会显示这个分数。
文件扩展名只在这个测试结果很弱,或某种格式没有测试时才重要。FFmpeg 文档提示,仅凭扩展名猜测格式不够可靠。
为什么一个 MP4 文件会显示 QuickTime
MP4 文件会显示格式名称 mov,mp4,m4a,3gp,3g2,mj2,格式全名为 QuickTime / MOV。这是正常的,并不表示该文件是 MOV 文件。FFmpeg 对 6 种相关格式使用同一个解复用器,因此这些值同样会出现在 MOV、MP4、M4A、3GP、3G2 和 MJ2 文件上。
这些格式彼此相关,是因为 MP4 源自 ISO 基础媒体文件格式,而该格式又源自 QuickTime 文件格式。MP4 和 QuickTime 有关联,但也存在差异,所以它们不能总是互相替代。
这些文件还可以有一个 major_brand 标签。FFmpeg 将值 qt 视为 QuickTime 文件,其他值视为 ISO 基础媒体文件。
哪些文件携带它
格式名称出现在 FFmpeg 可以作为媒体打开的文件上:视频、音频和许多图像格式。如果 ffprobe 无法将文件识别为多媒体文件,它会返回错误,并且没有格式名称。对于这类文件,请查看文件类型字段。
FFmpeg 也会为没有常规容器的文件指定格式名称。例如,一个 MP3 文件就是一串音频帧,通常带有 ID3 标签。
这对你的文件有何影响
高得分优先于文件名,因此格式名称通常能显示文件实际使用的容器。如果一个文件名以 .mp3 结尾,但格式名称是 wav,说明文件以 WAV 头开头。此时文件名就与内容不符。
格式名称并不总能告诉你文件使用了哪些编码格式。编码格式全名描述了容器内某一路流是如何编码的,所以每一路流都有自己的编码格式全名。
例如,一个 MP4 文件可以包含编码为 AVC (H.264)、AV1 或 VP9 的视频,以及编码为 AAC、FLAC 或 Opus 的音频。因此,相同的格式名称可能出现在使用不同编码格式的文件上。