如何使用ffmpeg对ogg音频文件进行编码?

xpt*_*xpt 1 audio encoding ogg vorbis ffmpeg

我想转换以下简单oggenc命令以使用ffmpeg

oggenc -b 8 input.wav -o out.ogg
Run Code Online (Sandbox Code Playgroud)

ffmpeg libvorbis wrapper doc,它说,

libvorbis 包装器支持以下选项。选项的 oggenc 等效项列在括号中。

  b (-b)
Run Code Online (Sandbox Code Playgroud)

为 ABR 设置以比特/秒表示的比特率。oggenc -b 以千比特/秒表示。

但我只是不知道如何将其应用于ffmpeg,我已经尝试过,

ffmpeg -i input.aac -c:a libvorbis -b 8 out.ogg
ffmpeg -i input.aac -c:a libvorbis b 8 out.ogg
ffmpeg -i input.aac -c:a libvorbis=b:8 out.ogg
Run Code Online (Sandbox Code Playgroud)

但没有一个按预期工作。

更新:我想知道的是如何将 ffmpeg(libvorbis 包装器)文档中列出的选项“翻译”为 ffmpeg 命令。我可以通过-abswitch 进行转码,但我认为这不是libvorbis 包装器特定的选项。因此,如果您提供了答案,请同时提供指定以下所有选项的演示。

b (-b)

q (-q)

minrate (-m)

maxrate (-M)

iblock
Run Code Online (Sandbox Code Playgroud)

bot*_*357 6

这对我有用:

ffmpeg -i test.aac -c:a libvorbis -b:a 64k test.ogg

我不认为 8kb/s 是一个有效值,但我可能是错的。:-)


llo*_*gan 5

答案在你的问题中:

oggenc option    corresponding ffmpeg option
-b               -b:a
-q               -q:a
-m               -minrate
-M               -maxrate
Run Code Online (Sandbox Code Playgroud)

示例命令

ffmpeg -i input.aac -c:a libvorbis -b:a 8k output.oga
Run Code Online (Sandbox Code Playgroud)

如果您想要的值8k失败,则使用更高的比特率或降低您的音频采样率-ar,例如-ar 8000

编码器和多路复用器信息

您可以通过以下方式查看特定于此编码器的其他信息和单个私有选项:

ffmpeg -h encoder=libvorbis
Run Code Online (Sandbox Code Playgroud)

您还可以获得有关多路复用器/输出容器格式的信息:

ffmpeg -h muxer=ogg
Run Code Online (Sandbox Code Playgroud)