改变(降低) ogg 文件的质量?

改变(降低) ogg 文件的质量?

我有一个 .ogg 文件(包含语音),质量为 192kbps,我想将其降低到 32kbps(以节省空间)

我怎样才能做到这一点?


到目前为止我已经尝试过这个:

ffmpeg -i filename.ogg -ab 32k -f ogg new-filename.ogg

但我收到此错误:

[libvorbis @ 0x56157365ab60] encoder setup failed
Error initializing output stream 0:0 -- Error while opening encoder for output stream #0:0 - maybe incorrect parameters such as bit_rate, rate, width or height
Conversion failed!

我是不是用错了命令?有没有更好的方法来节省空间?请注意,我只能访问 192kbps 文件(不是原始文件)

非常感谢您的帮助!

答案1

这里有两个很好的选择:

  1. 调整 FFmpeg 命令行以生成较小的 Og​​g Vorbis 文件
  2. 使用 FFmpeg 使用 libopus 创建小文件

两者的详情如下:

1. 调整您的 FFmpeg 命令行...

关键问题是 FFmpeg 不会自动地更改音频采样率以适当匹配您选择的比特率。但我猜 FFmpeg 通常不会做很多手动操作!

请记住,音频 CD 的采样率通常为 44100 Hz,而简单电话的采样率通常略高于 8000 Hz。因此,您可以选择最适合 32k Ogg Vorbis 音频的采样率。以下是一些指导原则:

  • 44100 赫兹:典型的音频 CD 采样率。FFmpeg 拒绝了 32k 文件。
  • 32000赫兹:适用于语音,也适用于需要较小文件大小且预计质量损失较小的其他音频文件。FFmpeg 拒绝了 32k 文件。
  • 22050赫兹:适用于语音并可用于其他音频,但音频质量可能会有所损失。被 FFmpeg 接受为 32k 文件。
  • 11025 赫兹:音质很差。被 FFmpeg 接受为 32k 文件。
  • 8000赫兹:采样率比现代电话系统略低,不推荐用于大多数录音任务。被 FFmpeg 接受为 32k 文件。

考虑到这一点,我自己的测试表明你最好使用 22050 Hz 的采样率,请注意,这应该是完全足够用于语音,因此你的命令行应该是:

ffmpeg -i filename.ogg -c:a libvorbis -ab 32k -ar 22050 new-filename.ogg

这在我的设置上产生了相当合理的结果......

2. 使用 FFmpeg 使用 libopus 创建小文件……

如果您可能不太想使用 Ogg Vorbis,那么一个很好的选择是使用 Opus,在我的测试中,与 Ogg Vorbis 32k 编码相比,它为每个文件节省了相当多的千字节。尝试以下为您的语音文件量身定制的方法:

ffmpeg -i filename.ogg \
-c:a libopus -b:a 16k -ar 16000 -ac 1 -application voip \
new-filename.ogg

您将对输出文件的大小和音频质量感到惊喜。我在“参考资料”中提供了一个很棒的 HydrogenAudio 资源的链接,该资源应该可以指导您使用更好的 Opus 命令行...

参考:

  • 采样率:Audacity 开发人员提供的一个精彩页面,演示了音频采样率的最佳设置。
  • 语音编码质量:权威的 HydrogenAudio 页面,用于指导 Opus 的语音设置。

  • 15.8 自由:用于 libopus 编码的 FFmpeg 选项。请注意-application voip我上面使用的设置,它与 opusenc 没有等效设置(与其他设置不同)。

答案2

文件的默认采样率不支持此低比特率。您必须先指定较低的采样率,然后才能降低比特率。添加选项 -ar 8000,以使选项 -b:a 32k 被接受。

相关内容