ffmpeg,在确认时仅使用filter_complex将淡变应用于视频输入

问题描述

ffmpeg -i foo.mp4 -filter_complex "fade=d=0.5,reverse,fade=d=0.5,reverse" output.mp4

可用于淡入和淡出foo.mp4视频。 (我们不在乎音频)。根据{{​​3}}

这很好,但仅适用于1个输入视频和1个输出的简单情况。现在,如何在以下更复杂的情况下应用淡入和淡出效果?我正在尝试将a.jpgbar.mp4连接起来。我只希望bar.mp4部分淡入淡出。

ffmpeg -loop 1 -t 2 -framerate 1 -i a.jpg  -f lavfi -t 2 -i anullsrc -r 24 -i bar.mp4 -filter_complex "[0][1][2:v][2:a] concat=n=2:v=1:a=1 [vpre][a];[vpre]fps=24[v]" -map "[v]" -map "[a]" out.mp4 -y

当然,我可以先通过运行第一个命令从bar.mp4创建一个临时temp.mp4,然后在第二个命令中输入temp.mp4。这涉及额外的步骤和额外的编码。任何人都可以帮助修复命令或提出更好的建议吗?

解决方法

使用

ffmpeg -loop 1 -t 2 -framerate 24 -i a.jpg -f lavfi -t 2 -i anullsrc -r 24 -i bar.mp4 -filter_complex "[2:v]fade=d=0.5,reverse,fade=d=0.5,reverse[v2];[0][1][v2][2:a] concat=n=2:v=1:a=1 [v][a]" -map "[v]" -map "[a]" out.mp4 -y