
我对 FFmpeg 还不熟悉,但掌握了很多基础知识。我正在尝试了解如何使用 Opus 编码音频。我对音频、比特率、采样率和 Hz 的了解有点薄弱。
我的 MP4 输入文件(音乐视频)使用 AAC 音频编码,具有以下 FFprobe 音频参数:
[sample_rate] => 44100
[channels] => 2
[channel_layout] => stereo
[bit_rate] => 127999
我正在使用以下 FFmpeg 命令将此 MP4 文件转换为 WEBM:
ffmpeg -i input.mp4 -map 0:s? -map 0:v -map 0:a? -vf scale=-2:720 -movflags +faststart -c:v libvpx-vp9 -crf 32 -b:v 1024k -c:a libopus output.webm
当我运行 shell 命令时,出现以下警告:
[libopus @ 0x55ccad7dc440] No bit rate set. Defaulting to 96000 bps.
据我所知,Opus 默认启用可变比特率 (VBR),这应该可以检测并匹配输入音频比特率。但是,Opus 似乎与原始的 127,999 bps 不匹配。
这是否意味着 Opus 正在降低音频质量?输出的音乐实际上听起来不错大部头书,但我的听力有问题。据我所知,很多人可以感知到高达 256kbps 比特率的音频质量差异,这些音乐视频是为了让观众观看的,而不仅仅是我自己。音乐质量对这些视频至关重要。
我也不想设置恒定的比特率-b:a 256k
,因为输入可能没有那么高,这只会浪费磁盘空间来尝试升级。我希望 opus 能够-vbr
最大化音频质量,至少与原始输入质量一样好!但如果 96k 是 Opus 的最高值-vbr
,那就意味着如果输入具有更高的保真比特率,我们将损失很多音频质量,对吗?我假设输入文件的更高比特率相当于更高的音频质量?
帮我理解一下。你会在 Opus 的 FFmpeg 命令中使用哪些标志来最大化音频质量?
答案1
libopus 编码器不支持基于质量的编码。
默认比特率基于通道数。您必须设置一些手动比特率。它可以高达256k * # of channels
。默认情况下,VBR 处于启用状态,这意味着并非所有音频帧都会被限制为固定比特率。它将在目标比特率附近徘徊。