将 RAW 24 位带符号 PCM 转换为 32 位 PCM raw
Converting RAW 24bit Signed PCM to 32bit PCM raw
我是这里的新手。
我想知道任何 tool/quick 方法来转换 24 位 PCM 原始(无头)文件,具有 3 字节 PCM 样本,
转换成一个 32 位 PCM 原始文件,每个样本有 4 个字节,4 字节数据的 MSByte 作为 3 字节样本的 sign/zero 扩展。
除了24bit的raw文件,如果有帮助我也有对应的WAVE文件
在 audacity 中尝试时,虽然它将 24 位转换为 32 位,但它没有 sign/zero 扩展,但它左移了 8,即 24 位样本。所以实际上 24 位样本位于 32 位的左对齐 24 位中,这不是我们想要的。
谢谢。
我假设你的意思是左移 8 位而不是右移 8 位。
在这种情况下符号扩展的概念是不必要的。假设您有一个负的 24 位值 0x800000。那么左移版本将是 0x80000000。没有符号扩展,但它仍然有正确的负号。
总而言之,我认为 Audacity 正在做它应该做的事情,就是简单地向上移动位。除非出于某种原因你的数据是未签名的,这将是非常不寻常的。
经过更多搜索,找到了一种方法,即在 linux.
上使用 sox -
sox -t s24 --endian little input.pcm -t s32 output.pcm vol 0.00390625
它运行良好。
vol 0.00390625 是将音量降低 48dB,因为原始 PCM 样本从 24 位转换为 32 位,默认情况下左移 8 位,但我希望它向下移回 8 位,即音量降低 48dB
我是这里的新手。 我想知道任何 tool/quick 方法来转换 24 位 PCM 原始(无头)文件,具有 3 字节 PCM 样本, 转换成一个 32 位 PCM 原始文件,每个样本有 4 个字节,4 字节数据的 MSByte 作为 3 字节样本的 sign/zero 扩展。
除了24bit的raw文件,如果有帮助我也有对应的WAVE文件
在 audacity 中尝试时,虽然它将 24 位转换为 32 位,但它没有 sign/zero 扩展,但它左移了 8,即 24 位样本。所以实际上 24 位样本位于 32 位的左对齐 24 位中,这不是我们想要的。
谢谢。
我假设你的意思是左移 8 位而不是右移 8 位。
在这种情况下符号扩展的概念是不必要的。假设您有一个负的 24 位值 0x800000。那么左移版本将是 0x80000000。没有符号扩展,但它仍然有正确的负号。
总而言之,我认为 Audacity 正在做它应该做的事情,就是简单地向上移动位。除非出于某种原因你的数据是未签名的,这将是非常不寻常的。
经过更多搜索,找到了一种方法,即在 linux.
上使用 sox -sox -t s24 --endian little input.pcm -t s32 output.pcm vol 0.00390625
它运行良好。 vol 0.00390625 是将音量降低 48dB,因为原始 PCM 样本从 24 位转换为 32 位,默认情况下左移 8 位,但我希望它向下移回 8 位,即音量降低 48dB