FFmpeg 是一个超级强大的工具,可以添加、删除、提取或替换视频文件中的音频。如果您的计算机上安装了 FFmpeg 的副本,那么您就有了帮助您从电影中添加或删除音轨的工具。
让我们开始吧,看看它是如何完成的!
如何使用 FFmpeg 从视频中删除音频
许多人想知道如何从他们录制的视频中移除或删除音轨。这可能是因为道路噪音或背景噪音等,他们想摆脱它。
移除或删除音频的最简单方法是将视频实际复制到新文件并在执行此操作时丢弃音频。这是一种简单的技术,因为它不涉及在您观看视频时对视频进行重新编码。这是实现此目的的命令行。
ffmpeg.exe -i videoWithAudio.mp4 -c:v copy -an videoWithoutAudio.mp4
-c:v copy
将视频轨道复制到videoWithoutAudio.mp4
-an
告诉 FFmpeg不要复制音频
现在,如果您的电影中只有一个音轨,这将非常有用。但是,如果您有三个或四个音轨并且您只想删除第二个音轨会怎样?
如何使用 FFmpeg 删除特定音轨?
让我们看看下一节。
如何使用 FFmpeg 删除特定音轨
要使用 FFmpeg 删除特定音轨,您始终可以使用该map
命令。
命令的一般语法map
是-map input_file_index:stream_type_specifier:stream_index
.
因此,您可以通过说因为编号从 0 开始来选择视频的第二个音轨。-map 0:a:1
在我们的示例中,如果您的文件有 1 个视频轨道和两个音轨,那么您可以使用-map 0:a:1
仅选择第二个音轨并复制它到你的最终输出。
此外,-map 0
从第一个输入中选择所有内容。所以,基本上,您选择所有内容,然后取消选择音频。
ffmpeg.exe -i videoWithAudio.mp4 -map 0 -map 0:a:1 -copy videoOutput.mp4
如果你有 5 个音轨并且你想选择除第一个以外的所有音轨,那么你可以使用否定map
命令。通过说-map -0:a:0
你告诉 FFmpeg 忽略第一个音轨。负面map
很厉害!
实际上,在上一节中,我们学习了如何使用 删除视频中的音频-an
,对吗?您可以使用负映射以及如下方式执行此操作。
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 \
-map 1:a:0 \
videoWithAudio.mp4
这很容易理解。您正在做的是使用map
命令将音频和视频从两个不同的文件复制到输出文件。
-map 0:v:0
选择第 0 个输入文件(我们的视频输入)的第 0 个轨道。- –
map 1:a:0
选择第一个输入文件(我们的音频输入)的第 0 个音轨。 -c copy
` 将两个音轨(音频和视频)复制到输出而无需重新编码。如果您想重新编码,您可以使用适当的音频/视频编解码器和您选择的质量设置。
如何使用 FFMpeg 从视频中提取音频?
另一个非常有用且常见的操作是使用 FFmpeg 从视频中提取音频。您可以在有或没有重新编码音频的情况下执行此操作。
在第一种情况下,让我们看一下从媒体文件中提取音频并在不重新编码的情况下存储它。
提取音频涉及丢弃视频,对吗?-vn
使用删除视频的命令可以轻松实现这一点。该-vn
命令类似于-an
删除音轨的命令。
然后,您所要做的就是将音频从源复制到目标。这是使用-acodec copy
告诉 FFmpeg 只复制音频而不是重新编码的命令来完成的。
ffmpeg -i videoWithAudio.mp4 -vn -acodec copy onlyAudio.aac
简单吧?
现在,让我们来看一个不同的用例,您可能希望在提取音频后对其进行重新编码。下面介绍如何使用 FFmpeg 从视频中提取音频,然后使用libmp3lame
MP3 文件将其编码为不同的质量级别并将其存储。
ffmpeg.exe -i videoWithAudio.mp4 -vn -c:a libmp3lame -q:a 1 onlyAudio.mp3
-q:a
使用LAME 文档中定义的质量呈现,范围从 0-6,其中 0 是高质量音频,6 是低端。
如何使用 FFMpeg 替换视频中的音频?
这是我们今天要研究的最后一个场景。如何替换已包含音频的视频的音轨?
我们已经讨论过这个问题的两步答案是
- 删除音频
- 添加替换音频。
但是,有没有更好或更快的方法来做到这一点?好吧,有了 FFmpeg,*总是*有更好的方法来做某事🙂
命令的一般语法map
是-map input_file_index:stream_type_specifier:stream_index
. -map 1:a:2
因此,您可以通过说因为编号从 0 开始来选择第二个输入的第三个音轨。
ffmpeg -i video_with_audio.mp4 -i newAudio.wav \
-map 0:0 \
-map 1:0 \
-c:v copy \
-c:a libmp3lame -q:a 1 \
-shortest \
video_with_newAudio.mp4
在我们的情况下,我们想从一个文件中获取视频,从另一个文件中获取音频。因此,map
如上所示,该命令在这里派上用场。我们从第 1 个输入(我们的视频)中选择第 0 个音轨,从第 2 个输入(我们的音频)中选择第 0 个音轨。
然后我们按原样复制视频并重新编码音频,然后将它们放在我们的新文件中。如果您不想重新编码音频,您可以简单地说-a:c copy
,音轨将被复制而不是重新编码。
该-shortest
命令用于确保在达到两个输入中较短输入的长度时停止转换。如果它在您的用例中无关紧要,您可以丢弃它。
结论
好了——现在您知道了如何使用 FFmpeg 从视频中添加、删除、替换或提取音频。
FFmpeg 的文档中讨论了很多这些高级选项。
作者简介:Krishna Rao Vijayanagar 博士,OTTVerse 的创始人。
作者系列文章推荐:
使用 FFmpeg 转换为 YUV 并使用 ffplay 播放
如何使用 FFmpeg 以 3 种不同方式剪切/修剪/提取视频文件
FFmpeg 中的 VMAF – Ubuntu 18.04安装和使用指南
如何使用 FFmpeg 以 3 种不同方式剪切/修剪/提取视频文件
版权声明:本文内容转自互联网,本文观点仅代表作者本人。本站仅提供信息存储空间服务,所有权归原作者所有。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至1393616908@qq.com 举报,一经查实,本站将立刻删除。