搜索
 找回密码
 立即注册

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

雨泉音视频开发 2022-11-8 22:01:19 61

4.语法

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

4.1引用和转义

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

  • '\是特殊字符(分别用于引用和转义)。 除了它们之外,根据使用转义和引用的特定语法,可能还有其他特殊字符。
  • 通过在前面添加\来转义特殊字符。
  • 包含在''之间的所有字符都包含在解析后的字符串中。 引号字符'本身不能引用,因此可能需要关闭引号并将其转义。
  • 除非转义或引用,否则将从解析后的字符串中删除前导和尾随空格。

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

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

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

4.1.1示例

  • 转义字符串Crime d'Amou包含特殊字符'
示例代码
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
  • 自定义通道布局可以指定为一系列术语,以+|分隔。 每个term可以如下所示:
  • 标准频道布局的名称(例如'mono''stereo''4.0''quad''5.0'等)。
  • 单个频道的名称(例如'FL''FR''FC''LFE'等)。
  • 多个通道,十进制,后跟C,产生该通道数的默认通道布局(参见函数av_get_default_channel_layout)。 请注意,并非所有通道计数都具有默认布局。
  • 多个通道,十进制,后跟C,产生具有指定通道数的未知通道布局。 请注意,并非所有通道布局规范字符串都支持未知的通道布局。
  • 通道布局掩码,以十六进制开头,以0x开头(参见'libavutil / channel_layout.h'中的AV_CH_ *macros)。

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

作者:张芳涛 链接:https://www.jianshu.com/p/f5812b2dc2de 来源:简书 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

使用道具 举报

随机推荐

0 回复

游客
返回顶部