单行FFMPEG命令合并视频/音频并保留两个音频

时间:2014-07-17 13:28:51

标签: audio video ffmpeg

我有一个项目需要将视频文件与另一个音频文件合并。预期输出是一个视频文件,它将包含来自实际视频的音频和合并的音频文件。输出视频文件的长度将与实际视频文件的大小相同。

是否有单行FFMPEG命令使用copy和-map参数实现此目的?

我将使用的视频格式是flv或mp4 音频文件格式为mp3

6 个答案:

答案 0 :(得分:39)

也可以在不使用地图的情况下实现。

ffmpeg -i video.mp4 -i audio.mp3 output.mp4

如果您想让output.mp4在其中一个输入停止后立即停止(音频/视频) 然后使用

-shortest

例如:ffmpeg -i video.mp4 -i audio.mp3 -shortest output.mp4

这将确保输出在任何一个输入完成时停止。

因为您已经要求使用地图进行此操作。这是你如何做到的:

ffmpeg -i video.mp4 -i audio.mp3 -map 0:0 -map 1:0 -shortest output.mp4

现在,由于您要保留视频文件的音频,请考虑合并audio.mp3video.mp4。这些是步骤:

  1. 从video.mp4
  2. 中提取音频

    ffmpeg -i video.mp4 1.mp3

    1. 合并audio.mp3和1.mp3
    2. ffmpeg -i audio.mp3 -i 1.mp3 -filter_complex amerge -c:a libmp3lame -q:a 4 audiofinal.mp3

      1. 从video.mp4中删除音频(此步骤不是必需的,但只是为了正确执行)
      2. ffmpeg -i video.mp4 -an videofinal.mp4

        1. 现在合并audiofinal.mp3和videofinal.mp4
        2. ffmpeg -i videofinal.mp4 -i audiofinal.mp3 -shortest final.mp4

          注意:在最新版本的ffmpeg中,它只会提示您使用' -strict -2'万一它然后使用这个:

          ffmpeg -i videofinal.mp4 -i audiofinal.mp3 -shortest -strict -2 final.mp4

          希望这会有所帮助。

答案 1 :(得分:10)

**

使用一个cmd无法做到这一点。

**

1.获取视频文件中的音频,音频文件名为 a.mp3

ffmpeg.exe -i video.mp4 a.mp3

2.Merge两个音频文件(audio.mp3 + a.mp3 = audiofinal.mp3)

ffmpeg.exe -i audio.mp3 -i a.mp3 -filter_complex amerge -c:a libmp3lame -q:a 4 audiofinal.mp3

3.Merge视频文件和音频文件(video.mp4 + audiofinal.mp3 = output.mp4)

ffmpeg.exe -i video.mp4 -i audio.mp3 -map 0:v -map 1:a -c copy -y output.mp4

答案 2 :(得分:2)

用例:

  • 将音乐添加到您的背景中
  • 你渲染了一段视频,但是却把它的某些部分静音了,所以你不想再渲染它(因为它太长了),而你只渲染音轨(快)并想要合并它与原始视频。

<强>假设

  • 您的视频带有语音(或只是音轨,无论
  • 您的 music_file 不响亮。否则,你不会听到D:

步骤:

1)从视频中提取音频

ffmpeg -i test.mp4 1.mp3

test.mp4 - 您的文件

2)合并audio.mp3和1.mp3

ffmpeg -i audio.mp3 -i 1.mp3 -filter_complex amerge -c:a libmp3lame -q:a 4 audiofinal.mp3

audiofinal.mp3 - 带音乐的音频

3)删除原始

中的音频
ffmpeg -i example.mkv -c copy -an example-nosound.mkv

example-nosound.mkv - 没有音频的视频

4)合并适当的音频

ffmpeg -i audiofinal.mp3 -i example-nosound.wmv -c:v copy -vcodec copy final.wmv

final.wmv - 您完美的视频。

答案 3 :(得分:2)

我认为没有必要从视频中提取音频。我们可以只使用foo?.()合并两个音频:

-filter_complex amix

ffmpeg -i videowithaudio.mp4 -i audiotooverlay.mp3 -filter_complex amix -map 0:v -map 0:a -map 1:a -shortest videowithbothaudios.mp4将第一个输入文件中的音频叠加在第二个输入文件中的音频之上。

-filter_complex amix第一个输入文件的视频流。

-map 0:v第一个输入文件的音频流。

第二个输入文件的

-map 0:a音频流。

-map 1:a输出的长度是最短输入的长度

答案 4 :(得分:-1)

使用FFmpeg

非常容易
ffmpeg -i vid.mp4 -i audio.mp3 -codec:a libmp3lame -ar 44100 -ab 64k -ac 1 -q:v 1 -pix_fmt yuv420p -map 0:0 -map 1:0

答案 5 :(得分:-1)

如果您无法使用此命令合并视频和音频,请首先从视频中删除声音: ffmpeg -i video.mp4 -an videofinal.mp4