6

目前使用的命令是

    `sox input.wav -G -t mp3 -r 16k test.mp3`

但这是创建一个比特率为 24.0 kbps 的文件。

如何使输出文件的比特率达到 16.0 kbps?

4

1 回答 1

16

在您找到的sox 格式手册中,这是一个-C选项。下面我引用整个部分,因为您可能会觉得它很有趣。

但是,如果我调用sox test.wav -C 16.01 test.mp3我的测试文件(48kHz/16bit)转换为 32kbps。如果我打电话lame test.wav -b 16 -q 0 test.mp3我得到 16kbps 但 test.mp3 被转换为 8kHz 的采样率。但如果我真的想保持我的 48kHz,lame test.wav -b 16 -q 0 --resample 48000 test.mp3我也会得到 32kbps。所以我们看到,高采样率和高压缩比之间存在折衷。

MP3 压缩音频;MP3(MPEG 第 3 层)是受专利保护的 MPEG 音频和视频压缩标准的一部分。它是一种有损压缩格式,可实现良好的压缩率而质量损失很小。

由于 MP3 已获得专利,因此 SoX 无法在不产生专利持有人费用的情况下分发 MP3 支持。需要支持 MP3 的 SoX 的用户目前必须使用源代码中的 MP3 库(LAME 和 MAD)编译和构建 SoX,或者在某些情况下,获取预构建的动态可加载库。

读取 MP3 文件时,虽然只向用户报告了 16 位,但最多可存储 28 位精度。这是为了允许写入 16 位输出文件的默认行为。用户可以为输出文件指定更高的精度,以防止丢失这些额外信息。MP3 输出文件在编码时将使用高达 24 位的精度。

可以使用 SoX 的 -C 选项选择 MP3 压缩参数,如下所示(请注意,当前语法可能会发生变化):

LAME 编码器的主要参数是比特率。如果-C 的值是一个正整数,它被当作以kbps 为单位的比特率(例如,如果你指定128,它使用128 kbps)。

第二个最重要的参数可能是“质量”(真正的性能),它允许平衡编码速度与质量。在 LAME 中,0 表示质量最高但速度很慢,而 9 表示质量差但速度很快。(5 是默认值,建议 2 作为高质量编码的良好折衷方案。)

因为 -C 值是浮点数,所以小数部分用于选择质量。128.2 选择质量为 2 的 128 kbps 编码。这种方法存在一个问题。我们需要 128 来指定具有默认质量的 128 kbps 编码,因此 0 表示使用默认值。您必须使用 0.01(或 .99)来指定最高质量(128.01 或 128.99),而不是 0。

LAME 使用比特率来指定一个恒定的比特率,但使用可变比特率 (VBR) 可以获得更高的质量。使用 0 到 9 之间的数字选择 VBR 质量(实际大小)。使用值 0 表示高质量、较大的文件,使用值 9 表示较小的质量较低的文件。4 是默认值。

为了将 VBR 的选择压缩到 -C 值浮点数中,我们使用负数来选择 VRR。-4.2 将选择具有高质量(速度)的默认 VBR 编码(大小)。一种特殊情况是 0,它是有效的 VBR 编码参数,但不是有效的比特率。压缩值 0 始终被视为高质量 vbr,因此 -0.2 和 0.2 都被视为最高质量 VBR(大小)和高质量(速度)。

于 2014-11-03T19:46:27.200 回答