【问题标题】:Mix audio/video of different lengths with ffmpeg使用ffmpeg混合不同长度的音频/视频
【发布时间】:2025-12-20 21:05:12
【问题描述】:

我想将来自video.mp4(1 分钟持续时间)的视频和来自audio.mp3(10 分钟持续时间)的音频混合到一个持续时间为 1 分钟的输出文件中。 audio.mp3 的音频应该来自 4 min - 5 min 的位置。我如何使用ffmpeg 做到这一点?

【问题讨论】:

    标签: ffmpeg


    【解决方案1】:

    如果video.mp4 没有音频

    你可以使用这个命令:

    ffmpeg -i video.mp4 -ss 00:04:00 -i audio.mp3 -c copy -shortest output.mkv
    
    • 音频将来自问题中要求的 4 分钟位置 (-ss 00:04:00)。

    • 此示例将 stream copy(重新复用)视频和音频 - 不会发生重新编码。

    如果video.mp4 有音频

    您必须按照此处所述添加-map 选项:FFmpeg mux video and audio (from another video) - mapping issue

    如果音频比视频短

    添加 apad 过滤器以添加静默填充:

    ffmpeg -i video.mp4 -ss 00:04:00 -i audio.mp3 -c:v copy -af apad -shortest output.mkv
    

    注意过滤需要重新编码,所以在本例中音频将被重新编码。

    【讨论】:

    • 谢谢。我不问超级用户,因为我发现,在 * 上很多问题都是我的问题。现在明白了,这是错误的。
    • LordNeckbeard,我认为你错了。因为执行后视频减少了。我尝试将开始时间设置为 30 秒,看看,输出视频是 30 秒,而不是 1 分钟
    • 颈须大人,对不起。我错了。之前我用的不要最后一个ffmpeg版本。现在,一切正常。再次感谢脚本
    • 当视频较长时,您将如何添加从某个时间到结束的视频?这意味着视频末尾会有一段无声的部分
    • -shortest 在较短的流结束时导致编码结束,但假设我有 10 分钟的视频和 3 分钟的音频,我希望播放视频的前 3 分钟音频,其余的保持沉默,我该怎么办?
    最近更新 更多