首页 > 其他 > 详细

ffmpeg文档07-语法

时间:2016-02-17 22:15:00      阅读:190      评论:0      收藏:0      [点我收藏+]

7 语法

这个章节介绍采用ffmpeg库和工具时的一些语法和格式要求。

引用与转义(Quoting and escaping)

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位数字),mSS的小数位值

  • [-]S+[.m...]

    S是秒的数值,mS的小数位值。

两种语法前面都可选‘-‘号,表示负数持续时间。

持续时间例子

下面均是有效持续时间:

  • ‘55‘ 表示55秒

  • ‘12:03:45‘ 表示12小时3分钟45秒

  • ‘23.189‘ 表示23.189秒

视频尺寸(分辨率)

指定视频源的尺寸大小,它可以是一些表示特定(预设)尺寸的字符串名或者widthxheight(其中width和height都是数字值)的字符串
下面是一些预设的表示尺寸的字符串名及其对应分辨率:

  • ‘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’ 6400x4096

  • ‘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

视频帧率

指定视频的帧速率,除了用每秒帧数表示外,还可以用frame_rate_num/frame_rate_den这样的格式字符串表示,此外还有一些预定义的帧率名字符串。
下面就是一些预定义的帧率名及对应的帧率:

  • ‘ntsc‘ 30000/1001

  • ‘pal‘ 25/1

  • ‘qpal‘ 25/1

  • ‘sntsc‘ 30000/1001

  • ‘spal‘ 25/1

  • ‘film‘ 24/1

  • ‘ntsc-film‘ 24000/1001

比率

一个比率值可以是一个表达式或者numerator.denominator一样的含小数值。

注意比率无限值(1/0)或者负数值被认为是有效的,这里你需要摒弃以往的一些看法。

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

颜色/Color

允许采用下面预定义的颜色名或者一个[0x|#]RRGGBB[AA]这样序列的16进制数字值,可以通过@来附加透明度表示,透明度分量(alpha)可以是"0x"后面跟一个16进制数或者0到1之间的十进制字符串,它代表不透明度值(‘0x00‘或者‘0‘表示完全透明,‘0xFF‘或者‘1‘表示完全不透明),如果没有专门指定透明分量,则默认为‘0XFF‘。

‘random‘字符串会随机一个颜色。

下面是预定义的颜色名以及对应的颜色值:

  • ‘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

通道布局

对于多音频通道的流,一个通道布局可以具体描述其配置情况。为了描述通道布局,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

一个特定的通道布局可以是一组由+或者|连接起来多个值,其中每个值可以是:

  • 前面的标准通道布局名,例如‘mono‘,‘stereo‘,‘4.0‘,‘quad‘,‘5.0‘等等

  • 或者单个命名通道如‘FL‘,‘FR‘,‘FC‘,‘LFE‘等等

  • 多个通道数字序号,使用后缀‘c‘的十进制,对于利用数字表示的默认通道布局,参考av-get_default_channel_layout说明。

  • 通道布局蒙版(mask),是‘0x‘起始的16进制,参考在libavutil/channel_layout.h中声明的AV_CH_*宏。

从libavutil版本53开始,尾随‘c‘的十进制数表示通道变成必须(除非采用16进制的蒙版来表示通道)

参考声明于libavutil/channel_layout.h中的av_get_channel_layout进行深入了解。

ffmpeg文档07-语法

原文:http://www.cnblogs.com/xdsnet/p/5196481.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!