ffmpeg入门教程之ffmpeg命令行手册------全局命令
文章目录
如何阅读官网命令行?
阅读本文的正确姿势Ctrl+F
ffmpeg
ffmpeg命令的语法结构
一般规则
输入参数 -i
流复制 Stream copy
流选择 Stream selection
自动流选择 Automatic stream selection
手动流选择 Manual stream selection
-map
文件选择和流选择 [2:3]
流选择 -vn/-an/-sn/-dn
下面的例子说明FFmpeg的流选择方法的行为、怪癖和限制
自动字幕流选择 automatic subtitles selection
不加标签的滤镜输出 unlabeled filtergraph outputs
带标签的滤镜输出labeled filtergraph outputs
选项Options
流说明符 Stream specifiers
流索引 stream_index
stream_type[:additional_stream_specifier]
通用选项 Generic options
long
full
decoder=decoder_name
encoder=encoder_name
demuxer=demuxer_name
muxer=muxer_name
filter=filter_name
bsf=bitstream_filter_name
-version
-formats
-demuxers
-muxers
-devices
-codecs
-decoders
-encoders
-bsfs
-protocols
-filters
-pix_fmts
-sample_fmts
-layouts
-colors
-sources device[,opt1=val1[,opt2=val2]...]
-sinks device[,opt1=val1[,opt2=val2]...]
-loglevel [flags+]loglevel | -v [flags+]loglevel
repeat
level
quiet, -8
panic, 0
fatal, 8
error, 16
warning, 24
info, 32
verbose, 40
debug, 48
AVOptions
主要选项 Main options
-f fmt (input/output)
-i url (input)
-y (global)
-n (global)
-stream_loop number (input)
-c[:stream_specifier] codec (input/output,per-stream)
-codec[:stream_specifier] codec (input/output,per-stream)
-t duration (input/output)
-to position (input/output)
-fs limit_size (output)
-ss position (input/output)
-sseof position (input)
-itsoffset offset (input)
-itsscale scale (input,per-stream)
-timestamp date (output)
-metadata[:metadata_specifier] key=value (output,per-metadata)
-dn (input/output)
-frame:d
-frames[:stream_specifier] framecount (output,per-stream)
-filter[:stream_specifier] filtergraph (output,per-stream)
-vf filtergraph (output)
表达式赋值 Expression Evaluation
abs(x)
acos(x)
asin(x)
atan(x)
atan2(x, y)
between(x, min, max)
bitand(x, y)
bitor(x, y)
ceil(expr)
clip(x, min, max)
cos(x)
cosh(x)
eq(x, y)
exp(x)
floor(expr)
gauss(x)
gcd(x, y)
gt(x, y)
gte(x, y)
hypot(x, y)
if(x, y)
if(x, y, z)
ifnot(x, y)
ifnot(x, y, z)
isinf(x)
isnan(x)
ld(var)
lerp(x, y, z)
log(x)
lt(x, y)
lte(x, y)
max(x, y)
min(x, y)
mod(x, y)
not(expr)
pow(x, y)
print(t)
print(t, l)
random(x)
round(expr)
sgn(x)
sin(x)
sinh(x)
tan(x)
tanh(x)
欢迎分享、转载、联系、指正、批评、撕逼
如何阅读官网命令行?
http://ffmpeg.org/documentation.html
可以看到贼多命令行,比如ffmpeg-all
在这里插入图片描述先看下概述,找到感觉
在这里插入图片描述
如何查找命令行?
Ctrl+F
在这里插入图片描述
当然,金山词霸等工具少不了
阅读本文的正确姿势Ctrl+F
ffmpeg
ffmpeg是一个非常快速的视频和音频转换器,也可以从实时音频/视频源抓取信息。
ffmpeg命令的语法结构
ffmpeg [global_options] {[input_file_options] -i input_url} ...
{[output_file_options] output_url} ...
一般规则
我们规定,选项应用于下一个指定的文件。因此,顺序很重要,这样才可以在命令行上多次使用相同的选项。然后将每个选项应用于下一输入或输出文件。此规则的例外是全局选项(例如,verbosity级别),应首先指定。
不要混合输入文件和输出文件-首先指定所有输入文件,然后指定所有输出文件。也不混合属于不同文件的选项。所有选项仅用于下一个输入或输出文件,并在文件之间重置。
输入参数 -i
ffmpeg读取由 -i
选项指定的任意数量的输入“文件”(可以是常规文件、管道、网络流、设备数据流等),并写入由输出url指定的任意数量的输出“文件”。在命令行中发现的任何不能解释为选项的内容都被视为输出url。
举例如下:
#To set the video bitrate of the output file to 64 kbit/s:
ffmpeg -i input.avi -b:v 64k -bufsize 64k output.avi
#To force the frame rate of the output file to 24 fps:
ffmpeg -i input.avi -r 24 output.avi
#To force the frame rate of the input file (valid for raw formats only)
#to 1 fps and the frame rate of the output file to 24 fps:
ffmpeg -r 1 -i input.m2v -r 24 output.avi
流复制 Stream copy
流复制,需要通过向-codec
选项提供复制参数来选择。它使ffmpeg省略了对指定流的解码和编码步骤,因此它只进行解封装和封装。它对于更改容器格式或修改容器级元数据非常有用。在这种情况下,上面的图表将简化为:
_______ ______________ ________
| | | | | |
| input | demuxer | encoded data | muxer | output |
| file | ---------> | packets | -------> | file |
|_______| |______________| |________|
由于没有解码或编码,它非常快,没有质量损失。然而,由于许多因素,它在某些情况下可能行不通。显然,应用滤镜也是不可能的,因为滤镜可以处理未压缩的数据。
流选择 Stream selection
自动流选择 Automatic stream selection
如果没有任何特定输出文件的映射选项,ffmpeg将检测输出格式,以检测其中可以包含哪种类型的流,即,视频、音频和/或字幕。对于每种可接受的流类型,ffmpeg将在可用时从所有输入中选择一个流。
它根据以下标准选择流:·
- 对于视频,选择分辨率最高的流
- 对于音频,选择有最多频道的流
- 对于字幕,选择第一个字幕流,但有一个警告。输出格式的默认字幕编码器可以是基于文本的,也可以是基于图像的,并且只选择相同类型的字幕流。
在有几个相同类型的比特率相等的情况下,选择索引最低的流。无法自动选择数据流或附件流,只能使用-map
将其包括在内。
手动流选择 Manual stream selection
当使用-map时,该输出文件中只包含用户映射的流,当然也有例外的场景。
-map
每个输入或输出url原则上可以包含任意数量的不同类型的流(视频/音频/字幕/附件/数据)。允许的流数目和/或类型受容器格式的限制。选择哪些输入的哪些流进行输出,要么自动完成,要么使用-map
选项。
文件选择和流选择 [2:3]
若要引用选项中的输入文件,必须使用它们的索引(基于0的)。例如:第一输入文件为0
,第二输入文件为1
等。类似地,文件中的流由它们的索引引用。例如:2:3
指第三个输入文件中的第四个流。
流选择 -vn/-an/-sn/-dn
ffmpeg为手动控制每个输出文件中的流选择提供了-map
选项。用户可以不使用-map
,让ffmpeg执行自动流选择,
如下所述。
无论是手动映射还是自动选择,除了复杂滤波图的输出流,选项-vn/-an/-sn/-dn
可分别用于跳过包括视频、音频、字幕和数据流。
下面的例子说明FFmpeg的流选择方法的行为、怪癖和限制
input file 'A.avi'
stream 0: video 640x360
stream 1: audio 2 channels
input file 'B.mp4'
stream 0: video 1920x1080
stream 1: audio 2 channels
stream 2: subtitles (text)
stream 3: audio 5.1 channels
stream 4: subtitles (text)
input file 'C.mkv'
stream 0: video 1280x720
stream 1: audio 2 channels
stream 2: subtitles (image)
ffmpeg -i A.avi -i B.mp4 out1.mkv out2.wav -map 1:a -c:a copy out3.mov
指定了三个输出文件,对于前两个,无-map
选项,因此ffmpeg将自动为这两个文件选择流。
out1.mkv
是一个高清格式文件,接受视频、音频和字幕流,因此ffmpeg将尝试选择每种类型中的一种。对于视频,它将从b.mp4
中选择流0
,因为它在所有输入视频流中具有最高的分辨率。对于音频,它将从b.mp4
中选择流3
,因为它有最多的频道。对于字幕,它将从b.mp4
中选择流2
,这是a.avi
和b.mp4
中的第一个字幕流。
输出2.wav
只接受音频流,因此只选择b.mp4
中的流3
。
对于out3.mov
,由于设置了-map
选项,因此不会出现自动流选择。-map 1:a
选项将从第二个输入b.mp4
中选择所有音频流。此输出文件中不会包含其他流。
对于前两个输出,所有包含的流都将被转码。所选择的编码器将是由每种输出格式注册的默认编码器,这可能与所选输入流的编解码器不匹配。
对于第三个输出,音频流的codec
选项(-c:a)
已设置为复制,因此不会发生或可能发生解码-滤镜-编码操作。所选流的packets编码数据包从输入文件中传输,然后封装到输出文件中。
[图片上传失败...(image-bf88d-1575364351578)]
自动字幕流选择 automatic subtitles selection
ffmpeg -i C.mkv out1.mkv -c:s dvdsub -an out2.mkv
虽然out1.mkv
是一个接受字幕流的高清格式文件,但只能选择一个视频和音频流。C.mkv
的字幕流是基于图像的,mkv
封装器的默认字幕编码器是基于文本的,因此字幕的转码操作预计会失败,因此不会选择流。
但是,在out2.mkv
中,命令中指定了字幕编码器,因此,除了视频流之外,还选择了字幕流。out2.mkv
的-an
禁用音频流的选择。
不加标签的滤镜输出 unlabeled filtergraph outputs
ffmpeg -i A.avi -i C.mkv -i B.mp4 -filter_complex "overlay" out1.mp4 out2.srt
这里使用-filter_complex
选项设置了一个滤镜,它由一个视频滤镜组成。overlay
滤镜需要两个视频输入,但没有指定,因此使用了前两个可用的视频流,即a.avi
和c.mkv
的视频流。滤镜的输出面板没有标签,因此被传递到第一个输出文件out1.mp4
。因此,将跳过视频流的自动选择,这将选择b.mp4
中的视频流。具有最多数量频道的音频流,即b.mp4
中的流3
,会被自动选择。但是没有选择字幕流,因为MP4
格式没有默认的字幕编码器注册,而且用户没有指定字幕编码器。
第二个输出文件out2.srt
只接受基于文本的字幕流。因此,尽管可用的第一个字幕流属于c.mkv
,但它是基于图像的,因此跳过了。选定的流,b.mp4
中的流2
,是第一个基于文本的字幕流。
带标签的滤镜输出labeled filtergraph outputs
ffmpeg -i A.avi -i B.mp4 -i C.mkv -filter_complex
"[1:v]hue=s=0[outv];overlay;aresample" \
-map '[outv]' -an out1.mp4 \
out2.mkv \
-map '[outv]' -map 1:a:0 out3.mkv
以上命令将失败,因为标记为[outv]的输出标签已被映射两次。不处理任何输出文件。
ffmpeg -i A.avi -i B.mp4 -i C.mkv -filter_complex
"[1:v]hue=s=0[outv];overlay;aresample" \
-an out1.mp4 \
out2.mkv \
-map 1:a:0 out3.mkv
上面的命令也会失败,因为色调滤镜输出有一个标签[outv],并且没有被映射到任何地方。
应修改为如下命令:
ffmpeg -i A.avi -i B.mp4 -i C.mkv -filter_complex
"[1:v]hue=s=0,split=2[outv1][outv2];overlay;aresample" \
-map '[outv1]' -an out1.mp4 \
out2.mkv \
-map '[outv2]' -map 1:a:0 out3.mkv
来自b.mp4
的视频流被发送到色调滤镜,其输出使用分割滤镜被克隆一次,并且这两个输出都有标签。然后,将每个副本映射到第一和第三输出文件。
overlay
滤镜需要两个视频输入,使用前两个未使用的视频流。这些是来自a.avi
和c.mkv
的流。overlay
输出没有标签,因此它被传递到第一个输出文件out1.mp4
,而不考虑-map
选项的存在。
aresample
滤镜被应用给第一个未使用的音频流,即a.avi
的音频流。因为这个滤镜输出也没有标签,所以它也被映射到第一个输出文件。-an
选项会抑制音频流的自动或手动选择,而不是从滤镜获取输出。这两个映射流都应在输出1.mp4
中的映射流之前排序。
映射到out2.mkv
的视频、音频和字幕流完全由自动流选择决定。
out3.mkv
由来自色调滤镜克隆的视频输出和来自b.mp4
的第一个音频流组成。
选项Options
流说明符 Stream specifiers
有些选项应用于每个流,例如比bitrate
比特率 或编解码器codec
。流说明符用于精确指定给定选项所属的流。流说明符是通常附加到选项名称并由冒号分隔的字符串。例如a:1 ac3
包含与第二音频流匹配的a:1
流说明符。因此,它将为第二音频流选择ac3
编解码器。流说明符可以匹配多个流,以便将该选项应用到所有流。例如-b:a 128K
匹配所有音频流。空的流说明符匹配所有流。例如,-codec copy
或-codec: copy
复制所有流,而无需重新编码。
流说明符的可能形式是:
流索引 stream_index
将流与索引匹配。例如:-threads:1 4
将第二流的线程数量设置为4。如果使用stream_index作为附加的流说明符(见下文),那么它将从匹配的流中选择流号stream_index
。流编号是基于libavformat
检测到的流的顺序,除非 program ID
也被指定,在这种情况下,它是基于程序中流的排序。
stream_type[:additional_stream_specifier]
stream_type是以下内容之一:v
或V
,用于视频,a
用于音频,s
用于字幕,d
用于数据,而t
用于附件。v
匹配所有视频流,V
仅匹配未连接图片、视频缩略图或封面艺术的视频流。如果使用了附加流说明符,则它匹配具有和此类型以及附加流说明符匹配的流。否则,它与指定类型的所有流匹配。
通用选项 Generic options
这些选项在ff工具上都可使用。*
-L
显示版权信息
-h
、-?
、-help
、--help[arg]
显示帮助信息。可以指定可选参数来打印有关特定项目的帮助。如果未指定参数,则仅显示基本(非高级)工具选项。
arg的可能值包括:
long
除了基本工具选项外,还可以打印高级工具选项。
full
打印完整的选项列表,包括encoders
编码器、decoders
解码器、demuxers
解封装器、muxers
封装器、滤镜等的共享和私有选项。
decoder=decoder_name
打印指定解码器的详细信息。使用-decoders
选项打印所有解码器的列表。
encoder=encoder_name
打印指定编码器的详细信息。使用-encoders
选项打印所有编码器。
demuxer=demuxer_name
打印指定demuxer
的详细信息。使用-format
选项打印所有demuxers
和muxers
。
muxer=muxer_name
打印指定muxer
的详细信息。使用-format
选项打印所有demuxers
和muxers
。
filter=filter_name
打印指定滤镜的详细信息。使用-filters选项打印所有滤镜。
bsf=bitstream_filter_name
打印指定位流滤镜的详细信息。使用-bsfs
选项打印所有位流滤镜。
-version
显示版本信息
-formats
显示可用格式(包括设备)。
-demuxers
显示可用的demuxers解封装器
-muxers
显示可用的muxers封装器
-devices
显示可用的设备devices
-codecs
显示所有libavcodec
中已知的编解码器。
-decoders
显示可用的解码器decoders
-encoders
显示可用的编码器encoders
-bsfs
显示可用的位流滤镜bitstream filters
-protocols
显示可用的协议
-filters
显示libavfilter
中可用的滤镜
-pix_fmts
显示可用的像素格式
-sample_fmts
显示可用的采样格式。
-layouts
显示音频通道名称和标准音频通道布局。
-colors
显示可识别的颜色名称。
-sources device[,opt1=val1[,opt2=val2]...]
显示输入设备的自动检测源。一些设备可以提供无法自动检测的依赖于系统的源名称。返回的列表不一定总是完整的。
ffmpeg -sources pulse,server=192.168.0.4
-sinks device[,opt1=val1[,opt2=val2]...]
显示输出设备的自动检测接收器。有些设备可能提供无法自动检测到依赖于系统的接收器名称。返回的列表不一定是完整的。
ffmpeg -sinks pulse,server=192.168.0.4
-loglevel [flags+]loglevel | -v [flags+]loglevel
设置由库使用的日志级别和标志。
可选标志前缀可以由以下值组成:
repeat
Indicates that repeated log output should not be compressed to the first
line and the "Last message repeated n times" line will be omitted.
指示不应将重复日志输出压缩到第一行,并且...
level
指示日志输出应在每条消息行中添加一个[level]前缀。这可以用作日志着色,例如,当将日志转储到文件中时。
Flags can also be used alone by adding a ’+’/’-’ prefix to set/reset a single flag without affecting
other flags or changing loglevel. When setting both flags and loglevel, a ’+’ separator
is expected between the last flags value and before loglevel.
也可以通过添加+/-
前缀来单独使用标志,以设置/重置单个标志,而不影响其他标志或更改日志级别。设置“标志”和“LogLevel”时,在最后一个标志值和LogLevel之前都会有一个+
分隔符。
loglevel 是字符串或包含以下值之一的数字:
quiet, -8
不输出任何信息
panic, 0
只显示可能导致进程崩溃的致命错误,例如断言失败。目前没有用于任何地方。
fatal, 8
只显示致命的错误。这些错误出现在进程绝对不能继续下去的时候。
error, 16
显示所有错误,包括可以从其中恢复的错误。
warning, 24
显示所有警告和错误。将显示可能发生的不正确或意外事件有关的任何消息。
info, 32
在处理期间显示信息级别的消息,这是默认值。
verbose, 40
和信息级别一样,但是更冗长。
debug, 48
显示所有内容,包括调试信息。
例如,要启用重复的日志输出,添加级别前缀,并将日志级别设置为verbose
:
ffmpeg -loglevel repeat+level+verbose -i input output
在不影响级别前缀标志或日志级别的当前状态的情况下启用重复日志输出的另一个示例:
ffmpeg [...] -loglevel +repeat
默认情况下,程序记录到stderr。如果终端支持着色,则使用颜色标记错误和警告。可以禁用日志着色,设置环境变量AV_LOG_FORCE_NOCOLOR
或NO_COLOR
,也可以强制设置环境变量AV_LOG_FORCE_COLOR
。不推荐使用环境变量NO_COLOR
,并将在以后的ffmpeg版本中删除。
AVOptions
这些选项由libavformat
、libavdevice
和libavcodec
库直接提供。要查看可用的AVOptions
列表,请使用-help
选项。它们分为两类:
通用选项generic
可以为任何文件格式、编解码器或设备设置这些选项。通用选项在用于文件格式/设备的AVFormatContext
选项下,并在编解码器的AVCodecContext
上下文选项下列出。
私有选项private
这些选项特定于给定的文件格式、设备或编解码器。相应的文件格式/设备/编解码器下列出了私有选项。
例如,要将id3v2.3
头而不是默认的id3v2.4
写入mp3
文件,使用mp3 muxer的id3v2_version
私有选项:
ffmpeg -i input.flac -id3v2_version 3 out.mp3
所有编解码器的AVOptions都是应用于每个流的,因此应该附加一个流说明符:
ffmpeg -i multichannel.mxf -map 0:v:0 -map 0:a:0 -map 0:a:0 -c:a:0 ac3 -b:a:0 640k
-ac:a:1 2 -c:a:1 aac -b:2 128k out.mp4
在上面的例子中,一个多声道音频流被映射两次以便输出。第一个实例由编码器ac3指定比特率640 k编码。第二个实例被降至2个信道,并使用编码器aac编码。使用输出流的绝对索引为它指定128 k的比特率。
注意:-nooption
语法不能用于布尔选项,请使用 -option 0/-option 1
.
注意:通过在选项名称前面加上v/a/s
来指定每个流的AVOptions
的旧的无文档化方法现在已经过时,并将很快被删除。
主要选项 Main options
-f fmt (input/output)
强制输入或输出文件格式。通常自动检测输入文件的格式,并从输出文件的文件扩展名中猜测格式,因此在大多数情况下不需要此选项。
-i url (input)
输入文件的url
-y (global)
强制覆盖输出文件
-n (global)
不要覆盖输出文件,如果指定的输出文件已经存在,则立即退出。
-stream_loop number (input)
设置输入流的循环次数。循环0表示没有循环,循环-1表示无限循环.
-c[:stream_specifier] codec (input/output,per-stream)
-codec[:stream_specifier] codec (input/output,per-stream)
为一个或多个流选择编码器(在输出文件之前使用时)或解码器(在输入文件之前使用)。codec
或者c
填值解码器/编码器的名称,codec
或者c
填值copy
,表示(仅输出),以指示流不被重新编码。
举例:
ffmpeg -i INPUT -map 0 -c:v libx264 -c:a copy OUTPUT
用libx264对所有视频流进行编码,并复制所有音频流。
ffmpeg -i INPUT -map 0 -c copy -c:v:1 libx264 -c:a:137 libvorbis OUTPUT
复制所有流,除了将用libx264
编码的第2
个视频流和将用libvorbis
编码的第138
个音频流。
-t duration (input/output)
-to position (input/output)
当用作输入选项(在-i
之前)时,限制从输入文件读取数据的持续时间。当用作输出选项时(在输出url
之前),在输出持续时间达到持续时间后停止写入输出。duration
必须是时间期限规范,请参阅(ffmpeg-utils)在ffmpeg-utils(1)手册中的时间duration 部分。-to
和-t
是相互排斥的,-t
有优先权。
-fs limit_size (output)
设置文件大小限制,以字节表示。超过限制后,不再写入更多的字节块。输出文件的大小略大于
请求的文件大小。
-ss position (input/output)
当用作输入选项(-i
之前)时,在此输入文件中定位位置。请注意,在大多数格式中,不可能精确地寻找,因此ffmpeg将在位置之前定位到最接近的点。当启用转码transcoding
和-精确定位-accurate_seek
(默认)时,seek point
和position
之间的这个额外段将被解码和丢弃。当做流复制或当使用 -noaccurate_seek
的寻求时,它将被保存。
当用作输出选项时(在输出url
之前),解码但丢弃输入,直到时间戳到达位置。位置必须是time duration
规范,请参阅(ffmpeg-utils)在ffmpeg-utils(1)手册中的time duration
部分。
-sseof position (input)
Like the -ss option but relative to the "end of file".
That is negative values are earlier in the file, 0 is at EOF.
与-ss
选项类似,但相对于"文件结束"。这是文件中较早的负值,0
在EOF
。
-itsoffset offset (input)
设置输入时间偏移。偏移量必须是 time duration
规范,参见FFmpeg-utils(1)手册中的 time duration
部分。将偏移添加到输入文件的时间戳中。指定正偏移意味着对应的流被延迟指定的持续时间。
-itsscale scale (input,per-stream)
重新调整输入时间戳。scale
用浮点数。
-timestamp date (output)
在文件格式容器中设置记录时间戳。日期必须是日期规格,请参阅FFmpeg-utils(1)手册中的日期部分。
-metadata[:metadata_specifier] key=value (output,per-metadata)
设置元数据 key/value
对。
可以给出可选的元数据_说明符以在流、章节或程序上设置元数据。有关详细信息,请参见
-map_metadata
文档。
此选项将覆盖带有-map_metadata
的元数据集。也可以通过使用空的值来删除元数据。
例如,用于在输出文件中设置标题:
ffmpeg -i in.avi -metadata title="my title" out.flv
要设置第一个音频流的语言,请执行以下操作:
ffmpeg -i INPUT -metadata:s:a:0 language=eng OUTPUT
-dn (input/output)
作为输入选项,阻止文件的所有数据流被过滤或被自动选择或映射到任何输出。请参见-discard
选项以单独禁用流。作为输出选项,禁用数据,即任何数据流的自动选择或映射。有关完整的手动控制,请参见-map
选项。
-frame:d
设置要输出的数据帧数。
-frames[:stream_specifier] framecount (output,per-stream)
在framecount 个帧之后停止写入流。
-filter[:stream_specifier] filtergraph (output,per-stream)
创建指定的滤镜,并使用它来过滤流。必须具有相同类型的流的单个输入和单个输出。。有关filtergraph
语法的详细信息,请参见FFmpeg-filter手册。如果要创建具有多个输入和/或输出的filtergraphs
,请参见-filter_complex
选项。
-vf filtergraph (output)
创建filtergraph
,并使用它来过滤流。这是-filter:v
的别名,请参见-filter
选项。
表达式赋值 Expression Evaluation
当计算算术表达式的值时,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)
Compute principal value of the arc tangent of y/x.
between(x, min, max)
如果min<=x<=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)
Return the value of x clipped between min and max.
cos(x)
计算X的余弦。
cosh(x)
Compute hyperbolic cosine of x.
eq(x, y)
如果X
和Y
相等,则返回1
,否则返回0
。
exp(x)
Compute exponential of x (with base e, the Euler’s number).
计算x
的指数(以e
为基数,欧拉数)。
floor(expr)
将表达式expr
的值向下舍入到最近的整数。例如,“floor(-1.5)
”为“-2.0
”。
gauss(x)
Compute Gauss function of x, corresponding to exp(-x*x/2) / sqrt(2*PI).
计算x
的高斯函数,对应于exp(-x*x/2)/sqrt(2*PI)
。
gcd(x, y)
Return the greatest common divisor of x and y. If both x and y are 0 or either
or both are less than zero then behavior is undefined.
返回x
和y
的最大公因子。如果x
和y
都是0
,或者两者都小于0
,则...。
gt(x, y)
如果x>y
,则返回1
,否则为0
。
gte(x, y)
如果x>=y
,则返回1
,否则返回0
hypot(x, y)
此函数类似于同名的c函数;它返回“sqrt(x*xy*y)”
,即直角边长度为x
和y
的直角三角形的斜边长度,或点(x,y)
与原点
的距离。
if(x, y)
Evaluate x, and if the result is non-zero return the result of the evaluation of y,
return 0 otherwise.
if(x, y, z)
Evaluate x, and if the result is non-zero return the evaluation result of y,
otherwise the evaluation result of z.
ifnot(x, y)
Evaluate x, and if the result is zero return the result of the evaluation of y,
return 0 otherwise.
ifnot(x, y, z)
Evaluate x, and if the result is zero return the evaluation result of y,
otherwise the evaluation result of z.
isinf(x)
如果x
是+/-无穷大
,则返回1.0
,否则返回0.0
。
isnan(x)
如果X
为NaN
(not a number非数字),则返回1.0
,否则为0.0
。
ld(var)
Load the value of the internal variable with number var, which was previously stored with
st(var, expr). The function returns the loaded value.
lerp(x, y, z)
Return linear interpolation between x and y by amount of z.
在x
和y
之间通过z
的量返回线性插值。
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
为0
,则返回1.0
,否则返回0.0
。
pow(x, y)
计算x^y
print(t)
print(t, l)
用loglevel
打印表达式t
的值。如果未指定l
,则使用默认日志级别。返回打印的表达式的值。
random(x)
Return a pseudo random value between 0.0 and 1.0.
x is the index of the internal variable which will be used to save the seed/state.
返回0.0
到1.0
之间的伪随机值。
round(expr)
将表达式expr
的值四舍五入。例如,"round(1.5)
"是"2.0
"。
sgn(x)
Compute sign of x.
sin(x)
计算x
的正弦。
sinh(x)
Compute hyperbolic sine of x.
tan(x)
计算x的正切
tanh(x)
Compute hyperbolic tangent of x.
在这里插入图片描述
本文将持续更新,敬请关注
欢迎分享、转载、联系、指正、批评、撕逼
Github:https://github.com/AnJiaoDe
简书:https://www.jianshu.com/u/b8159d455c69
CSDN:https://blog.csdn.net/confusing_awakening
ffmpeg入门教程:https://www.jianshu.com/p/042c7847bd8a
微信公众号:扫描头像
QQ群:757173381