将多个带有黑屏循环的视频连接成一个视频

Concatenate multiple videos with a black screen loop into one video

我正在使用 ffmpeg 将一堆视频拼接在一起。
我正在使用经典的加入ffmpeg代码:

ffmpeg -f concat -i joinlist.txt -c copy joinedfile.mp4

但问题是视频的格式、编码不同,但大小相同:均为 640x480。我想加入他们,每隔一个视频放一个没有声音的黑屏视频:

video1 + black_screen_video + video2 + black_screen_video + video3 ...

我使用以下方法生成了一个时长 2 秒的黑屏视频:

ffmpeg -f lavfi -i color=c=black:s=640x480:d=2 black_screen_video.mp4

因此所有视频的大小都相同:640x480 和 25 fps,但编解码器不同。视频有声音,但黑屏视频除外。 我无法手动执行任何操作,因为视频数量大约有数百个。所以它必须是一种自动完成所有这些的方式。

当我使用上面的代码将它们连接在一起时,生成的视频根本无法正确播放。

我知道我必须重新编码它们,但是如何用一行代码一次对所有这些视频执行此操作?

更新: 我已经成功地使用这段代码将它们连接在一起,但只有三个,如果我有一百多个,一个一个写下来很费时间:

ffmpeg -i vid1.avi -i vid2.avi -i vid3.avi -filter_complex "[0:v:0] [0:a:0] [1:v:0] [1:a:0] [2:v:0] [2:a:0] concat=n=3:v=1:a=1 [v] [a]" -map "[v]" -map "[a]" output.mp4

但这只是加入视频,而不是循环播放黑屏视频。当我处理黑屏时,ffmpeg 给我流匹配错误。

更新:


这是控制台图像:

第二次更新:

一长串红色的错误,其中的截图在这里:

像以前一样使用 concat 分离器。

您的文本文件将是:

file 'vid1.avi'
file 'black_screen_video.mp4'
file 'vid2.avi'
file 'black_screen_video.mp4'
file 'vid3.avi'
file 'black_screen_video.mp4'
...

还有你的命令:

ffmpeg -f concat -i joinlist.txt joinedfile.mp4

您还需要在黑屏视频中加入虚拟音频。

ffmpeg -f lavfi -i color=c=black:s=640x480:d=2 -f lavfi -i aevalsrc=0:c=2:d=2 black_screen_video.mp4

希望它能帮助解决同样的问题,并通过使用此命令将所有视频更改为相同的帧速率并将音频更改为相同的频率来解决此问题 ffmpeg -y -i in.mp4 -vf fps=60 -ar 48000 out.mp4

转换并再次连接

如果有帮助请投票(: