我需要将多个视频文件(包括音频)合并成一个视频。我注意到最近发布了xfade并使用它,但我遇到了音频同步问题。
所有视频的格式/分辨率/帧率和比特率/音频等都相同。
这是我用来合并5个不同持续时间的视频并使用0.5交叉淡入淡出转换的方式:
ffmpeg \
-i v0.mp4 \
-i v1.mp4 \
-i v2.mp4 \
-i v3.mp4 \
-i v4.mp4 \
-filter_complex \
"[0][1]xfade=transition=fade:duration=0.5:offset=3.5[V01]; \
[V01][2]xfade=transition=fade:duration=0.5:offset=32.75[V02]; \
[V02][3]xfade=transition=fade:duration=0.5:offset=67.75[V03]; \
[V03][4]xfade=transition=fade:duration=0.5:offset=98.75[video]; \
[0:a][1:a]acrossfade=d=0.5:c1=tri:c2=tri[A01]; \
[A01][2:a]acrossfade=d=0.5:c1=tri:c2=tri[A02]; \
[A02][3:a]acrossfade=d=0.5:c1=tri:c2=tri[A03]; \
[A03][4:a]acrossfade=d=0.5:c1=tri:c2=tri[audio]" \
-vsync 0 -map "[video]" -map "[audio]" out.mp4
上面的代码生成了一个带音频的视频。第一个和第二个片段与音频对齐,但是从第二个转换开始,声音就不对齐了。