前言
14.元数据
FFmpeg
能够将媒体文件中的元数据转储为简单的UTF-8
编码的类似INI
的文本文件,然后使用元数据复用器/解复用器将其加载回来。
文件格式如下:
1.一个文件由一个标题和许多元数据标签组成,这些标签分为几个部分,每个部分都在各自的行上。
2.标题是FFMETADATA
字符串,后跟版本号(现在为1)。
3.元数据标签的形式为key = value
。
4.在标题跟随全局元数据之后。
5.在全局元数据之后,可能存在具有每个流/每章元数据的部分。
6.部分以括号('[',']'
)中的大写部分名称(即STREAM
或CHAPTER
)开头,以下一部分或文件结尾结束。
7.在章节开头,可能有一个可选的时基用于开始/结束值。它必须是TIMEBASE = num / den
形式,其中num
和den
是整数。如果缺少时基,则假定开始/结束时间以毫秒为单位。
接下来章节部分必须包含START = num
,END = num
形式的章节开始和结束时间,其中num
是正整数。
8.以;
或#
开头的空行和行将被忽略。
9.包含特殊字符(=
,;
,#
,\
和换行符)的元数据键或值必须使用反斜杠\
进行转义。
10.请注意,元数据中的空格(例如foo = bar
)被认为是标记的一部分(在上面的示例中,键是foo
,值是bar
)。
ffmetadata
文件可能如下所示:
;FFMETADATA1
title=bike\\shed
;this is a comment
artist=FFmpeg troll team
[CHAPTER]
TIMEBASE=1/1000
START=0
#chapter ends at 0:01:00
END=60000
title=chapter \#1
[STREAM]
title=multi\
line
通过使用ffmetadata muxer
和demuxer
,可以将元数据从输入文件提取到ffmetadata
文件,然后使用编辑的ffmetadata
文件将文件转码为输出文件。
使用ffmpeg
提取ffmetadata
文件如下:
ffmpeg -i INPUT -f ffmetadata FFMETADATAFILE
从FFMETADATAFILE
文件重新插入已编辑的元数据信息可以完成如下:
ffmpeg -i INPUT -i FFMETADATAFILE -map_metadata 1 -codec copy OUTPUT
15.协议选项
libavformat
库提供了一些通用的全局选项,可以在所有协议上设置。 此外,每个协议可以支持所谓的私有选项,这些选项特定于该组件。
可以通过在FFmpeg
工具中指定-option
值,或通过在AVFormatContext
选项中显式设置值或使用libavutil / opt.h``API
进行编程来设置选项。
支持的选项列表如下:
protocol_whitelist list(input)
设置,
-
允许的协议的分隔列表。 ALL
匹配所有协议。 以-
为前缀的协议被禁用。 默认情况下允许所有协议,但另一个协议(嵌套协议)使用的协议仅限于每个协议子集。