FFMPEG文档翻译——FFmpeg实用程序文档


1 描述

本文档描述了libavutil库提供的一些通用功能和实用程序

2 语法

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

2.1 引用与转义

FFMPEG适用以下引用与转义机制,除非明确规定的。以下规则适用:

  • “ ’ ” 和 “\”是特殊字符,他们分别用于应用和转义。除此之外,根据使用转义和应用的特定语法,可能存在其他特殊字符。
  • 一个特定字符通过在其前面加上“\”来进行转义
  • 包含在””之间的所有字符都包含在解析后的字符串中。 引号字符”’本身不能被引用,因此您可能需要关闭引号并将其转义。
  • 从解析后的字符串中删除前导空白和尾随空白,除非已转义或引用。

            请注意,在使用命令行或脚本时,您可能需要添加第二级转义,这取决于采用的shell语言的语法。
           根据上面定义的规则,libavutil / avstring.h中定义的函数av_get_token可用于解析引用或转义的令牌。
            FFmpeg源代码树中的tools/ ffescape工具可用于自动引用或转义脚本中的字符串。

2.1.1、例子

  • 转义包含” ‘ “的字符串” 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

2.2 日期

接受的语法是:

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

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

2.3 时长

有两种用于表示持续时间的可接受语法。

[-][HH:]MM:SS[.m…]

HH表示小时数,MM表示最多2位数的分钟数,SS表示最多2位数的秒数。 最后的m表示SS的十进制值。
或者:

[-]S+[.m…]

S表示秒数,可选小数部分为m。在两个表达式中,可选的’ - ‘表示负的持续时间。

2.3.1 例子

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

‘55’

表示55秒

‘12:03:45’

12 小时, 03 分 45 秒

‘23.189’

23.189秒

2.4 视频大小

指定源视频的大小,它可以是widthxheight形式的字符串,也可以是大小缩写的名称。
以下缩写被认可:

‘ntsc’
720x480

‘pal’
720x576

‘qntsc’
352x240

‘qpal’
352x288

‘sntsc’
640x480

‘spal’
768x576

‘film’
352x240

‘ntsc-film352x240

‘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

‘2kdci’
2048x1080

‘4kdci’
4096x2160

‘uhd2160’
3840x2160

‘uhd4320’
7680x4320

2.5 视频速率

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

‘ntsc’
30000/1001

‘pal’
25/1

‘qntsc’
30000/1001

‘qpal’
25/1

‘sntsc’
30000/1001

‘spal’
25/1

‘film’
24/1

‘ntsc-film24000/1001

2.6 比率

比率可以表达为一个表达式,或者以分子:分母的形式表示。
请注意,无限(1/0)或负值的比率被认为是有效的,因此如果要排除这些值,则应检查返回的值。
未定义的值可以使用“0:0”字符串表示。

2.7 颜色

