我正在尝试编写一个程序来显示PCM数据。我一直很沮丧地试图找到具有正确抽象级别的库,但是我已经找到了python wave库并一直在使用它。但是,我不确定如何解释数据。
wave.getparams函数返回(2个 channel ,2个字节,44100 Hz,96333帧,无压缩,无压缩)。这一切看起来都很愉快,但是后来我尝试打印一个帧:'\xc0\xff\xd0\xff',这是4个字节。我想一帧有可能是2个样本,但歧义并没有到此为止。
96333帧* 2个样本/帧*(1/44.1k秒/样本)= 4.3688秒
但是,iTunes报告的时间接近2秒,并且基于文件大小和比特率的计算大约为2.7秒。这里发生了什么?
另外,我如何知道字节是带符号的还是无符号的?
非常感谢!
最佳答案
“两个 channel ”表示立体声,因此,将每个 channel 的持续时间相加是没有意义的-因此您的距离减少了两倍(2.18秒,而不是4.37秒)。至于签名,例如here所解释的,我引用:
这是WAV格式(实际上是其超集RIFF)规范的一部分,因此不依赖于您用于处理WAV文件的库。
关于python - 解释WAV数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2226853/