メタデータ
*****

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