这个章节介绍采用ffmpeg库和工具时的一些语法和格式要求。
ffmpeg采用如下的引用和转义机制,除非明确规定,以下规则都适用:
"'"
和"\"
分别用于(引用和转义)特殊字符。除了它们可能还有其它特殊字符,但这只在特定的语法中有效。"\"
"'"
封闭包含。引号"'"
本身不能被引用,所以你可能需要关闭引用或者转义。注意在使用命令行或者脚本时,你可能需要2级转义,这取决于你shell环境支持的语法。
声明在libavutil/avstring.h
中的函数av_get_token
被用于任务分析中的引用和转义处理。
ffmpeg源码中的工具tools/ffescape
被用于自动处理引用和转义。
Crime d'Amour
中的'
这个特殊字符:Crime d\'Amour
'
需要特殊转义处理'Crime d'\''Amour'
' this string starts and ends with whitespaces '
' The string '\'string\'' is a string '
\
需要引用或者转义'c:\foo' can be written as c:\foo
接受如下的语法:
[(YYYY-MM-DD|YYYYMMDD)[T|t| ]]((HH:MM:SS[.m...]]])|(HHMMSS[.m...]]]))[Z] now
如果值为
now
表示当前时间
时间是本地时间,除非Z
被附加到最后,它表示采用UTC
时间。如果年-月-日没有指定就以当前的年-月-日。
它有两种表示方式:
[-][HH:]MM:SS[.m...]
HH
表示小时数,MM
表示分钟数(最多2位数字)SS
表示秒数(也最多2位数字),m
是SS
的小数位值
[-]S+[.m...]
S
是秒的数值,m
是S
的小数位值。
两种语法前面都可选'-'
号,表示负数持续时间。
下面均是有效持续时间:
指定视频源的尺寸大小,它可以是一些表示特定(预设)尺寸的字符串名或者widthxheight
(其中width和height都是数字值)的字符串
下面是一些预设的表示尺寸的字符串名及其对应分辨率:
指定视频的帧速率,除了用每秒帧数表示外,还可以用frame_rate_num/frame_rate_den
这样的格式字符串表示,此外还有一些预定义的帧率名字符串。
下面就是一些预定义的帧率名及对应的帧率:
numerator.denominator
一样的含小数值。注意比率无限值(1/0)或者负数值被认为是有效的,这里你需要摒弃以往的一些看法。
未定义的值可以用"0:0"字符串表示。
允许采用下面预定义的颜色名或者一个[0x|#]RRGGBB[AA]
这样序列的16进制数字值,可以通过@
来附加透明度表示,透明度分量(alpha)可以是"0x"后面跟一个16进制数或者0到1之间的十进制字符串,它代表不透明度值('0x00'或者'0'表示完全透明,'0xFF'或者'1'表示完全不透明),如果没有专门指定透明分量,则默认为'0XFF'。
'random'字符串会随机一个颜色。
下面是预定义的颜色名以及对应的颜色值:
对于多音频通道的流,一个通道布局可以具体描述其配置情况。为了描述通道布局,ffmpeg采用了一些特殊的语法。
除了可以采用ID标识外,也可以采用下表的预定义:
标准的通道布局可以采用如下的定义:
一个特定的通道布局可以是一组由+
或者|
连接起来多个值,其中每个值可以是:
av-get_default_channel_layout
说明。libavutil/channel_layout.h
中声明的AV_CH_*
宏。从libavutil版本53开始,尾随'c'的十进制数表示通道变成必须(除非采用16进制的蒙版来表示通道)
参考声明于libavutil/channel_layout.h
中的av_get_channel_layout
进行深入了解。