0

使用 ffmpeg 4.4,我正在尝试裁剪视频并使用sendcmd+及时为宽度设置动画crop。然而,这会在裁剪区域之外呈现伪影(绿色或重复水平/垂直重绘的视频)。

要复制的命令:

ffmpeg -f lavfi -i color=color=0xff0000:size=1280x720:rate=25 -filter_complex_script filter.txt -map [v] -t 4 out.mp4 -y

过滤器.txt

movie=video.mp4,sendcmd=c='0 [expr] crop w (N*10)+10',crop[v];
[0][v]overlay=x=n:eof_action=pass:eval=frame[v]

知道如何摆脱这些人工制品吗?

在此处输入图像描述

或者,也许有一些替代的 ffmpeg 过滤器可以使用 eval=frame 而不是 sendcmd 进行裁剪工作?

4

2 回答 2

0

当我调试正在发生的事情时,使用这个过滤器图。

movie=video.mp4,sendcmd=c='0 [expr] crop w (N*10)+10',crop,scale=eval=frame[v];
[0][v]overlay=x=n:eof_action=pass:eval=frame[v]
于 2021-10-15T08:59:46.533 回答
0

我最终使用了小叠加技巧来模拟裁剪:

ffmpeg -f lavfi -i color=color=0xff0000:size=1280x720:rate=25 -filter_complex_script overlay-filter.txt -map [v] -t 4 output/overlay.mp4 -y

过滤器.txt

movie=input/video.mp4[v];
color=c=#000000:s=2x2:rate=25[c];
[c][v]scale2ref=flags=neighbor:eval=frame[c][v];
[c]scale=flags=neighbor:w=n*10+10:h=ih:eval=frame[c];
[c][v]overlay=x=(main_w-overlay_w)/2:eval=frame:eof_action=endall[v];
[0][v]overlay=x=n:eof_action=pass:eval=frame[v]

https://trac.ffmpeg.org/ticket/9454上报告的作物问题

于 2021-10-15T06:39:11.760 回答