concat 2文件后音频不同步

时间:2019-05-29 22:02:59

标签: ffmpeg

我想并排显示2部电影的视频。每部电影都是一部电影连续播放2次的结果。问题是右侧的音频不同步。

我有3个命令: 第一个命令连拍一部电影2次

ffmpeg -i 1.mp4 -i 1.mp4 -filter_complex "[0:v:0][0:a:0][1:v:0][1:a:0]concat=n=2:v=1:a=1[concatv][concata]" -map "[concatv]" -map "[concata]" Concat1.mp4

第二个命令连续播放第二部电影两次

ffmpeg -i 2.mp4 -i 2.mp4 -filter_complex "[0:v:0][0:a:0][1:v:0][1:a:0]concat=n=2:v=1:a=1[concatv][concata]" -map "[concatv]" -map "[concata]" Concat2.mp4

此时,音频始终会同步。 第三个命令获取2个结果,并将其与徽标并排合并到一部电影中:

ffmpeg -i Concat1.mp4 -i Concat2.mp4 -i logo.png -filter_complex "[0:v]pad=width=iw+20:height=ih+20:x=10:y=10:color=black[a];[1:v]pad=width=iw+20:height=ih+20:x=10:y=10:color=black[b];nullsrc=size=640x480[base];[a]setpts=PTS-STARTPTS, scale=320x480[left];[b]setpts=PTS-STARTPTS, scale=320x480[right];[base][left]overlay=shortest=1[tmp1];[tmp1][right] overlay=320:0[video];[0:a]apad [apa];[apa][1:a]amerge=inputs=2,pan=stereo|FL<c0+c1|FR<c0+c1[audio];[2:v]scale=120:44 [ovrl];[video][ovrl]overlay=15:25[videoandlogo]" -map "[videoandlogo]" -map "[audio]" output.mp4 

问题在于,在输出文件中,正确电影的音频第二次不同步(第二次连拍)。它总是正确的电影,即使我切换它们也不同步。

有人可以帮忙吗? 谢谢。

============== EDIT =================

通过将apad也添加到第二个文件中,已解决问题,但该命令永不停止 ...我如何告诉该命令如果两部电影都带有垫子,当两部电影都结束时停止播放吗? 这是永不停止的新命令:

ffmpeg -i 1.mp4 -i 2.mp4 -i logo.png -filter_complex "[0:v]pad=width=iw+20:height=ih+20:x=10:y=10:color=black[a];[1:v]pad=width=iw+20:height=ih+20:x=10:y=10:color=black[b];nullsrc=size=640x480[base];[a]scale=320x480[left];[b]scale=320x480[right];[base][left]overlay=shortest=1[tmp1];[tmp1][right] overlay=320:0[video];[1:a]apad [apa];[0:a]apad[apa1];[apa][apa1]amix=inputs=2:duration=longest[audio];[2:v]scale=120:44 [ovrl];[video][ovrl]overlay=15:25[videoandlogo]" -map "[videoandlogo]" -map "[audio]" output.mp4 

1 个答案:

答案 0 :(得分:0)

找到了答案(希望它将对某人有所帮助)。 对于音频问题,我通过在所有电影中放置apad来解决(需要将最长电影的apad放在首位)。并修复永无休止的电影,我放了“ -t”。 谢谢。