【问题标题】:sox - how to create mp3 file with bit rate 16kbpssox - 如何创建比特率为 16kbps 的 mp3 文件
【发布时间】:2014-11-03 13:29:20
【问题描述】:

目前使用的命令是

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

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

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

【问题讨论】:

    标签: audio mp3 sox transcoding libsox


    【解决方案1】:

    sox formats manual 中,您发现它是-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 的采样率。但如果我真的想用lame test.wav -b 16 -q 0 --resample 48000 test.mp3 保持我的 48kHz,我也会得到 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)。

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

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

    【讨论】:

    • 尝试“-b 16”时出现错误“sox WARN 格式:mp3 无法编码为 16 位”
    • 没错。 MP3 没有相关的位深度。注意:在 sox -b 代表比特深度,在 lame -b 代表比特率! (如果您不确定区别:bit ratebit depth。)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多