ffmpeg cli过滤器,需要用户输入

时间:2019-03-02 20:01:26

标签: ffmpeg

有没有一种方法可以为ffmpeg编写过滤器脚本,以便在我输入任何内容时,过滤器都会改变行为?

一个例子是在录制流时,用一个键改变对比度,或用另一个键混合两个视频。

我已经看到我可以以静态方式执行此操作,例如以新行为重新开始记录,然后再调用concat,这会由于进程终止和进程失效而导致某些帧丢失,但是我想知道是否有可能,而无需重新启动。

2 个答案:

答案 0 :(得分:1)

我认为您正在寻找 sendcmd ,该过滤器受多个过滤器支持。请参见FFmpeg filters documentation(搜索sendcmd)。

答案 1 :(得分:1)

使用zmq and azmq过滤器。与sendcmd过滤器使用预先编写的命令不同,(a)zmq允许您任意发送过滤器命令。

要启用这些过滤器,您需要安装libzmq库和标头,并用ffmpeg配置--enable-libzmq

仅支持命令的过滤器可以与此过滤器一起使用。请参考ffmpeg -filters的输出以查看哪些过滤器支持命令的列表。此外,并非过滤器的所有选项都被视为命令。有关支持的命令列表,请参阅每个过滤器的文档。


文档中的示例

请考虑以下由ffplay生成的过滤器图。在此示例中,最后一个覆盖过滤器具有实例名称。所有其他过滤器将具有默认实例名称。

ffplay -dumpgraph 1 -f lavfi "
color=s=100x100:c=red  [l];
color=s=100x100:c=blue [r];
nullsrc=s=200x100, zmq [bg];
[bg][l]   overlay     [bg+l];
[bg+l][r] overlay@my=x=100 "

要更改视频左侧的颜色,可以使用以下命令:

echo Parsed_color_0 c yellow | tools/zmqsend

要更改右侧:

echo Parsed_color_1 c pink | tools/zmqsend

要更改右侧的位置,请执行以下操作:

echo overlay@my x 150 | tools/zmqsend