FFmpeg使用视频或gif循环连接音频

时间:2017-07-14 13:39:36

标签: audio video ffmpeg

我正在寻找FFmpeg的解决方案,将音频(mp3)与短视频循环或gif合并。

我已经能够通过加入音频从图像中生成视频,但视频在音频持续时间内保持静态帧,这个命令可以实现:

ffmpeg -loop 1 -i imagem.jpg -i audio.mp3 -vcodec h264 -tune stillimage -acodec aac -b:a 64k -pix_fmt yuv420p -shortest video.mp4

我需要具有音频持续时间的视频,但是使用另一个mp4或gif的循环。在音频的持续时间内不断重复。

1 个答案:

答案 0 :(得分:0)

要使用视频(MP4或其他格式)执行此操作,您应使用Concatenate分离器。

首先创建一个文本文件,其中包含要连接的视频的路径列表。在您的情况下,它将是相同视频文件的列表,如下所示。

# mylist.txt
file /your/path/video.mp4
file /your/path/video.mp4
file /your/path/video.mp4

路径可以是绝对路径或相对路径 然后,您需要使用concat demuxer选项。

ffmpeg -f concat -safe 0 -i mylist.txt -c copy output.mp4  

这将生成一个mp4,原始视频循环3次。如果您的原始视频长达4秒,那么输出将为12秒长。我建议您创建一个比音轨稍长的视频,然后在创建最终视频时使用-shortest选项。

您可以像在帖子中一样在同一命令中添加音频。所以,一起看起来像这样:

ffmpeg -f concat -safe 0 -i mylist.txt -i audio.mp3 -c:v copy -c:a copy -shortest output.mp4

在我的示例中,我为我的输出做了一个流复制(这将工作得很好并且会非常快),但你可以使用你想要的编解码器(如你的帖子一样的H264和AAC)。

您可以在concat demuxer documentation或更好的concat wiki中找到更多信息。

目前我不知道是否有办法用 gif 文件执行此操作。