将RAW 24位签名PCM转换为32位PCM原始

时间:2017-04-28 16:05:54

标签: audio pcm

我是新手。 我想了解任何工具/快速方法转换24位PCM原始(无头)文件,具有3字节PCM样本, 到32位PCM原始文件,每个样本有4个字节,4字节数据的MSByte作为3字节样本的符号/零扩展。

除了24位原始文件外,如果它有帮助,我也有相应的WAVE文件。

在大胆尝试时,虽然它将24位转换为32位,但它没有符号/零延伸,但是它左移了8位24位样本。所以实际上24位样本位于32位的左对齐24位,这不是所期望的。

感谢。

2 个答案:

答案 0 :(得分:0)

我会假设你的意思是左移8而不是右移8。

在这种情况下,符号扩展的概念是不必要的。想象一下,你有一个负24位值0x800000。然后左移版本将是0x80000000。没有符号扩展但它仍然有正确的负号。

总而言之,我认为大胆正是应该做的,就是简单地将位移起来。除非由于某种原因,你的数据是无符号的,这是非常不寻常的。

答案 1 :(得分:0)

指出更多的搜索指向一种方法来使用sox - on linux。

sox -t s24 --endian little input.pcm -t s32 output.pcm vol 0.00390625

工作得很好。 由于原始PCM采样从24位转换为32位,默认情况下左移8位,所以将0.00390625的音量降低48dB,但我希望它向下移8位,这样可以将音量降低48dB < / p>