FFPlay专辑

FFplay文档解读-2-语法详解

2018-11-15  本文已影响21人  张芳涛

前言

Github地址:Github
简书地址:简书
专辑地址:FFplay专辑

4.语法

本节介绍FFmpeg库和工具使用的语法和格式。

4.1引用和转义

FFmpeg采用以下引用和转义机制,除非明确指定。 适用以下规则:

请注意,在使用命令行或脚本时,可能需要添加第二级转义,这取决于所采用的shell语言的语法。

'libavutil / avstring.h'中定义的函数av_get_token可用于根据上面定义的规则解析引用或转义的标记。

FFmpeg源代码树中的工具“tools / ffescape”可用于自动引用或转义脚本中的字符串。

4.1.1示例

示例代码
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

4.2 日期

语法如下:

[(YYYY-MM-DD|YYYYMMDD)[T|t| ]]((HH:MM:SS[.m...]]])|(HHMMSS[.m...]]]))[Z]
now

如果值为now,则需要当前时间。

除非附加Z,否则时间是本地时间,在这种情况下,它被解释为UTC。 如果未指定年 - 月 - 日部分,则需要当前的年 - 月 - 日。

4.3持续时间

表达持续时间有两种可行的语法:

语法 描述
[-][HH:]MM:SS[.m...] HH表示小时数,MM表示最多2位数的分钟数,SS表示最多2位数的秒数。 最后的m表示SS的十进制值。
[-]S+[.m...] S表示秒数,可选小数部分为m。

在两个表达式中,可选的-表示负持续时间。

4.3.1例子

以下示例均为有效持续时间:

时间 解释
‘55’ 55
‘12:03:45’ 12小时0345
‘23.189’ 23.189

4.4 Video size

指定源视频的大小,它可以是width x height形式的字符串,也可以是size缩写的名称。

ffplay识别下面的缩写:

缩写 解释
‘ntsc’ 720x480
‘pal’ 720x576
‘qntsc’ 352x240
‘qpal’ 352x288
‘sntsc’ 640x480
‘spal’ 768x576
‘film’ 352x240
‘ntsc-film’ 352x240
‘sqcif’ 128x96
‘qcif’ 176x144
‘cif’ 352x288
‘4cif’ 704x576
‘16cif’ 1408x1152
‘qqvga’ 160x120
‘qvga’ 320x240
‘vga’ 640x480
‘svga’ 800x600
‘xga’ 1024x768
‘uxga’ 1600x1200
‘qxga’ 2048x1536
‘sxga’ 1280x1024
‘qsxga’ 2560x2048
‘hsxga’ 5120x4096
‘wvga’ 852x480
‘wxga’ 1366x768
‘wsxga’ 1600x1024
‘wuxga’ 1920x1200
‘woxga’ 2560x1600
‘wqsxga’ 3200x2048
‘wquxga’ 3840x2400
‘whsxga’ whsxga
‘whuxga’ 7680x4800
‘cga’ 320x200
‘ega’ 640x350
‘hd480’ 852x480
‘hd720’ 1280x720
‘hd1080’ 1920x1080
‘2k’ 2048x1080
‘2kflat’ 1998x1080
‘2kscope’ 2048x858
‘4k’ 4096x2160
‘4kflat’ 3996x2160
‘4kscope’ 4096x1716
‘nhd’ 640x360
‘hqvga’ 240x160
‘wqvga’ 400x240
‘fwqvga’ 432x240
‘hvga’ 480x320
‘qhd’ 960x540
‘2kdci’ 2048x1080
‘4kdci’ 4096x2160
‘uhd2160’ 3840x2160
‘uhd4320’ 7680x4320

4.5 Video rate

指定视频的帧速率,表示为每秒生成的帧数。 它必须是frame_rate_num / frame_rate_den格式的字符串,整数,浮点数或有效视频帧速率缩写。

ffplay识别如下缩写:

缩写 含义
‘ntsc’ 30000/1001
‘pal’ 25/1
‘qntsc’ 30000/1001
‘qpal’ 25/1
‘sntsc’ 30000/1001
‘spal’ 25/1
‘film’ 24/1
‘ntsc-film’ 24000/1001

4.6比率

比率可以表达为表达式,或者以分子分母的形式表示。

请注意,具有无限(1/0)或负值的比率被视为有效,因此如果要排除这些值,则应检查返回的值。

未定义的值可以使用0:0字符串表示。

4.7 Color

