bry*_*n79 8 audio flac ffmpeg wav webm
我想从带有 Opus 音频流的 WebM 文件创建 WAV 和 FLAC 音频文件,并且我希望这样做而不进一步降低音频。我目前正在使用如下两步流程(WAV 示例展示):
ffmpeg -i "file.webm" -vn -acodec copy "file.opus"
ffmpeg -i "file.opus" "file.wav"
Run Code Online (Sandbox Code Playgroud)
是否可以一步完成?如果是这样,WAV 与 FLAC 会有所不同吗?
我尝试了以下操作,但它会导致文件大小不同,因此我认为它在创建 WAV 文件之前以某种中间格式重新编码(导致“-acodec copy”标志避免的音频质量下降):
ffmpeg -i "file.webm" -vn "file.wav"
Run Code Online (Sandbox Code Playgroud)
也许有点晚了,但仍然有一些答案:
有人在评论中指出了解决方案,要缩短它,您可以跳过:
-ac 2
Run Code Online (Sandbox Code Playgroud)
(文档中规定了默认设置"For output streams it is set by default to the number of input audio channels",因此在您不想重新映射音频通道的情况下不需要)
-f wav
Run Code Online (Sandbox Code Playgroud)
(如果您使用 .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"
Run Code Online (Sandbox Code Playgroud)
默认情况下,这会将您的作品流重新编码为该pcm_s16le引用PCM signed 16-bit little-endian
(-vn忽略视频轨道和专辑封面)
您可以选择其他格式-f,如果您需要在 .wav 中使用特定的音频格式,此页面肯定可以帮助您:
https: //trac.ffmpeg.org/wiki/audio%20types
这个衬垫是最简单的,因为您使用第一个命令所做的就是将 opus 流复制到另一个容器中(添加了标签的相同数据流(更新了写入库标签),然后将其转换为 pcm (.wav)
而 one liner 对您的音频执行完全相同的操作,甚至通过“跳过重新封装到 .opus”步骤并将您的 opus 流转码为 pcm 流来更快。
您观察到的大小差异可能是由元数据的变化引起的,而不是音频流本身:)