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

Xi *_*iao 4 ffmpeg

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

材料是:

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

要求是:

  1. 删除视频剪辑的声音
  2. 添加1.mp3
  3. 在0秒时间戳添加短剪辑1.3gp,在10秒时间戳添加短剪辑2.3gp.

要求如下所示.

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

<-------------------------------------- 1.mp3 -------- --------------------------------------------->

<-------------------------------------- 1.mp4 -------- --------------------------------------------->

我使用的命令如下,但它不能按预期工作. 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

任何提示都表示赞赏!

Gya*_*yan 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
Run Code Online (Sandbox Code Playgroud)


Xi *_*iao 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
Run Code Online (Sandbox Code Playgroud)

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

  • 我正在寻找一个类似的、更简单的命令,它是一个更简单的命令,可以在特定时间将一个简短的音频文件插入到视频中。我相信这篇文章中共享的命令是正确的方法,但不知道如何修改它.. 任何帮助将不胜感激。 (2认同)