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

前言

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

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)。

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,233评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,013评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,030评论 0 241
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,827评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,221评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,542评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,814评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,513评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,225评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,497评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,998评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,342评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,986评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,055评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,812评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,560评论 2 271
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,461评论 2 266