我正在尝试将原始文件( headless 文件)转换为 wav

在 ADPCM 16 速率 8000

我已经尝试了三个控制台命令

sox -e ima-adpcm -r 8000 input.raw output.wav
sox -e ima-adpcm -r 8000 -b 16 input.raw output.wav

这些触发相同的错误:
sox FAIL formats: bad input format for file `input.raw': data encoding or sample size was not specified

和最后一次尝试
sox -t raw -t wav -e ima-adpcm -r 8000 -b 16 input.raw output.wav

这触发了另一个错误
sox FAIL formats: can't open input file `input.raw': WAVE: RIFF header not found

你知道为什么我会收到这些错误吗?

谢谢

编辑

前 48 个字节的十六进制转储仅供引用
C0 0C 00 03 00 00 37 C0 34 0C D0 30 37 C0 30 C7 CD D3 C0 03 CD 00 37 03
C0 00 0D 0C CD 00 C0 10 0F 00 03 55 0B 4B 0F 0F 0C 0F 34 0F 0D C3 0D 03
00 C0 31 00 00 D0 C0 00 F4 4C 03 33 34 33 31 33 0D 33 D0 03 C0 4C C0 43

最佳答案

看起来使用 -t raw -e ima-adpcm 不起作用,但您必须使用 -t ima -e ima-adpcm

我猜 -t raw 表示原始 PCM,而 -t ima 表示原始 ADPCM?

这对我将 ADPCM 文件转换为 .wav 很有用:

sox -t ima -r 44100 -e ima-adpcm in.raw -e signed-integer -b 16 out.wav

只要您用 -t ima 指示 ADPCM,文件扩展名似乎并不重要。

10-05 21:40