使用FFmpeg添加、删除、替换和提取视频中的音频
![作者头像](https://ask.qcloudimg.com/custom-avatar/5720403/q27qk5olw.jpg)
![](https://ask.qcloudimg.com/http-save/5720403/d8a69ee2d918a8d746a1215bdbdedb4c.gif)
点击上方“LiveVideoStack”关注我们
翻译、编辑:Alex 技术审校:李忠 本文来自OTTVerse,作者为Krishna Rao Vijayanagar。
![](https://ask.qcloudimg.com/http-save/5720403/c31778d1c7163d3e78fa7bd7681c04e5.jpeg)
▲扫描图中二维码或点击阅读原文▲
了解音视频技术大会更多信息
FFmpeg
Easy-Tech
#019#
FFmpeg 是一个超级强大的工具,它可以在视频文件中添加、删除、提取或者替换音频。如果你的电脑上已经安装了FFmpeg,那么你就拥有了可以给电影添加或删除音频的工具!
我们一起来看看FFmpeg是如何做到的。
使用FFmpeg删除视频中的音频
很多人想要知道如何从录制的视频中删除音轨,比如马路噪音或者背景噪音。
删除音频最简单的方法是: 只将视频复制到一个新的文件中,而不复制音频 。这个方法之所以简单,是因为它无需将视频重新编码。下面是删除音频的命令行:
ffmpeg.exe -i videoWithAudio.mp4 -c:v copy -an videoWithoutAudio.mp4
- 使用-c:v copy命令将视频复制到videoWithoutAudio.mp4
- -an告诉FFmpeg不要复制音频
上述方法非常适用于电影中只有一个音轨的情况。但是,如果电影中有3~4个音轨,而你只想删除第二个音轨,该如何操作?
如何通过FFmpeg删除某个特定音轨?
我们在下一部分将学习到。
使用FFmpeg删除特定音频
你可以使用FFmpeg中的map命令来删除特定音轨。
map命令的通用语法是:
-map input_file_index:stream_type_specifier:stream_index
然后,你可以通过-map 0:a:1(从0开始计数)从视频中选择第二个音轨。在上文的例子中,如果你的文件中有一个视频和两个音轨,那么你就可以使用-map 0:a:1只选择第二个音轨,并将它复制到你的最终输出文件中。
同样,-map 0是指选择第一个输入文件中的所有数据(包括音频和视频),所以你需要先选择所有数据,然后取消选择音频。
ffmpeg.exe -i videoWithAudio.mp4 -map 0 -map 0:a:1 -copy videoOutput.mp4
如果电影中有5个音轨,除了第一个,其他你都想选择。这个时候你可以使用 反向的map命令 (在map命令的参数前加负号)。使用-map -0:a:0 这一命令,FFmpeg在选择时就会忽略第一个音轨。反向的map非常强大!
实际上,我们已在前文学习了使用 -an命令从视频中删除音频。你可以通过如下方式,使用反向的map来达到相同的效果。
ffmpeg -i videoWithAudio.mp4 -map 0 -map -0:a videoWithoutAudio.mp4
使用FFmpeg添加音频
你已经删除了一个音轨,那么你很可能想要再添加一个,对吧?下面我们将学习如何使用FFmpeg向视频中添加音频。
在前文中你已经学习了map命令的使用,因此添加音频对你来说应该很容易。命令行如下所示:
ffmpeg \
-i video.mp4 \
-i audio.mp3 \
-c copy \
-map 0:v:0 \