有没有办法用偏移量合并多个视频和音频流?

时间:2019-04-16 14:52:39

标签: ffmpeg

我对我的英语很抱歉,这不是我的母语。我的问题与音频和视频流的ffmpeg串联有关。在线聊天记录了多个音频和视频流。它们都有开始和结束时间点。如果用户关闭了微型相机或照相机,则音频和视频流将不匹配。如何在一个时间序列中对齐所有流?我可以添加一些白噪声来分离两个视频吗?与音频类似。

1 个答案:

答案 0 :(得分:0)

使用搜寻-ss到(-to-t)和concat过滤器可以串联多个输入文件的一部分。像这样:

# create three 10 second test input files with different sine tones
ffmpeg -f lavfi -i testsrc -f lavfi -i sine=400 -t 10 clip1.mp4
ffmpeg -f lavfi -i testsrc -f lavfi -i sine=600 -t 10 clip2.mp4
ffmpeg -f lavfi -i testsrc -f lavfi -i sine=800 -t 10 clip3.mp4
# create a separator file
ffmpeg -f lavfi -i nullsrc -f lavfi -i anoisesrc -t 1 noise.mp4

# concatenate parts of the clips with a separator in between
# -ss is seek to timestamp
# -to is stop at timestamp
# use concat filer to appends all the input files streams in the order 
# they are passed as input arguments
ffmpeg \
    -ss 00:01 -to 00:03 -i clip1.mp4 \
    -i noise.mp4 \
    -ss 00:04 -to 00:06 -i clip2.mp4 \
    -i noise.mp4 \
    -ss 00:07 -to 00:09 -i clip3.mp4 \
    -i noise.mp4 \
    -filter_complex \
    '[0:v][0:a] [1:v][1:a] [2:v][2:a] [3:v][3:a] [4:v][4:a]concat=n=5:v=1:a=1[v][a]' \
    -map '[v]' -map '[a]' \
    output.mp4

希望有帮助!