sox - 如何创建比特率为16kbps的mp3文件

Sha*_*oor 5 audio mp3 transcoding sox libsox

目前使用的命令是

    `sox input.wav -G -t mp3 -r 16k test.mp3`
Run Code Online (Sandbox Code Playgroud)

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

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

Fra*_*kow 13

sox格式手册中,您会发现它是可-C选项.下面我引用整个部分,因为你可能会发现它很有趣.

但是,如果我调用sox test.wav -C 16.01 test.mp3我的testfile(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 Layer 3)是用于音频和视频压缩的受专利保护的MPEG标准的一部分.它是一种有损压缩格式,可实现良好的压缩率,几乎没有质量损失.

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

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

MP3压缩参数可以通过SOX的-C选项如下(请注意,当前语法如有更改)来选择:

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(大小)和高质量(速度).