1 メタデータ

Libav はメディアファイルからメタデータを INI のような単純な UTF-8 エンコード されたテキストファイルにダンプすることができ、そしてそれをメタデータ muxer/demuxer を使ってロードすることができます。

このファイルフォーマットは次のようなものです:

  1. 1つのヘッダと、各々1つの行になるセクションに分けられるメタデータタグ(複数) からなります。
  2. ヘッダは ’;FFMETADATA’ という文字列と、それに続く1つのバージョン番号(現在は1) です。
  3. メタデータタグは ’key=value’ という形です。
  4. ヘッダの直後にグローバルメタデータが続きます。
  5. グローバルメタデータの後に per-stream/per-chapter メタデータとともに セクションがある場合があります。
  6. セクションはブラケット(’[’、’]’)で囲まれた大文字でのセクションの名前 (例えば STREAM または CHAPTER)で始まり、次のセクションもしくは EOF で終わります。
  7. chapter セクションの最初には、開始/終了の値のために用いられる省略可能な タイムベースがあります。これは ’TIMEBASE=num/den’ という形でなくてはならず、 ただし num とden は整数です。タイムベースがない場合には開始/終了の時刻は ミリ秒と仮定されます。 次に chapter セクションは開始および終了の時刻を ’START=num’、’END=num’ という形で含まなければなりません。ただし num は正の整数です。
  8. 空行、および ’;’ もしくは ’#’ で始まる行は無視されます。
  9. メタデータのキーまたは値に含まれる特殊な文字(’=’、’;’、’#’、’\’ および改行)は バックスラッシュ ’\’ でエスケープしなければなりません。
  10. メタデータの中の空白文字(例えば、foo = bar)はタグの一部と見なされます (この例ではキーが ’foo ’ で値が ’ bar’ です)。

ffmetadata ファイルはこのような感じです:

;FFMETADATA1
title=bike\\shed
;this is a comment
artist=Libav troll team

[CHAPTER]
TIMEBASE=1/1000
START=0
#chapter ends at 0:01:00
END=60000
title=chapter \#1
[STREAM]
title=multi\
line