【发布时间】:2020-02-24 01:31:20
【问题描述】:
我正在使用 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 会给我流匹配错误。
更新:
第二次更新:
【问题讨论】:
标签: video ffmpeg video-processing