カラオケは、人気のある楽曲の伴奏だけを再生する音楽システムです。演奏者は通常、ビデオ画面に表示される歌詞に合わせて、歌を生で歌います。この言葉は、その演奏そのものを指すこともあります。
日本語の「カラオケ」という言葉は、「空」を意味する「カラ」と、「オーケストラ」を短くした語が結び付いたものです。つまり、カラオケは文字どおり「空のオーケストラ」という意味です。
メタデータレポートでは、「Karaoke」はより狭い意味を持つフィールド名です。この名前は、FFmpegプロジェクトのファイルリーダーである ffprobe に由来します。
FFmpeg はファイルの各部分を個別のストリームとして扱います。各ストリームには、Karaoke やAttached Pic などのディスポジションと呼ばれるフラグのセットが付きます。FFmpeg のドキュメントでは、このフラグを「そのストリームにはカラオケ音声が含まれる」と簡潔に定義しています。
値の見え方
ffprobe リーダーの -show_streams オプションは、音楽が含まれていないファイルでも、すべてのストリームについてこのフラグを出力します。この出力でフラグが取る値は 2 つです。
0: フラグはオフです1: フラグはオンで、そのストリームがカラオケ音声としてマークされています
具体的な表記はレポート形式によって異なります。JSON レポートでは "karaoke": 0 のように表示され、プレーンテキストレポートでは DISPOSITION:karaoke=0 のように表示されます。
どのファイルがそれを持っているか
FFmpeg はこのフラグを読み書きできる形式と、そうでない形式があります。次の例がその一部です。
- NUT: ストリームは
Dispositionというタグにkaraokeという語を保存できます - MKV: Matroska 仕様には、default、forced、commentary といったフラグはありますが、karaoke フラグはありません
- MP4: FFmpeg の MP4 トラックロール一覧には、karaoke エントリはありません
- AC-3 および E-AC-3 音声: 音声データにサービス種別があり、その値の 1 つがカラオケを意味します
FFmpeg は、音声が 2 チャンネル以上ある場合、そのカラオケのサービス種別をフラグに変換します。これは MKV や MP4 ファイルでも同様です。それ以外の音声形式では、MKV や MP4 ファイル内のストリームは、曲がカラオケバージョンであっても通常は 0 を報告します。
一部のカラオケ楽曲は、独自のファイル形式を使用しています。米国議会図書館は、カラオケ MIDI ファイル用の拡張子として kar を挙げています。
曲の歌詞がどこに保存されているか
Karaoke フラグには、0 または 1 という数値だけが入り、歌詞テキストは含まれません。FFmpeg には、歌詞を含むストリーム用に別の Lyrics フラグがあります。歌詞のテキスト自体は、形式ごとに異なる場所に保存されます。
- MP3: ID3v2 フレーム USLT はタイミング情報なしの歌詞を保持し、SYLT フレームは各音節またはテキスト単位にタイムスタンプを保存します
- MKV: タイミングが不明な場合や、字幕トラックのコピーとして、
LYRICSタグに歌詞テキストが保存されます
値の由来
FFmpeg は各ストリームを作成する際、または後からストリームを解析する際にフラグを設定します。NUT ファイルでは、FFmpeg は Disposition タグからフラグを読み取ります。AC-3 音声では、音声データからサービス種別を読み取ります。
FFmpeg の -disposition オプションを使うと、このフラグを自分で設定できます。デフォルトでは、FFmpeg は入力ストリームのフラグを出力ストリームにコピーします。
コンテナ側でのみ保持されているフラグは、新しい形式がそのフラグを保存できる場合に限り、新しいファイルに引き継がれます。MKV 用の FFmpeg ライターには、このフラグ向けのコードがありません。
それが重要な理由
1 つのファイルに複数の音声ストリームを含めることができ、このフラグによって特定のストリームをカラオケ音声としてマークできます。FFmpeg コマンドでは、ストリームセレクター disp:karaoke を使うと、このフラグを持つストリームだけを選択できます。
このフラグはラベルにすぎないため、実際に聞こえる内容を保証するものではありません。値が 0 であっても、その曲にカラオケバージョンや歌詞が存在しないと証明するものではありません。