问题描述
我需要将多个视频文件(包含音频)合并为一个视频.我注意到最近发布并使用了 xfade,但我遇到了音频同步问题.
I need to merge multiple video files (with included audio) into a single video. I've noticed xfade has been recently released and used it but I am running into an audio sync issue.
所有视频的视频和音频都采用相同的格式/分辨率/声望和比特率/等.
All videos are in the same format / resolution / fame and bitrate / etc both for video and audio.
这是我使用 0.5 个淡入淡出过渡合并 5 个不同持续时间的视频的方法:
Here is what I am using to merge 5 videos of various durations with 0.5 crossfade transitions:
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
上面的代码生成一个带音频的视频.第一段和第二段与音频对齐,但从第二个过渡开始,声音未对齐.
The code above generates a video with audio. The first and second segment is aligned with audio but starting with the second transition the sound is misaligned.
推荐答案
您的偏移量不正确.试试:
Your offsets are incorrect. Try:
ffmpeg -i v0.mp4 -i v1.mp4 -i v2.mp4 -i v3.mp4 -i v4.mp4 -filter_complex
"[0][1:v]xfade=transition=fade:duration=1:offset=3[vfade1];
[vfade1][2:v]xfade=transition=fade:duration=1:offset=10[vfade2];
[vfade2][3:v]xfade=transition=fade:duration=1:offset=21[vfade3];
[vfade3][4:v]xfade=transition=fade:duration=1:offset=25,format=yuv420p;
[0:a][1:a]acrossfade=d=1[afade1];
[afade1][2:a]acrossfade=d=1[afade2];
[afade2][3:a]acrossfade=d=1[afade3];
[afade3][4:a]acrossfade=d=1"
-movflags +faststart out.mp4
如何获得 xfade offset
值:
How to get xfade offset
values:
输入 | 输入时长 | + | 上一个xfade offset | - | xfade duration | 偏移量 = |
---|---|---|---|---|---|---|
v0.mp4 | 4 | + | 0 | - | 1 | 3 |
v1.mp4 | 8 | + | 3 | - | 1 | 10 |
v2.mp4 | 12 | + | 10 | - | 1 | 21 |
v3.mp4 | 5 | + | 21 | - | 1 | 25 |
- 参见 xfade 和 acrossfade 过滤器文档了解更多信息.
- 请参阅 FFmpeg Wiki:xfade,了解过渡效果库和更多示例.
- 您可以使用
ffprobe
获取输入持续时间.
- See xfade and acrossfade filter documentation for more info.
- See FFmpeg Wiki: xfade for a gallery of transition effects and more examples.
- You can get input durations with
ffprobe
.
这篇关于使用 ffmpeg 和 xfade 过滤器合并多个视频文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!