gpt4 book ai didi

video - 在 ffmpeg 中发送命令

转载 作者:行者123 更新时间:2023-12-04 22:46:17 30 4
gpt4 key购买 nike

为什么ffmpeg中的sendcmddrawtext起作用,对scalerotation等过滤器不起作用?

示例(此代码有效)

ffmpeg  -i testIN.mp4 -filter_complex "[0:v]sendcmd=f=testTXT.cmd,drawtext=fontfile=PF.ttf:text='': fontcolor=white:fontsize=150" testOUT.mp4

测试TXT.cmd

0 drawtext reinit 'text=111';
1 drawtext reinit 'text=222';
2 drawtext reinit 'text=333';

示例(此代码不起作用)

ffmpeg -i testIN.mp4 -filter_complex "[0:v]sendcmd=f=testTXT.cmd,drawbox=x=10:y=10:w=100:h=100" testOUT.mp4

测试TXT.cmd

0 drawbox reinit 'x=20:y=20:w=200:h=200';
1 drawbox reinit 'x=30:y=30:w=300:h=300';
2 drawbox reinit 'x=40:y=40:w=400:h=400';

最佳答案

您遇到了几个问题:

  1. 并非所有过滤器都支持 sendcmd .您可以使用 ffmpeg -filters 查看哪些过滤器支持 sendcmd。查找过滤器名称左侧的“C”。此外,只有某些过滤器选项(又名 sendcmd“命令”)可以与 sendcmd 一起使用。查看FFmpeg filter documentation ,或引用 man ffmpeg-filters,并查看每个过滤器的 Commands 部分下的可用选项。

  2. 每个过滤器命令都必须在 sendcmd 文件中声明。文档示例中显示的 reinit 似乎仅限于 drawtext 过滤器,但这在文档中没有解释。

旋转例子

示例 sendcmd 文本文件:

    0 rotate angle '45*PI/180';
1 rotate angle '90*PI/180';
2 rotate angle '180*PI/180';

ffmpeg 命令示例:

    ffmpeg -i input.mp4 -filter_complex "[0:v]sendcmd=f=test.cmd,rotate" output.mp4

以上示例将在 012 期间轮换。

叠加示例

示例 sendcmd 文本文件:

0
overlay@1 x 10,
overlay@1 y 10,
overlay@2 x W-w-10,
overlay@2 y H-h-10,
overlay@3 x (W-w)/2,
overlay@3 y (H-h)/2;

# overlay@1 does not move at this duration so it needs no new entry here
2.25
overlay@2 x 10,
overlay@2 y H-h-10,
overlay@3 x (W-w)/2,
overlay@3 y H-h-10;

ffmpeg 命令示例:

ffmpeg -i video.mp4 -i overlay1.png -i overlay2.jpg -i overlay3.png -filter_complex "[0:v]sendcmd=f=test.cmd,nullsink;[0:v][1:v]overlay@1[bg1];[bg1][2:v]overlay@2[bg2];[bg2][3:v]overlay[v]" -map "[v]" -map 0:a? -c:a copy output.mp4

关于video - 在 ffmpeg 中发送命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49581846/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com