doc/metadata.texi
a4651511
 @chapter Metadata
 @c man begin METADATA
 
a6be21d3
 FFmpeg is able to dump metadata from media files into a simple UTF-8-encoded
a4651511
 INI-like text file and then load it back using the metadata muxer/demuxer.
 
 The file format is as follows:
 @enumerate
 
 @item
 A file consists of a header and a number of metadata tags divided into sections,
 each on its own line.
 
 @item
ecba41bf
 The header is a @samp{;FFMETADATA} string, followed by a version number (now 1).
a4651511
 
 @item
ecba41bf
 Metadata tags are of the form @samp{key=value}
a4651511
 
 @item
 Immediately after header follows global metadata
 
 @item
 After global metadata there may be sections with per-stream/per-chapter
 metadata.
 
 @item
 A section starts with the section name in uppercase (i.e. STREAM or CHAPTER) in
ecba41bf
 brackets (@samp{[}, @samp{]}) and ends with next section or end of file.
a4651511
 
 @item
 At the beginning of a chapter section there may be an optional timebase to be
ecba41bf
 used for start/end values. It must be in form
 @samp{TIMEBASE=@var{num}/@var{den}}, where @var{num} and @var{den} are
 integers. If the timebase is missing then start/end times are assumed to
a4651511
 be in milliseconds.
ecba41bf
 
a4651511
 Next a chapter section must contain chapter start and end times in form
ecba41bf
 @samp{START=@var{num}}, @samp{END=@var{num}}, where @var{num} is a positive
 integer.
a4651511
 
 @item
ecba41bf
 Empty lines and lines starting with @samp{;} or @samp{#} are ignored.
a4651511
 
 @item
ecba41bf
 Metadata keys or values containing special characters (@samp{=}, @samp{;},
 @samp{#}, @samp{\} and a newline) must be escaped with a backslash @samp{\}.
a4651511
 
 @item
ecba41bf
 Note that whitespace in metadata (e.g. @samp{foo = bar}) is considered to be
 a part of the tag (in the example above key is @samp{foo }, value is
 @samp{ bar}).
a4651511
 @end enumerate
 
 A ffmetadata file might look like this:
 @example
 ;FFMETADATA1
 title=bike\\shed
 ;this is a comment
a6be21d3
 artist=FFmpeg troll team
a4651511
 
 [CHAPTER]
 TIMEBASE=1/1000
 START=0
 #chapter ends at 0:01:00
 END=60000
 title=chapter \#1
 [STREAM]
 title=multi\
 line
 @end example
57655c60
 
 By using the ffmetadata muxer and demuxer it is possible to extract
 metadata from an input file to an ffmetadata file, and then transcode
 the file into an output file with the edited ffmetadata file.
 
 Extracting an ffmetadata file with @file{ffmpeg} goes as follows:
 @example
 ffmpeg -i INPUT -f ffmetadata FFMETADATAFILE
 @end example
 
 Reinserting edited metadata information from the FFMETADATAFILE file can
 be done as:
 @example
 ffmpeg -i INPUT -i FFMETADATAFILE -map_metadata 1 -codec copy OUTPUT
 @end example
 
a4651511
 @c man end METADATA