【问题标题】:How to add an external audio track to a video file using VLC or FFMPEG command line如何使用 VLC 或 FFMPEG 命令行将外部音轨添加到视频文件
【发布时间】:2013-12-13 19:48:42
【问题描述】:

我想使用 bash 脚本将 audio.mp3 音轨添加到无声 video.mp4 文件中,“cvlc”“ffmpeg”命令行的正确语法是什么?

我使用 VLC 和 --no-audio 选项录制了视频,因此没有可以从原始视频复制的比特率或编码等设置。

【问题讨论】:

    标签: ffmpeg video-processing vlc audio-processing


    【解决方案1】:

    流复制

    stream copy 的示例,或重新复用来自video.mp4 的视频(输入0)和来自audio.mp3 的音频(输入1):

    ffmpeg -i video.mp4 -i audio.mp3 -map 0:v -map 1:a -codec copy -shortest out.mp4
    

    这将避免编码,因此速度非常快,不会影响质量。

    重新编码

    如果您确实需要重新编码大小或需要与输入不同的格式,您可以告诉 ffmpeg 使用什么编码器。重新编码为 H.264 视频和 AAC 音频的示例:

    ffmpeg -i video.mp4 -i audio.mp3 -map 0:v -map 1:a -codec:v libx264 \
    -preset medium -crf 23 -codec:a aac -b:a 192k -shortest output.mp4
    

    注意事项:

    -map 选项允许您指定所需的流,例如,-map 0:v 指的是第一个输入的视频流。如果你不告诉 ffmpeg 你想要什么流,那么它将使用默认的stream selection,即为每种流类型选择一个流。默认值通常很好,但建议明确,这样您可以获得预期的结果。

    -shortest 选项指示 ffmpeg 在最短持续时间输入结束时结束输出文件。

    始终建议使用最近的 ffmpeg 版本。最简单的方法是download a recent ffmpeg build,但您也可以关注guide to compile ffmpeg

    另见:

    【讨论】:

    • 感谢您的回答,我已经尝试了您的两个建议,它返回以下错误消息:无法识别选项“编解码器”无法为选项“编解码器”设置值“复制” 我尝试使用 'vcodec' 选项并返回:应用程序在流 0: 50 >= 50 中向多路复用器提供了无效的、非单调递增的 dts
    • @Jonathan 您需要显示您的实际 ffmpeg 命令和完整的 ffmpeg 控制台输出。
    • 一个简短的说明,它只是帮助我使用 avconv 而不是 ffmpeg:因为 avconv 实际上是 ffmpeg 的一个分支,所以按原样使用上面的第一个确切的命令行“流复制”并替换 ' ffmpeg' 和 'avconv' 对我来说工作得很好。 HTH!
    • 我对来自 youtube 的数据进行了测试,该数据分别流式传输音频和视频;在获得源数据(通过 httpfox 和 wget)后,第一个命令正确地重新组合了源文件。
    猜你喜欢
    • 2016-03-09
    • 2013-11-17
    • 1970-01-01
    • 1970-01-01
    • 2016-04-01
    • 2016-04-11
    • 1970-01-01
    • 2011-11-17
    • 1970-01-01
    相关资源
    最近更新 更多