c语言round函数显示未定义_FFmpeg 滤镜使用的内置变量与函数总结

当计算一个算术表达式时,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

‘bitand(x, y)’‘bitor(x, y)’

对 x 和 y 按位与/或计算. 在做按位计算之前,需要确保 x 和 y 是整数 注意: 对整数的转换和转换回浮点数的转换可能会失去精度。要当心大数字的意外结果 (通常是 2^53 并且更大).

‘ceil(expr)’

四舍五入 expr 到最近的比原值大的整数值, 例如: "ceil(1.5)" 的值是 "2.0".

‘clip(x, min, max)’

返回 min 最小值和 max 最大值之间的值

‘cos(x)’

计算 x 的余弦.

‘cosh(x)’

计算 x 的双曲余弦

‘eq(x, y)’

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

‘exp(x)’

计算 x 的指数(以e为底的欧拉数).

‘floor(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 则未定义.

‘gt(x, y)’

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

‘gte(x, y)’

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

‘hypot(x, y)’

这个函数和 C 语言的函数名称相同; 返回的是 "sqrt(x*x + y*y)", 也就是直角三角形斜边的长度, x 和 y 是两个直角边或者原点到 x 和到 y 的举例.

‘if(x, y)’

判断 x, 如果不是 0 就返回 y 判断的值,否则返回 0.

‘if(x, y, z)’

判断 x, 如果不是 0 就返回 y 判断的值,否则返回 z 判断的值

‘ifnot(x, y)’

判断 x, 如果是 0 就返回 y 判断的值,否则返回 0.

‘ifnot(x, y, z)’

判断 x, 如果是 0 就返回 y 判断的值,否则返回 z 判断的值

‘isinf(x)’

如果 x 是 +/-无穷大返回 1.0,否则返回0.0.

‘isnan(x)’

如果 x 是 NAN 返回 1.0,否则返回 0.0.

‘ld(var)’

加载内部变量 var 的值,这个变量存储在st(var, expr). 函数返回加载的值.

‘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 次幂,相当于 "(x)^(y)".

‘print(t)’‘print(t, l)’

打印 loglevel 是 l 的表达式 t. 如果 l 没有值就使用默认的 loglevel. 返回表达式打印出来的内容.

打印 l 级别的 t

‘random(x)’

在 0.0 和 1.0 之间返回一个伪随机值. x 是内部变量的索引它将被用来保存 seed/state.

‘root(expr, max)’

找一个输入的值 ld(0) 是在间隔 0..max 里面的 0;

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

ld(0) 用于表示函数输入值, 这意味着给定的表达式将被多次求值, 并且表达式可以通过 ld(0) 来访问该表达式. 当表达式求值为 0 时,将返回相应的输入值.

‘round(expr)’

将表达式的值四舍五入到最近的整数. 例如: round(1.5)" 是 "2.0".

‘sin(x)’

计算 x 的正弦.

‘sinh(x)’

计算 x 的双曲正弦.

‘sqrt(expr)’

计算 expr 的平方根. 这相当于 "(expr)^.5".

‘squish(x)’

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

‘st(var, expr)’

将表达式 expr 的值存储在一个内部变量中. var 指定了存储该值的变量的数量, 它的值从 0 到 9. 函数返回存储在内部变量中的值. 注意: 变量当前不是在表达式之间共享的.

‘tan(x)’

计算 x 的正切.

‘tanh(x)’

计算 x 的双曲正切.

‘taylor(expr, x)’‘taylor(expr, x, id)’

求 x 的泰勒级数, 给出一个表示函数在 0 处的导数的表达式 ls(id)。

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

ld(id) 用于表示 expr 中的派生顺序,这意味着给定的表达式将多次使用表达式可以通过 ld(id) 访问的各种输入值进行计算. 如果没有指定 id 则假定为0.

注意: 当你用 y 而不是 0 时, 可以用 taylor(expr, x-y). *

‘time(0)’

返回当前时间 (Wallclock) 秒为单位.

‘trunc(expr)’

将表达式 expr 的值四舍五入为 0 到最近的整数, 例如: "trunc(-1.5)" 是 "-1.0".

‘while(cond, expr)’

当表达式 cond 非 0 时求表达式 expr 的值,并且返回表达式 expr 的值, 如果 cond 的结果一直是 false 的话,就返回NAN.

下边这些常量是可用的:

‘PI’

圆周率派. 3.14

‘E’

自然对数的底数, 是一个无理数, 约等于2.718

‘PHI’

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

下面随便举一个显示logo的例子:

在bbs里面看到一个问题:

c17603af679e16f2de9c3dae0e386b2d.png

他问的这个问题其实很好理解,就是希望在某一个时间段内插入一个logo,那么考虑到是一个时间段内,可以理解为between能够达到要求,那么就是enable=between(x, min, max); 而x是时间变量,也就是't',接下来就可以拼一个命令行:

ffmpeg -f lavfi -i testsrc2=s=640x480 -i ~/onvideo/8-4号logo全家桶/新logo.png  -filter_complex "[1:v]scale=200:-1[o1];[0:v][o1]overlay=x=20:y=20:enable='between(t,3,5)'" -b:v 5M -r:v 25 -vcodec libx264  output.ts

命令行执行后显示logo是在3-5秒钟的时候出现logo,看一下效果

a3f4e19de6ab945c374c610e677c8222.gif

效果还可以。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值