フォーマット名は、メディアファイルのコンテナフォーマットの短い名称です。FFmpeg ソフトウェアがそのファイル形式をどのように呼ぶかを示します。コンテナとは、1つ以上の音声または動画ストリームとメタデータをまとめて保存し、一緒に再生できるようにするファイル形式のことです。
フォーマット長名称は、同じフォーマットをより分かりやすい言葉で説明するための第2のフィールドです。FFmpeg のプログラムである ffprobe は、この2つのフィールドを format_name と format_long_name として出力します。
値の見え方
FFmpeg は、各種のファイルを「デマルチプレクサ(demuxer)」と呼ばれる部分で読み込みます。フォーマット名はそのデマルチプレクサの短い名称であり、長名称はその説明です。1つのデマルチプレクサが複数の関連フォーマットを読み取れるため、フォーマット名がコンマ区切りの一覧になる場合があります。
次の組み合わせは 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) - 拡張子が .mpg の場合もある MPEG-2 プログラムストリームでは
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つの関連フォーマットに対して1つのデマルチプレクサを使うため、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 ヘッダーから始まっています。この場合、ファイル名は実際の内容と一致していません。
フォーマット名だけでは、そのファイルで使用されているコーデックが分からない場合があります。コーデック長名称は、コンテナ内の1つのストリームがどのようにエンコードされているかを説明するもので、ストリームごとに個別の値があります。
たとえば MP4 ファイルには、動画として AVC (H.264)、AV1、VP9 を、音声として AAC、FLAC、Opus を格納できます。そのため、同じフォーマット名であっても、異なるコーデックを使ったファイルに表示される場合があります。