我有一个质量为 192kbps 的 .ogg 文件(包含语音),我想将其降低到 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.调整你的FFmpeg命令行...
关键问题是 FFmpeg 不会自动更改音频采样率以适当匹配您选择的比特率。但是我猜FFmpeg通常不会做很多手握!
请记住,音频 CD 通常具有 44100 Hz 的采样率,而简单的电话通常具有略高于 8000 Hz 的采样率。因此,您可以选择为 32k Ogg Vorbis 音频提供最佳采样率。以下是一些指导方针:
考虑到这一点,我自己的测试建议您最好使用 22050 Hz 的采样率,请注意这对于语音来说应该是完全足够的,因此您的命令行应该是:
这在我自己的设置中产生了相当合理的结果......
2. FFmpeg 使用 libopus 创建一个小文件...
如果您可能不是所有使用 Ogg Vorbis 的人,那么一个很好的替代方案是使用 Opus,在我的测试中,与 Ogg Vorbis 32k 编码相比,它从每个文件中减少了合理数量的千字节。尝试为您的语音文件量身定制的类似以下内容:
您会对生成的输出文件大小和音频质量感到惊喜。我在“参考”中包含了一个很棒的 HydrogenAudio 资源的链接,它应该可以指导 Opus 的更好的命令行...
参考:
语音编码质量:指导 Opus 语音设置的权威 HydrogenAudio 页面。
15.8 libopus:与 libopus 编码一起使用的 FFmpeg 选项。请注意
-application voip
我上面使用的设置,它没有与 opusenc 等效的设置(与其他设置不同)。文件的默认采样率不支持这种低比特率。您必须先指定较低的采样率,然后才能降低比特率。为您的选项 -b:a 32k 添加选项 -ar 8000 以被接受。