⚠️ 这是一个非官方翻译网站,与 FFmpeg 项目无关。准确信息请参阅原文(https://ffmpeg.org/ffmpeg-utils.html)

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

如果值为 "now",则使用当前时间。

除非附加 Z,否则时间按本地时间处理;附加 Z 时则按 UTC 解释。如果未指定年月日部分,则使用当前的年月日。

2.3 时长

表示时长时接受两种语法。

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

HH 表示小时数,MM 表示分钟数(最多 2 位数字),SS 表示秒数(最多 2 位数字)。末尾的 m 表示 SS 的小数部分。

[-]S+[.m...][s|ms|us]

S 表示秒数,可选的小数部分为 m。可选的字面后缀 ‘s’、‘ms’ 或 ‘us’ 分别表示将该值解释为秒、毫秒或微秒。

在这两种表达方式中,可选的 ‘-’ 都表示负的时长。

2.3.1 示例

以下示例都是有效的时长:

‘55’

55 秒

‘0.2’

0.2 秒

‘200ms’

200 毫秒,即 0.2 秒

‘200000us’

200000 微秒,即 0.2 秒

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

‘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-film’

24000/1001

2.6 比率

比率可以用表达式表示,也可以用 numerator:denominator 的形式表示。

注意,值为无穷大(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’

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

2.8 声道布局

声道布局用于指定多声道音频流中各声道的空间排列方式。为了指定声道布局,FFmpeg 使用了一种专门的语法。

各个声道由下表给出的 id 标识:

‘FL’

前左

‘FR’

前右

‘FC’

前中

‘LFE’

低频

‘BL’

后左

‘BR’

后右

‘FLC’

前中偏左

‘FRC’

前中偏右

‘BC’

后中

‘SL’

侧左

‘SR’

侧右

‘TC’

顶中

‘TFL’

顶前左

‘TFC’

顶前中

‘TFR’

顶前右

‘TBL’

顶后左

‘TBC’

顶后中

‘TBR’

顶后右

‘DL’

下混左

‘DR’

下混右

‘WL’

宽左

‘WR’

宽右

‘SDL’

环绕直达左

‘SDR’

环绕直达右

‘LFE2’

低频 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

‘3.1.2’

FL+FR+FC+LFE+TFL+TFR

‘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

‘5.1.2’

FL+FR+FC+LFE+BL+BR+TFL+TFR

‘octagonal’

FL+FR+FC+BL+BR+BC+SL+SR

‘cube’

FL+FR+BL+BR+TFL+TFR+TBL+TBR

‘5.1.4’

FL+FR+FC+LFE+BL+BR+TFL+TFR+TBL+TBR

‘7.1.2’

FL+FR+FC+LFE+BL+BR+SL+SR+TFL+TFR

‘7.1.4’

FL+FR+FC+LFE+BL+BR+SL+SR+TFL+TFR+TBL+TBR

‘7.2.3’

FL+FR+FC+LFE+BL+BR+SL+SR+TFL+TFR+TBC+LFE2

‘9.1.4’

FL+FR+FC+LFE+BL+BR+FLC+FRC+SL+SR+TFL+TFR+TBL+TBR

‘9.1.6’

FL+FR+FC+LFE+BL+BR+FLC+FRC+SL+SR+TFL+TFR+TBL+TBR+TSL+TSR

‘hexadecagonal’

FL+FR+FC+BL+BR+BC+SL+SR+WL+WR+TBL+TBR+TBC+TFC+TFL+TFR

‘binaural’

BIL+BIR

‘downmix’

DL+DR

‘22.2’

FL+FR+FC+LFE+BL+BR+FLC+FRC+BC+SL+SR+TC+TFL+TFC+TFR+TBL+TBC+TBR+LFE2+TSL+TSR+BFC+BFL+BFR

自定义声道布局可以指定为一系列用 ’+’ 分隔的项。每一项可以是:

  • 单个声道的名称(例如 ‘FL’、‘FR’、‘FC’、‘LFE’ 等),并且都可以在 ’@’ 之后附加一个自定义名称(例如 ‘FL@Left’、‘FR@Right’、‘FC@Center’、‘LFE@Low_Frequency’ 等)

标准声道布局可以通过以下方式指定:

  • 单个声道的名称(例如 ‘FL’、‘FR’、‘FC’、‘LFE’ 等)
  • 标准声道布局的名称(例如 ‘mono’、‘stereo’、‘4.0’、‘quad’、‘5.0’ 等)
  • 十进制的声道数后跟 ’c’,得到该声道数对应的默认声道布局(参见函数 av_channel_layout_default)。请注意,并非所有声道数都有默认布局。
  • 十进制的声道数后跟 ’C’,得到具有指定声道数的未知声道布局。请注意,并非所有声道布局指定字符串都支持未知声道布局。
  • 以 "0x" 开头的十六进制声道布局掩码(参见 libavutil/channel_layout.h 中的 AV_CH_* 宏)。

在 libavutil 版本 53 之前,用于指定声道数的末尾字符 "c" 是可选的,但现在是必需的;同时,声道布局掩码也可以用十进制数指定(当且仅当其后不跟 "c" 或 "C" 时)。

另请参见 libavutil/channel_layout.h 中定义的函数 av_channel_layout_from_string

3 表达式求值

在对算术表达式求值时,FFmpeg 使用内部的公式求值器,该求值器通过 libavutil/eval.h 接口实现。

表达式可以包含一元运算符、二元运算符、常量和函数。

两个表达式 expr1 和 expr2 可以组合成另一个表达式 "expr1;expr2"。expr1 和 expr2 会依次求值,新表达式的值即为 expr2 的值。

可用的二元运算符如下:+-*/^

可用的一元运算符如下:+-

可以使用一些内部变量来存储和读取中间结果。可通过 ldst 函数访问这些变量,并用一个取值范围为 0 到 9 的索引参数指定要访问的内部变量。

可用的函数如下:

abs(x)

计算 x 的绝对值。

acos(x)

计算 x 的反余弦。

asin(x)

计算 x 的反正弦。

atan(x)

计算 x 的反正切。

atan2(y, x)

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

between(x, min, max)

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

bitand(x, y) bitor(x, y)

计算 x 和 y 的按位与/或运算。

在执行按位运算之前,x 和 y 的求值结果会被转换为整数。

请注意,转换为整数以及再转换回浮点数都可能损失精度。对于较大的数值(通常为 2^53 及以上),要留意可能出现的意外结果。

ceil(expr)

将表达式 expr 的值向上舍入到最接近的整数。例如,"ceil(1.5)" 的结果为 "2.0"。

clip(x, min, max)

返回将 x 限制在 min 和 max 之间的值。

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,或其中一个或两个小于零,则行为未定义。

gt(x, y)

如果 x 大于 y,则返回 1,否则返回 0。

gte(x, y)

如果 x 大于或等于 y,则返回 1,否则返回 0。

hypot(x, y)

此函数与同名的 C 函数类似;它返回 "sqrt(xx + yy)",即以长度为 x 和 y 的两条直角边构成的直角三角形的斜边长度,或点 (x, y) 到原点的距离。

if(x, y)

对 x 求值,如果结果非零,则返回 y 的求值结果,否则返回 0。

if(x, y, z)

对 x 求值,如果结果非零,则返回 y 的求值结果,否则返回 z 的求值结果。

ifnot(x, y)

对 x 求值,如果结果为零,则返回 y 的求值结果,否则返回 0。

ifnot(x, y, z)

对 x 求值,如果结果为零,则返回 y 的求值结果,否则返回 z 的求值结果。

isinf(x)

如果 x 为 +/-INFINITY,则返回 1.0,否则返回 0.0。

isnan(x)

如果 x 为 NAN,则返回 1.0,否则返回 0.0。

ld(idx)

读取索引为 idx 的内部变量的值,该值此前由 st(idx, expr) 存储。此函数返回读取到的值。

lerp(x, y, z)

按 z 的比例返回 x 和 y 之间的线性插值。

log(x)

计算 x 的自然对数。

lt(x, y)

如果 x 小于 y,则返回 1,否则返回 0。

lte(x, y)

如果 x 小于或等于 y,则返回 1,否则返回 0。

max(x, y)

返回 x 和 y 中的较大值。

min(x, y)

返回 x 和 y 中的较小值。

mod(x, y)

计算 x 除以 y 的余数。

not(expr)

如果 expr 为零,则返回 1.0,否则返回 0.0。

pow(x, y)

计算 x 的 y 次幂,等价于 "(x)^(y)"。

print(t) print(t, l)

以日志级别 l 输出表达式 t 的值。如果未指定 l,则使用默认的日志级别。返回所输出表达式的值。

random(idx)

返回一个介于 0.0 和 1.0 之间的伪随机值。idx 是用于保存种子/状态的内部变量的索引,可以事先用 st(idx) 存储。

要初始化种子,需要将种子值作为一个 64 位无符号整数存储到索引为 idx 的内部变量中。

例如,要将值为 42 的种子存储到索引为 0 的内部变量中,并输出几个随机值:

st(0,42); print(random(0)); print(random(0)); print(random(0))

randomi(idx, min, max)

返回一个位于 min 和 max 区间内的伪随机值。idx 是用于保存种子/状态的内部变量的索引,可以事先用 st(idx) 存储。

要初始化种子,需要将种子值作为一个 64 位无符号整数存储到索引为 idx 的内部变量中。

root(expr, max)

在区间 0..max 内,查找一个输入值,使得以 ld(0) 为参数、由 expr 表示的函数在该值处为 0。

expr 中的表达式必须表示一个连续函数,否则结果未定义。

ld(0) 用于表示函数的输入值,这意味着给定的表达式会用不同的输入值反复求值,表达式可以通过 ld(0) 访问这些输入值。当表达式的求值结果为 0 时,就会返回对应的输入值。

round(expr)

将表达式 expr 的值舍入到最接近的整数。例如,"round(1.5)" 的结果为 "2.0"。

sgn(x)

计算 x 的符号。

sin(x)

计算 x 的正弦。

sinh(x)

计算 x 的双曲正弦。

sqrt(expr)

计算 expr 的平方根。等价于 "(expr)^.5"。

squish(x)

计算表达式 1/(1 + exp(4*x))

st(idx, expr)

将表达式 expr 的值存储到一个内部变量中。idx 指定要存储该值的变量索引,取值范围为 0 到 9。此函数返回存储到内部变量中的值。

存储的值可以用 ld(var) 取回。

注意:目前变量不会在各个表达式之间共享。

tan(x)

计算 x 的正切。

tanh(x)

计算 x 的双曲正切。

taylor(expr, x) taylor(expr, x, idx)

给定一个表示某函数在 0 处的第 ld(idx) 阶导数的表达式,在 x 处对泰勒级数求值。

当级数不收敛时,结果未定义。

ld(idx) 用于表示 expr 中的导数阶数,这意味着给定的表达式会用不同的输入值反复求值,表达式可以通过 ld(idx) 访问这些输入值。如果未指定 idx,则默认为 0。

注意,当导数是在 y 而不是 0 处给出时,可以使用 taylor(expr, x-y)

time(0)

以秒为单位返回当前的(挂钟)时间。

trunc(expr)

将表达式 expr 的值向零方向舍入到最接近的整数。例如,"trunc(-1.5)" 的结果为 "-1.0"。

while(cond, expr)

当表达式 cond 非零时,反复对表达式 expr 求值,并返回最后一次 expr 求值的结果;如果 cond 始终为假,则返回 NAN。

可用的常量如下:

PI

单位圆盘的面积,约为 3.14

E

exp(1)(欧拉数),约为 2.718

PHI

黄金比例 (1+sqrt(5))/2,约为 1.618

假定表达式只要值不为零就视为“真”,请注意:

* 的作用类似于 AND

+ 的作用类似于 OR

例如,以下结构:

if (A AND B) then C

等价于:

if(A*B, C)

在你的 C 代码中,可以扩展一元和二元函数列表,并定义可识别的常量,从而在表达式中使用它们。

求值器同样能识别国际单位制的单位前缀。如果在前缀后面追加 ’i’,则会使用以 1024 的幂而非 1000 的幂为基础的二进制前缀。后缀 ’B’ 会使数值乘以 8,可以追加在单位前缀之后,也可以单独使用。这样就可以使用例如 ’KB’、’MiB’、’G’ 和 ’B’ 这样的数字后缀。

下面列出了可用的国际单位制前缀,并标明了对应的 10 次幂和 2 次幂。

y

10^-24 / 2^-80

z

10^-21 / 2^-70

a

10^-18 / 2^-60

f

10^-15 / 2^-50

p

10^-12 / 2^-40

n

10^-9 / 2^-30

u

10^-6 / 2^-20

m

10^-3 / 2^-10

c

10^-2

d

10^-1

h

10^2

k

10^3 / 2^10

K

10^3 / 2^10

M

10^6 / 2^20

G

10^9 / 2^30

T

10^12 / 2^40

P

10^15 / 2^50

E

10^18 / 2^60

Z

10^21 / 2^70

Y

10^24 / 2^80

4 参见

ffmpeg, ffplay, ffprobe, libavutil

5 作者

FFmpeg 的开发者们。

关于作者身份的详细信息,请参见项目的 Git 历史(https://git.ffmpeg.org/ffmpeg),例如在 FFmpeg 源代码目录中输入 git log 命令,或浏览在线仓库 https://git.ffmpeg.org/ffmpeg

各组件的维护者列在源代码树中的 MAINTAINERS 文件里。

主机托管由 telepoint.bg 提供