它可以是下面定义的颜色的名称(不区分大小写匹配)或[0x |#] RRGGBB [AA]序列,可能后跟@和代表alpha分量的字符串。
alpha分量可以是由“0x”后面跟着一个十六进制数字或一个介于0.0和1.0之间的十进制数字组成的字符串,它表示不透明度值(’0x00’或’0.0’表示完全透明,’0xff’或’1.0’ 完全不透明)。 如果未指定alpha分量,则假定为“0xff”。
字符串’random’将导致随机颜色。
以下颜色名称被识别:

‘AliceBlue’
0xF0F8FF

‘AntiqueWhite’
0xFAEBD7

‘Aqua’
0x00FFFF

‘Aquamarine’
0x7FFFD4

‘Azure’
0xF0FFFF

‘Beige’
0xF5F5DC

‘Bisque’
0xFFE4C4Black0x000000

‘BlanchedAlmond’
0xFFEBCDBlue0x0000FF

‘BlueViolet’
0x8A2BE2Brown0xA52A2A

‘BurlyWood’
0xDEB887

‘CadetBlue’
0x5F9EA0

‘Chartreuse’
0x7FFF00

‘Chocolate’
0xD2691E

‘Coral’
0xFF7F50

‘CornflowerBlue’
0x6495ED

‘Cornsilk’
0xFFF8DC

‘Crimson’
0xDC143CCyan0x00FFFF

‘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’
0xDAA520Gray0x808080Green0x008000

‘GreenYellow’
0xADFF2F

‘HoneyDew’
0xF0FFF0

‘HotPink’
0xFF69B4

‘IndianRed’
0xCD5C5C

‘Indigo’
0x4B0082

‘Ivory’
0xFFFFF0

‘Khaki’
0xF0E68C

‘Lavender’
0xE6E6FA

‘LavenderBlush’
0xFFF0F5

‘LawnGreen’
0x7CFC00

‘LemonChiffon’
0xFFFACDLightBlue0xADD8E6

‘LightCoral’
0xF08080LightCyan0xE0FFFF

‘LightGoldenRodYellow’
0xFAFAD2LightGreen0x90EE90

‘LightGrey’
0xD3D3D3LightPink0xFFB6C1

‘LightSalmon’
0xFFA07A

‘LightSeaGreen’
0x20B2AA

‘LightSkyBlue’
0x87CEFA

‘LightSlateGray’
0x778899

‘LightSteelBlue’
0xB0C4DELightYellow0xFFFFE0

‘Lime’
0x00FF00

‘LimeGreen’
0x32CD32

‘Linen’
0xFAF0E6Magenta0xFF00FF

‘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’
0x6B8E23Orange0xFFA500

‘OrangeRed’
0xFF4500

‘Orchid’
0xDA70D6

‘PaleGoldenRod’
0xEEE8AA

‘PaleGreen’
0x98FB98

‘PaleTurquoise’
0xAFEEEE

‘PaleVioletRed’
0xD87093

‘PapayaWhip’
0xFFEFD5

‘PeachPuff’
0xFFDAB9

‘Peru’
0xCD853FPink0xFFC0CB

‘Plum’
0xDDA0DD

‘PowderBlue’
0xB0E0E6Purple0x800080Red0xFF0000

‘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’
0x4682B4Tan0xD2B48C

‘Teal’
0x008080

‘Thistle’
0xD8BFD8

‘Tomato’
0xFF6347

‘Turquoise’
0x40E0D0

‘Violet’
0xEE82EE

‘Wheat’
0xF5DEB3White0xFFFFFF

‘WhiteSmoke’
0xF5F5F5Yellow0xFFFF00

‘YellowGreen’
0x9ACD32

2.8 通道布局

通道布局指定多通道音频流中通道的空间布局。 要指定通道布局,FFmpeg使用特殊的语法。
个人频道由ID标识,如下表所示:

‘FL’
front left

‘FR’
front right

‘FC’
front center

‘LFE’
low frequency

‘BL’
back leftBR’
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 rightDL’
downmix left

‘DR’
downmix right

‘WL’
wide left

‘WR’
wide right

‘SDL’
surround direct left

‘SDR’
surround direct right

‘LFE2’
low frequency 2

Standard channel layout compositions can be specified by using the following identifiers:

‘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

自定义渠道布局可以指定为由’+’或’|’分隔的一系列词语。 每个术语可以是:

  • 标准频道布局的名称(例如“单声道”,“立体声”,“4.0”,“四分之一”,“5.0”等)
  • 单个频道的名称(例如’FL’,’FR’,’FC’,’LFE’等)
  • 以十进制形式显示多个通道,然后显示’c’,从而生成该通道数量的默认通道布局(请参阅函数av_get_default_channel_layout)。 请注意,并非所有通道计数都具有默认布局。
  • 多个通道,以十进制表示,后面跟着“C”,产生具有指定通道数量的未知通道布局。 请注意,并非所有通道布局规格字符串都支持未知通道布局。
  • 一个以“0x”开头的十六进制通道布局掩码(请参阅libavutil / channel_layout.h中的AV_CH_ *宏。

    在libavutil版本53之前,用于指定多个通道的尾随字符“c”是可选的,但是现在它是必需的,而通道布局掩码也可以被指定为十进制数(当且仅当没有跟随“c”或 “C”)。
    另请参阅在libavutil / channel_layout.h中定义的函数av_get_channel_layout。

3 表达评估

在评估算术表达式时,FFmpeg使用内部公式评估器,通过libavutil / eval.h接口实现。
表达式可能包含一元,二元运算符,常量和函数。
两个表达式expr1和expr2可以组合形成另一个表达式“expr1; expr2”。 expr1和expr2依次进行评估,并且新的表达式评估为expr2的值。
以下二元运算符可用:+, - ,*,/,^。
以下一元运算符可用:+, - 。
以下功能可用:

abs(x)

计算x的绝对值。

acos(x)

计算x的反余弦值。

asin(x)

计算x的反正弦值。

atan(x)

计算x的反正切。

atan2(x, y)

计算y / x的反正切值的主值。

between(x, min, max)

如果x大于或等于min且小于或等于max,则返回1,否则返回0。

bitor(x, y)

在x和y上计算按位和/或操作。在执行按位操作之前,将x和y的评估结果转换为整数。请注意,转换为整数并转换回浮点可能会失去精度。 注意大数量的意外结果(通常2 ^ 53和更大)。

ceil(expr)

将表达式expr的值向上舍入到最接近的整数。 例如,“ceil(1.5)”是“2.0”

clip(x, min, max)

返回最小值和最大值之间的x值。

cos(x)

计算x的余弦值。

cosh(x)

计算x的双曲余弦。

eq(x, y)

如果x和y相等,则返回1,否则返回0。

exp(x)

计算x的指数(基数e,欧拉数)。

floor(expr)

将表达式expr的值向下舍入为最接近的整数。 例如,“floor(-1.5)”是“-2.0”。

gauss(x)

计算x的高斯函数,对应于exp(-x * x / 2)/ sqrt(2 * PI)。

gcd(x, y)

返回x和y的最大公约数。 如果x和y都是0或者其中一个或两个都小于零,那么行为是不确定的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值