ffmpeg - 如何将多个音频与时间偏移合并到视频中?

时间:2017-05-28 20:50:27

标签: ffmpeg

我想使用FFMPEG来传输多个音频和一个视频。

材料是:

  1. 两个短音频片段(短片段 - 1.3gp,短片段 - 2.3gp),
  2. 带声音的一个视频片段(1.mp4)
  3. 和一个与视频剪辑具有相同持续时间的音频剪辑(1.mp3)。
  4. 要求是:

    1. 删除视频片段的声音
    2. 添加1.mp3
    3. 在0秒时间戳添加短片-1.3gp,短片-2.3gp,10秒时间戳。
    4. 要求如下所示。

      < - 短片段 - 1.3gp持续时间 - > < - short-clip-2.3gp持续时间 - >

      < -------------------------------------- 1.mp3 ---- -------------------------------------------------&GT ;

      < -------------------------------------- 1.mp4 ---- -------------------------------------------------&GT ;

      我使用的命令如下,但它不能按预期工作。 ffmpeg -i 1.mp4 -i 1.3gp -itsoffset 00:00:10 -i 2.3gp -i 1.mp3 -map 0:v -map 1:a -map 2:a -map 3:a -c:v copy -c:a copy result.mp4

      任何提示都表示赞赏!

2 个答案:

答案 0 :(得分:5)

你必须混合音频流:

ffmpeg -i 1.mp4 -i 1.3gp -i 2.3gp -i 1.mp3
  -filter_complex "[2]adelay=10000|10000[s2];[3:a][1:a][s2]amix=3[a]"
  -map 0:v -map "[a]" -c:v copy result.mp4

答案 1 :(得分:5)

感谢Mulvya的解决方案。以下是有关如何将多个音频流与延迟要求混合的额外信息:

ffmpeg -i 1.mp3 -i 1.3gp -i 2.3gp -i 3.3gp -i 4.3gp -i 5.3gp -i 1.mp4 \ 
-filter_complex "[2]adelay=2790|2790[s2];\
[3]adelay=10300|10300[s3];\
[4]adelay=14930|14930[s4];\
[5]adelay=21090[s5];\
[0][1][s2][s3][s4][s5]amix=6[mixout]" \
-map 6:v -map [mixout] -c:v copy result.mp4

困难的部分是:[2]adelay=2790|2790[s2]。它意味着选择第三个输入,给出2,79秒的延迟和输出为s2',' s2'用于以下' amix'命令生成' 6 [mixout]'然后在' -map'中使用。