有没有办法为 ffmpeg 编写过滤器脚本,这样当我给出输入时,过滤器就会改变行为?
例如,在录制流时,使用某个键更改对比度,或者使用另一个键混合两个视频。
我已经看到我可以以静态方式执行此操作,例如使用新行为重新启动记录,然后调用 concat,这会由于进程终止和进程提升而导致一些帧丢失,但我想知道这是否是可能的,无需重新启动。
Use the zmq 和 azmq https://ffmpeg.org/ffmpeg-filters.html#zmq_002c-azmq过滤器。与使用预先编写的命令的 sendcmd 过滤器不同,(a)zmq 允许您任意发送过滤器命令。
要启用这些过滤器,您需要安装 libzmq 库和标头并配置ffmpeg
with --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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)