如何使用 VLC 或 FFMPEG 命令行将外部音轨添加到视频文件
Posted
技术标签:
【中文标题】如何使用 VLC 或 FFMPEG 命令行将外部音轨添加到视频文件【英文标题】:How to add an external audio track to a video file using VLC or FFMPEG command line 【发布时间】:2013-12-13 19:48:42 【问题描述】:我想使用 bash 脚本将 audio.mp3 音轨添加到无声 video.mp4 文件中,“cvlc”“ffmpeg”命令行的正确语法是什么?
我使用 VLC 和 --no-audio 选项录制了视频,因此没有可以从原始视频复制的比特率或编码等设置。
【问题讨论】:
【参考方案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。
另见:
FFmpeg Wiki: H.264 Video Encoding Guide FFmpeg Wiki: AAC Audio Encoding Guide【讨论】:
感谢您的回答,我已经尝试了您的两个建议,它返回以下错误消息:无法识别选项“编解码器”无法为选项“编解码器”设置值“复制” 我尝试使用 'vcodec' 选项并返回:应用程序在流 0: 50 >= 50 中向多路复用器提供了无效的、非单调递增的 dts @Jonathan 您需要显示您的实际 ffmpeg 命令和完整的 ffmpeg 控制台输出。 一个简短的说明,它只是帮助我使用 avconv 而不是 ffmpeg:因为 avconv 实际上是 ffmpeg 的一个分支,所以按原样使用上面的第一个确切的命令行“流复制”并替换 ' ffmpeg' 和 'avconv' 对我来说工作得很好。 HTH! 我对来自 youtube 的数据进行了测试,该数据分别流式传输音频和视频;在获得源数据(通过 httpfox 和 wget)后,第一个命令正确地重新组合了源文件。以上是关于如何使用 VLC 或 FFMPEG 命令行将外部音轨添加到视频文件的主要内容,如果未能解决你的问题,请参考以下文章