【问题标题】:Singler line FFMPEG cmd to Merge Video /Audio and retain both audiosSingler line FFMPEG cmd 以合并视频/音频并保留两个音频
【发布时间】:2014-09-08 09:45:41
【问题描述】:

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

是否有单行 FFMPEG 命令可以使用复制和 -map 参数来实现这一点?

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

【问题讨论】:

    标签: audio video ffmpeg


    【解决方案1】:

    你不能使用一个 cmd 来做到这一点。


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

    ffmpeg.exe -i video.mp4 a.mp3
    

    2。合并两个音频文件(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.合并视频文件和音频文件(video.mp4+audiofinal.mp3=output.mp4)

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

    【讨论】:

      【解决方案2】:

      我认为没有必要从视频中提取音频。我们可以使用-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第二个输入文件的音频流。

      -shortest输出的长度是最短输入的长度

      【讨论】:

        【解决方案3】:

        用例:

        • 为您的背景添加音乐
        • 您渲染了一个视频,但将其中的某些部分静音,因此您不想再次渲染它(因为它太长了),而是只渲染音轨(快速)并想将它与原始视频合并。

        假设

        • 你有你的视频和你的演讲(或者只是音轨,随便
        • 您的 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 - 你的完美视频。

        【讨论】:

          【解决方案4】:

          不用地图也可以实现。

          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 中提取音频

          ffmpeg -i video.mp4 1.mp3

          1. 合并 audio.mp3 和 1.mp3

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

          1. 从 video.mp4 中删除音频(此步骤不是必需的。只是为了正确执行此步骤)

          ffmpeg -i video.mp4 -an videofinal.mp4

          1. 现在合并 audiofinal.mp3 和 videofinal.mp4

          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

          希望这会有所帮助。

          【讨论】:

          • 是的,只需将输出格式更改为 .flv 就可以了
          • 我尝试了您的第二个示例,但输出视频没有从 mp3 文件中提取音频。输出 mp4 与输入 mp4 文件相同。如果我的 FFMPEG 安装有问题,如果您对此 CMD 非常确定,那么我可以在不同的服务器上尝试它。请确认。再次感谢。
          • 是的,非常确定。我又试了一次。我使用的是 ffmpeg 版本 2.2.4 (2000-2014)。如果您在安装时遇到问题,请查看我的回答 here 通过预编译的二进制文件安装是最好的安装方式。
          • 这太疯狂了,我在与您的 FFMPEG 版本相同的不同服务器(linux)上尝试了相同的操作。但是这次输出的视频从 mp3 文件中拾取了声音,丢失了视频文件中的原始声音。我希望输出保持视频声音和音频声音。让 FFMPEG 在不同的安装中表现如此不同感到惊讶。
          • 哦,即使我也不知道为什么会这样。可能是你没有安装所有的编解码器。这可能是一种可能性。
          【解决方案5】:

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

          【讨论】:

          • 这不是解决方案,会重新编码视频。
          • 好的,我无法将我的音频/视频与上述给定命令合并。当我第一次运行命令从视频中删除音频然后使用合并命令时。它解决了我的问题。可能对其他人有帮助。
          【解决方案6】:

          这很容易用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
          

          【讨论】:

          • 我想合并视频和音频,我使用此命令进行合并,但我有一个问题,当我合并 whats app 视频和 mp3 文件时,它就完成了,但是当我录制视频然后这个视频时合并到 mp3 文件然后它提供成功结果但它没有合并。这背后的问题是什么?
          猜你喜欢
          • 2018-12-27
          • 2016-06-13
          • 2020-07-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-12-22
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多