我想使用 Opus 音频流从 WebM 文件创建 WAV 和 FLAC 音频文件,并且不想进一步降低音频质量。我目前使用以下两步流程(WAV 示例显示):
ffmpeg -i "file.webm" -vn -acodec copy "file.opus"
ffmpeg -i "file.opus" "file.wav"
是否可以一步完成?如果可以,WAV 和 FLAC 有什么不同吗?
我尝试了以下操作,但导致文件大小不同,因此我推测它在创建 WAV 文件之前以某种中间格式重新编码(导致“-acodec copy”标志可以避免的音频质量下降):
ffmpeg -i "file.webm" -vn "file.wav"
答案1
可能有点晚了,但仍然有一些答案:
有人在评论中指出了一个解决方案,为了缩短它,你可以跳过:
-ac 2
(文档中规定了默认设置"For output streams it is set by default to the number of input audio channels"
,因此如果您不想重新映射音频通道,则不需要)
-f wav
(如果您使用 .wav 扩展名命名输出文件,则 ffmpeg 将默认使用文档中指定的 wav 格式,"The format is normally auto detected for input files and guessed from the file extension for output files, so this option is not needed in most cases."
对于您的输出 .wav 文件也是如此)
ffmpeg -i "file.webm" -vn "file.wav"
默认情况下,这将重新编码您的作品流,以此pcm_s16le
引用PCM signed 16-bit little-endian
(-vn
忽略视频轨道和专辑封面)
您可以选择其他格式-f
,如果您需要在 .wav 中使用特定的音频格式,此页面肯定可以为您提供帮助:
https://trac.ffmpeg.org/wiki/audio%20types
这行命令最简单,因为你用第一个命令所做的就是将 opus 流复制到另一个容器中(相同的数据流,添加了标签(更新了写入库标签)然后将其转换为 pcm(.wav)
而一行程序对您的音频执行完全相同的操作,甚至更快,通过“跳过重新封装为.opus”步骤,只需将您的 opus 流转码为 pcm 流。
您观察到的大小差异可能是由元数据的变化而不是音频流本身的变化引起的:)