从视频中提取和重新组合音频

wai*_*ain 3 audio video encoding ffmpeg

我厌倦了 Vegas、Premiere、Pinnacle、SoundForge 以及我尝试过的所有其他编辑器。

我正在尝试修改 AVI 文件的音频,但我尝试过的所有编辑器都坚持在我保存更改时重新编码视频,并且要么降低质量要么需要数小时。

有没有办法只从视频中提取音频流ffmpeg,在音频编辑器中编辑它,然后将保存的更改与视频重新组合?

slh*_*hck 6

首先,请确保从他们的下载页面安装最新版本的 FFmpeg 。对于 Windows、Linux 和 OS X,有可用的静态构建。在 OS X 上,您还可以使用Homebrew(带有brew install ffmpeg)。

从视频中提取音频

为了从文件中提取音频流,我们导出到 WAV 容器中的 PCM 立体声音频,因为它是无损的并且不会被重新编码:

ffmpeg -i input-file.avi audio.wav
Run Code Online (Sandbox Code Playgroud)

当然,您可以使用许多其他编解码器,例如 FLAC 或 ALAC。不过,WAV(或 Apple 上的 AIFF)中的 PCM 内容可能最适合编辑。

现在,根据需要对音频流应用任何效果。

重新组合音频和视频

要重新组合音频流和视频文件,请运行:

ffmpeg -i input-file.avi -i audio.wav -c copy -map 0:0 -map 1:0 output.avi
Run Code Online (Sandbox Code Playgroud)

评论

对于流映射-i video,视频和音频文件的顺序正确 ( , -i audio)很重要。否则可能无法正常工作。

-map 0:0 -map 1:0选项会将音频从第二个输入文件(1in 1:0)映射到 AVI,而不是使用原始音频。这是这里最重要的参数。

理论上,您可以将 更改-c copy为仅复制视频比特流 ( -c:v copy) 并使用任何其他压缩音频编解码器,因为copy将尝试使用未压缩的 PCM 立体声音频。同样,您当然可以将编辑后的音频文件保存为 MP3 并使用它,但保留copy.

要将 PCM 立体声 WAV 文件编码为 MP3,请执行以下操作:

ffmpeg -i input-file.avi -i audio.wav -c:v copy -c:a libmp3lame -map 0:0 -map 1:0 output.avi
Run Code Online (Sandbox Code Playgroud)

如果您的音频文件比视频文件短,您可能需要循环播放。提供-loop 1执行此操作的选项。

  • 选项的放置很重要。“-i”之前的任何内容都被视为输入选项,因此 ffmpeg 尝试将“-vcodec copy -acodec copy -scodec xsub”应用于输入的解码器。在输出之前移动适当的选项。 (4认同)