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

sun*_*ata 5 conversion convert ffmpeg ogg-vorbis

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

我怎样才能做到这一点?


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

ffmpeg -i filename.ogg -ab 32k -f ogg new-filename.ogg
Run Code Online (Sandbox Code Playgroud)

但我收到此错误:

[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!
Run Code Online (Sandbox Code Playgroud)

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

感谢帮助!

and*_*.46 9

这里有两个很好的选择:

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

两者的详细信息如下:

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

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

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

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

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

ffmpeg -i filename.ogg -c:a libvorbis -ab 32k -ar 22050 new-filename.ogg
Run Code Online (Sandbox Code Playgroud)

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

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
Run Code Online (Sandbox Code Playgroud)

您会对生成的输出文件大小和音频质量感到惊喜。我在“参考资料”中包含了一个很棒的 HydrogenAudio 资源的链接,它应该指导 Opus 的更好的命令行......

参考:

  • 采样率:来自 Audacity 开发人员的一个很好的页面,展示了音频采样率的最佳设置。
  • 语音编码质量:指导 Opus 语音设置的权威性 HydrogenAudio 页面。

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