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