如何使用 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 命令行将外部音轨添加到视频文件的主要内容,如果未能解决你的问题,请参考以下文章

某音直播视频爬取

如何利用VLC或FFMPEG将HTTP的串流转换成RTMP

如何利用VLC或FFMPEG将HTTP的串流转换成RTMP

如何利用VLC或FFMPEG将HTTP的串流转换成RTMP

在Mac OSX上安装ffmpeg && ffmpeg命令行将h264封装为mp4

如何使用 FFmpeg 直播本地视频