将 3 个过滤器合二为一时出现 FFmpeg 错误:“过滤器 setsar 有一个未连接的输出。”

将 3 个过滤器合二为一时出现 FFmpeg 错误:“过滤器 setsar 有一个未连接的输出。”

我正在尝试将 3 个视频合并为一个。其中 2 个来自监控系统,第 3 个是占位符 JPEG,我使用以下命令将其循环到视频中:

ffmpeg -loop 1 -i FULL.jpg -c:v libx264 -t 10 -pix_fmt yuv420p -vf "scale=1920:1080,setsar=sar=189/190,setdar=16/9" -filter:v fps=fps=1 placeholder.mp4

如您所见,我正在尝试设置 sar。因为当我通过以下方式合并 3 个文件时

ffmpeg -i BEGINNING.mp4 -i placeholder.mp4 -i END.mp4 -f lavfi -t 0.1 -i anullsrc -filter_complex "[1:v]setsar=sar=189/190[v1];[0:v:0][0:a:0][1:v:0][3:a][2:v:0][2:a:0]concat=n=3:v=1:a=1[v][a]" -map "[v]" -map "[a]" full_demo.mp4

我得到:

Filter setsar has a unconnected output

根据其 mediainfo 输出,BEGINNING.mp4 和 END.mp4 的 sar 为 189/190。当我在 placeholder.mp4 上运行 mediainfo 时,没有返回 sar 或 dar。

那么我做错了什么?

答案1

您必须输入修改后的流来进行连接,而不是原始流,因此

[0:v:0][0:a:0][1:v:0][3:a][2:v:0][2:a:0]concat=n=3:v=1:a=1[v][a]

变成

[0:v:0][0:a:0][v1][3:a][2:v:0][2:a:0]concat=n=3:v=1:a=1:unsafe=1[v][a]

此外,在您的第一个命令中,仅应用了 fps 过滤器。应以链式方式应用多个过滤器。此外,setsar 和 setdar 都对同一参数进行操作。DAR = SAR x WIDTH / HEIGHT。因此,

-vf "scale=1920:1080,setdar=16/9,fps=fps=1"

相关内容