这两个从视频中提取音频的命令有什么区别吗?
ffmpeg -i input.mp4 -c copy -map 0:a output.wav
ffmpeg -i input.mp4 -vn -acodec copy output.wav
答案1
如果您的 mp4 文件仅包含一个音轨,那么两个命令的结果相同。
如果您的 mp4 包含多个音轨/流(我不是指流中的多个通道),则至少存在一个主要区别。
WAV 容器仅允许一个音轨,因此当您使用-map 0:a
它时,可能会尝试将多个音轨复制到您的 WAV 文件中,这将导致以下错误:
Stream mapping:
Stream #0:2 -> #0:0 (copy)
Stream #0:3 -> #0:1 (copy)
Stream #0:4 -> #0:2 (copy)
Stream #0:5 -> #0:3 (copy)
Could not write header for output file #0 (incorrect codec parameters ?): Invalid argument
未指定映射的命令不会引发错误,因为默认情况下,如果未指定映射,ffmpeg 只会输出每种类型的一个轨道。
顺便说一句,您不需要-vn
在使用-acodec copy
和指定 WAV 容器时进行指定,因为 ffmpeg 将自动不会尝试将视频包含在 WAV 中。