它可以是下面定义的颜色名称(不区分大小写匹配)或[0x |#] RRGGBB [AA]序列,可能后跟@和表示alpha分量的字符串。

alpha分量可以是由0x后跟十六进制数字或介于0.01.0之间的十进制数字组成的字符串,表示不透明度值('0x00''0.0'表示完全透明,'0xff''1.0' 完全不透明的)。 如果未指定alpha分量,则假定为'0xff'

字符串'random'将产生随机颜色。

ffplay识别如下颜色名称:

名称 颜色值
‘AliceBlue’ 0xF0F8FF
‘AntiqueWhite’ 0xFAEBD7
‘Aqua’ 0x00FFFF
‘Aquamarine’ 0x7FFFD4
‘Azure’ 0xF0FFFF
‘Beige’ 0xF5F5DC
‘Bisque’ 0xFFE4C4
‘Black’ 0x000000
‘BlanchedAlmond’ 0xFFEBCD
‘Blue’ 0x0000FF
‘BlueViolet’ 0x8A2BE2
‘Brown’ 0xA52A2A
‘BurlyWood’ 0xDEB887
‘CadetBlue’ 0x5F9EA0
‘Chartreuse’ 0x7FFF00
‘Chocolate’ 0xD2691E
‘Coral’ 0xFF7F50
‘CornflowerBlue’ 0x6495ED
‘Cornsilk’ 0xFFF8DC
‘Crimson’ 0xDC143C
‘Cyan’ 0x00FFFF
‘DarkBlue’ 0x00008B
‘DarkCyan’ 0x008B8B
‘DarkGoldenRod’ 0xB8860B
‘DarkGray’ 0xA9A9A9
‘DarkGreen’ 0x006400
‘DarkKhaki’ 0xBDB76B
‘DarkMagenta’ 0x8B008B
‘DarkOliveGreen’ 0x556B2F
‘Darkorange’ 0xFF8C00
‘DarkOrchid’ 0x9932CC
‘DarkRed’ 0x8B0000
‘DarkSalmon’ 0xE9967A
‘DarkSeaGreen’ 0x8FBC8F
‘DarkSlateBlue’ 0x483D8B
‘DarkSlateGray’ 0x2F4F4F
‘DarkTurquoise’ 0x00CED1
‘DarkViolet’ 0x9400D3
‘DeepPink’ 0xFF1493
‘DeepSkyBlue’ 0x00BFFF
‘DimGray’ 0x696969
‘DodgerBlue’ 0x1E90FF
‘FireBrick’ 0xB22222
‘FloralWhite’ 0xFFFAF0
‘ForestGreen’ 0x228B22
‘Fuchsia’ 0xFF00FF
‘Gainsboro’ 0xDCDCDC
‘GhostWhite’ 0xF8F8FF
‘Gold’ 0xFFD700
‘GoldenRod’ 0xDAA520
‘Gray’ 0x808080
‘Green’ 0x008000
‘GreenYellow’ 0xADFF2F
‘HoneyDew’ 0xF0FFF0
‘HotPink’ 0xFF69B4
‘IndianRed’ 0xCD5C5C
‘Indigo’ 0x4B0082
‘Ivory’ 0xFFFFF0
‘Khaki’ 0xF0E68C
‘Lavender’ 0xE6E6FA
‘LavenderBlush’ 0xFFF0F5
‘LawnGreen’ 0x7CFC00
‘LemonChiffon’ 0xFFFACD
‘LightBlue’ 0xADD8E6
‘LightCoral’ 0xF08080
‘LightCyan’ 0xE0FFFF
‘LightGoldenRodYellow’ 0xFAFAD2
‘LightGreen’ 0x90EE90
‘LightGrey’ 0xD3D3D3
‘LightPink’ 0xFFB6C1
‘LightSalmon’ 0xFFA07A
‘LightSeaGreen’ 0x20B2AA
‘LightSkyBlue’ 0x87CEFA
‘LightSlateGray’ 0x778899
‘LightSteelBlue’ 0xB0C4DE
‘LightYellow’ 0xFFFFE0
‘Lime’ 0x00FF00
‘LimeGreen’ 0x32CD32
‘Linen’ 0xFAF0E6
‘Magenta’ 0xFF00FF
‘Maroon’ 0x800000
‘MediumAquaMarine’ 0x66CDAA
‘MediumBlue’ 0x0000CD
‘MediumOrchid’ 0xBA55D3
‘MediumPurple’ 0x9370D8
‘MediumSeaGreen’ 0x3CB371
‘MediumSlateBlue’ 0x7B68EE
‘MediumSpringGreen’ 0x00FA9A
‘MediumTurquoise’ 0x48D1CC
‘MediumVioletRed’ 0xC71585
‘MidnightBlue’ 0x191970
‘MintCream’ 0xF5FFFA
‘MistyRose’ 0xFFE4E1
‘Moccasin’ 0xFFE4B5
‘NavajoWhite’ 0xFFDEAD
‘Navy’ 0x000080
‘OldLace’ 0xFDF5E6
‘Olive’ 0x808000
‘OliveDrab’ 0x6B8E23
‘Orange’ 0xFFA500
‘OrangeRed’ 0xFF4500
‘Orchid’ 0xDA70D6
‘PaleGoldenRod’ 0xEEE8AA
‘PaleGreen’ 0x98FB98
‘PaleTurquoise’ 0xAFEEEE
‘PaleVioletRed’ 0xD87093
‘PapayaWhip’ 0xFFEFD5
‘PeachPuff’ 0xFFDAB9
‘Peru’ 0xCD853F
‘Pink’ 0xFFC0CB
‘Plum’ 0xDDA0DD
‘PowderBlue’ 0xB0E0E6
‘Purple’ 0x800080
‘Red’ 0xFF0000
‘RosyBrown’ 0xBC8F8F
‘RoyalBlue’ 0x4169E1
‘SaddleBrown’ 0x8B4513
‘Salmon’ 0xFA8072
‘SandyBrown’ 0xF4A460
‘SeaGreen’ 0x2E8B57
‘SeaShell 0xFFF5EE
‘Sienna’ 0xA0522D
‘Silver’ 0xC0C0C0
‘SkyBlue’ 0x87CEEB
‘SlateBlue’ 0x6A5ACD
‘SlateGray’ 0x708090
‘Snow’ 0xFFFAFA
‘SpringGreen’ 0x00FF7F
‘SteelBlue’ 0x4682B4
‘Tan’ 0xD2B48C
‘Teal’ 0x008080
‘Thistle’ 0xD8BFD8
‘Tomato’ 0xFF6347
‘Turquoise’ 0x40E0D0
‘Violet’ 0xEE82EE
‘Wheat’ 0xF5DEB3
‘White’ 0xFFFFFF
‘WhiteSmoke’ 0xF5F5F5
‘Yellow’ 0xFFFF00
‘YellowGreen’ 0x9ACD32

4.8 Channel Layout

通道布局指定多通道音频流中通道的空间布置。 要指定通道布局,FFmpeg使用特殊语法。

各个频道由id标识,如下表所示:

解释
‘FL’ front left
‘FR’ front right
‘FC’ front center
‘LFE’ low frequency
‘BL’ back left
‘BR’ back right
‘FLC’ front left-of-center
‘FRC’ front right-of-center
‘BC’ back center
‘SL’ side left
‘SR’ side right
‘TC’ top center
‘TFL’ top front left
‘TFC’ top front center
‘TFR’ top front right
‘TBL’ top back left
‘TBC’ top back center
‘TBR’ top back right
‘DL’ downmix left
‘DR’ downmix right
‘WL’ wide left
‘WR’ wide right
‘SDL’ surround direct left
‘SDR’ surround direct right
‘LFE2’ low frequency 2

可以使用以下标识符指定标准通道布局组合:

解释
‘mono’ FC
‘stereo’ FL+FR
‘2.1’ FL+FR+LFE
‘3.0’ FL+FR+FC
‘3.0(back)’ FL+FR+BC
‘4.0’ FL+FR+FC+BC
‘quad’ FL+FR+BL+BR
‘quad(side)’ FL+FR+SL+SR
‘3.1’ FL+FR+FC+LFE
‘5.0’ FL+FR+FC+BL+BR
‘5.0(side)’ FL+FR+FC+SL+SR
‘4.1’ FL+FR+FC+LFE+BC
‘5.1’ FL+FR+FC+LFE+BL+BR
‘5.1(side)’ FL+FR+FC+LFE+SL+SR
‘6.0’ FL+FR+FC+BC+SL+SR
‘6.0(front)’ FL+FR+FLC+FRC+SL+SR
‘hexagonal’ FL+FR+FC+BL+BR+BC
‘6.1’ FL+FR+FC+LFE+BC+SL+SR
‘6.1’ FL+FR+FC+LFE+BL+BR+BC
‘6.1(front)’ FL+FR+LFE+FLC+FRC+SL+SR
‘7.0’ FL+FR+FC+BL+BR+SL+SR
‘7.0(front)’ FL+FR+FC+FLC+FRC+SL+SR
‘7.1’ FL+FR+FC+LFE+BL+BR+SL+SR
‘7.1(wide)’ FL+FR+FC+LFE+BL+BR+FLC+FRC
‘7.1(wide-side)’ FL+FR+FC+LFE+FLC+FRC+SL+SR
‘octagonal’ FL+FR+FC+BL+BR+BC+SL+SR
‘downmix’ DL+DR

libavutil版本53之前,指定多个通道的尾随字符c是可选的,但现在它是必需的,而通道布局掩码也可以指定为十进制数字(当且仅当没有后跟cC)。

另请参阅'libavutil / channel_layout.h'中定义的函数av_get_channel_layout

上一篇 下一篇

猜你喜欢

热点阅读