ffmpeg:在一次通话中混合concat,apad和amerge

时间:2016-09-16 20:37:44

标签: video ffmpeg

我试图将对ffmpeg的多个调用合并为一个单独的调用。

我有两个图像,一个视频和一个声音合并在一起。

视频:图像1(1秒),图像2(如果可能,1秒 - 淡入视频),视频 声音:声音---一旦视频开始,合并两个声音

我可以单独执行这些操作(生成带有图像+视频的临时视频),然后合并两种声音,但我想更快地获得更快的内容。

如何将这两个过滤器合并到一个?

ffmpeg -loop 1 -framerate 60 -t 1 -i thumb.jpg -t 1 -f lavfi -i aevalsrc=0 -framerate 60 -t 1 -i theme.jpg -t 1 -f lavfi -i aevalsrc=0 -i video.mov -filter_complex '[0:0] [1:0] [2:0] [3:0] [4:0] [4:1] concat=n=3:v=1:a=1' tmp.mov

ffmpeg -i tmp.mov -i audio.mp3 -filter_complex "[0:a]apad [b]; [b][1:a]amerge[a]" -map 0:v -map "[a]" -c:v copy -c:a mp3 -ac 2 -shortest out.mov

我的猜测类似于ffmpeg -loop 1 -framerate 60 -t 1 -i thumb.jpg -framerate 60 -t 1 -i theme.jpg -i video.mov -i audio.mp3 -filter_complex "[0:0] [1:0] [2:0] [2:a] concat=n=3:v=1:a=1" -map 2:v -map "[a]" -c:v copy -c:a mp3 -ac 2 -shortest out.mov,但最终会出现以下错误:流说明符':0'在filtergraph描述[0:0] [1:0] [2:0] [2:a] concat = n = 3:v = 1:a = 1匹配没有流。

任何帮助将不胜感激! (如果你知道如何在我的案例中获得fade过滤器,那就太棒了!)

2 个答案:

答案 0 :(得分:5)

像这样(没有褪色):

ffmpeg -loop 1 -framerate 60 -t 1 -i thumb.jpg -t 1 -f lavfi -i aevalsrc=0:d=1 -framerate 60 -t 1 -i theme.jpg -t 1 -f lavfi -i aevalsrc=0:d=1 -i video.mov -i audio.mp3 -filter_complex '[0:0] [1:0] [2:0] [3:0] [4:0] [4:1] concat=n=3:v=1:a=1[video][audio],[audio]apad[audio],[audio][5:0]amix=duration=shortest[audio]' -map "[video]" -map "[audio]" out.mov

答案 1 :(得分:0)

第二张图像淡出1秒,

ffmpeg -loop 1 -framerate 60 -t 1 -i thumb.jpg -f lavfi -i aevalsrc=0:d=1
       -loop 1 -framerate 60 -t 1 -i theme.jpg -f lavfi -i aevalsrc=0:d=1
       -i video.mov -i audio.mp3 -filter_complex  
     "[2]format=yuva420p,fade=out:st=0:d=1:alpha=1[2fo];[4][2fo]overlay[m];
      [0:v][1:a][2:v][3:a][m][4:a]concat=n=3:v=1:a=1[video][audio];
      [audio][5:a]amix=duration=shortest[audio]" -map "[video]" -map "[audio]" out.mov