将命令发送到filtergraph
中的过滤器。
这些过滤器读取要发送到filtergraph
中其他过滤器的命令。
必须在两个视频滤镜之间插入sendcmd
,必须在两个音频滤镜之间插入asendcmd
,但除此之外,它们的行为方式相同。
可以使用commands
选项在filter
参数中提供命令规范,也可以在filename
选项指定的文件中提供命令规范。
这些过滤器接受以下选项:
commands, c
设置要读取的命令并将其发送到其他过滤器。
filename,f
设置要读取的命令的文件名并将其发送到其他过滤器。
命令描述由一系列间隔规范组成,包括当与该间隔相关的特定事件发生时要执行的命令列表。 发生的事件通常是进入或离开给定时间间隔的当前帧时间。
间隔由以下语法指定:
START[-END] COMMANDS;
时间间隔由START
和END
时间指定。 END
是可选的,默认为最长时间。
如果当前帧时间包含在间隔[START,END]
中,即当时间大于或等于START
且小于END
时,则认为当前帧时间在指定的时间间隔内。
命令由一个或多个命令规范的序列组成,由","
分隔,与该间隔有关。 命令规范的语法由下式给出:
[FLAGS] TARGET COMMAND ARG
FLAGS
是可选的,它指定与发送指定命令的时间间隔相关的事件类型,并且必须是由"+"
或"|"
分隔的非空序列标识符标志。 并包含在"["and"]"
之间。
识别以下标志:
标志 | 解释 |
---|---|
enter | 当前帧时间戳进入指定的时间间隔时发送该命令。 换句话说,当前一帧时间戳不在给定的时间间隔内时,发送命令,并且当前是 |
leave | 当前帧时间戳离开指定的时间间隔时发送该命令。 换句话说,当前一帧时间戳在给定间隔内时发送命令,而当前帧时间戳不在给定间隔内 |
如果未指定FLAGS
,则假定为[enter]
的默认值。
TARGET
指定命令的目标,通常是过滤器类的名称或特定的过滤器实例名称。
COMMAND
指定目标过滤器的命令名称。
ARG
是可选的,它指定给定COMMAND
的可选参数列表。
在一个间隔规范和另一个间隔规范之间,空格或以#开头直到行尾的字符序列将被忽略,并可用于注释注释。
命令规范语法的简化BNF
描述如下:
- COMMAND_FLAG ::= "enter" | "leave"
- COMMAND_FLAGS ::= COMMAND_FLAG [(+|"|")COMMAND_FLAG]
- COMMAND ::= ["[" COMMAND_FLAGS "]"] TARGET COMMAND [ARG]
- COMMANDS ::= COMMAND [,COMMANDS]
- INTERVAL ::= START[-END] COMMANDS
- INTERVALS ::= INTERVAL[;INTERVALS]
学习地址:音视频新手快速入门必备系列-FFmpeg+SDL播放器开发实现-学习视频教程-腾讯课堂
【文章福利】免费领取更多音视频学习资料包、大厂面试题、技术视频和学习路线图,资料包括(C/C++,Linux,FFmpeg webRTC rtmp hls rtsp ffplay srs 等等)有需要的可以点击1079654574加群领取哦~
在第二个4
指定音频速度变化:
asendcmd=c='4.0 atempo tempo 1.5',atempo
定位特定的过滤器实例:
asendcmd=c='4.0 atempo@my tempo 1.5',atempo@my
在文件中指定drawtext
和hue
命令的列表。
- # show text in the interval 5-10
- 5.0-10.0 [enter] drawtext reinit 'fontfile=FreeSerif.ttf:text=hello world',
- [leave] drawtext reinit 'fontfile=FreeSerif.ttf:text=';
-
- # desaturate the image in the interval 15-20
- 15.0-20.0 [enter] hue s 0,
- [enter] drawtext reinit 'fontfile=FreeSerif.ttf:text=nocolor',
- [leave] hue s 1,
- [leave] drawtext reinit 'fontfile=FreeSerif.ttf:text=color';
-
- # apply an exponential saturation fade-out effect, starting from time 25
- 25 [enter] hue s exp(25-t)
允许读取和处理存储在文件'test.cmd'
中的上述命令列表的过滤器图可以用以下内容指定:
sendcmd=f=test.cmd,drawtext=fontfile=FreeSerif.ttf:text='',hue
更改输入帧的PTS
(演示时间戳)。
setpts
适用于视频帧,音频帧上的设置。
此过滤器接受以下选项:
expr
为每个帧计算的表达式,以构造其时间戳。
表达式通过eval API
进行评估,并且可以包含以下常量:
FRAME_RATE
帧速率,仅针对恒定帧速率视频定义
PTS