带有"奇数"的24位样本数据长度

时间:2016-11-15 07:10:16

标签: python

我正在使用pythonscipy.io.wavfile来读取24位wav文件。我知道wavfile有关于24位的问题,我手动整合了Warren在该问题中提出的解决方案。实际上,代码中的更新包括将字节3-by-3分组并计算24位整数(以下代码改编自Warren Weckesser):

if bit_depth not in (8, 16, 32, 64, 96, 128):
    # first read byte per byte

    data = numpy.fromfile(fid, dtype='u1')
    for i in range(len(data) % 3):
        data = numpy.delete(data, len(data) - 1)
        # or data = numpy.delete(data, 0)?
    a = numpy.empty((int(len(data)/3), 4), dtype='u1')
    #print(data.shape)
    a[:, :3] = data.reshape((-1, 3))
    a[:, 3:] = (a[:, 3 - 1:3] >> 7) * 255
    data = a.view('<i4').reshape(a.shape[:-1])

某些wav样本报告24位深度,但实际数据不是3的倍数(例如,2138890字节)。这让我感到困惑:是否存在wavfile没有跳过的元数据?我应该从数组中删除一些字节吗?从它的开始还是从结束?有人遇到同样的问题吗?

提前谢谢!

0 个答案:

没有答案