Python WAV格式解析:非标准数据帧输出

用户名

我对某些正在解析的WAV文件的错误十六进制输出感到困惑。我的问题是:如何解释和/或纠正以下示例中的异常数据帧?

我正在使用Python标准库从WAV文件读取数据帧。

来自IDLE的十二个示例框架打印输出的示例输入/输出,以及我的右侧注释,如下所示:

在darwin类型的Python 3.3.2(v3.3.2:d047928ae3f6,2013年5月13日,13:52:24)[GCC 4.2.1(Apple Inc. build 5666)(dot 3)] license()”以获取更多信息。

>>> import wave
>>> sound = wave.open("/Users/Fergus_Home/Desktop/DmytroK.wav",mode = None)
>>> sound.setpos(100000)
>>> sound.readframes(1) 
b'\x15\xff\x15\xff'     #<----Clearly hexadecimal
>>> sound.readframes(1) 
b'\xfd\xfe\xfd\xfe'
>>> sound.readframes(1) 
b'\xdc\xfe\xdc\xfe'
>>> sound.readframes(1) 
b'\xbc\xfe\xbc\xfe'
>>> sound.readframes(1) 
b'\x9b\xfe\x9b\xfe'
>>> sound.readframes(1) 
b'\x88\xfe\x88\xfe'
>>> sound.readframes(1) 
b'}\xfe}\xfe'          #<------- Corrupted? Compressed? Junk data/padding? 
                       #Text editor interpreting a hexadecimal as a character? 
>>> sound.readframes(1) 
b'g\xfeg\xfe'          #<------- ???
>>> sound.readframes(1) 
b'N\xfeN\xfe'          #<------- ???
>>> sound.readframes(1) 
b';\xfe;\xfe'          #<------- ???
>>> sound.readframes(1) 
b"'\xfe'\xfe"          #<------- ???
>>> sound.readframes(1) 
b'\x0f\xfe\x0f\xfe'    #<----Clearly hexadecimal

注意:

1)第一对十六进制组形成左通道,第二对十六进制组形成右通道。因此,在第一帧中,左通道十六进制样本为15 FF,右通道十六进制样本也为15 FF。

2)默认情况下,WAV文件为小尾数格式。这意味着最高有效位将保留在不规则的打印输出中。最低有效位是被字符替换的位。

3)查询表明未压缩数据。

4)我发现用于解析AIFF文件的Python标准库存在相同的问题。来自各种设备的其他录音也会发生这种情况。

对于每帧打印输出中的最低有效位有什么想法?

所有工人都是必不可少的

您所看到的只是4字节帧的ASCII表示。

>>> len(b'}\xfe}\xfe')
4
>>> b'}\xfe}\xfe' == b'\x7d\xfe\x7d\xfe'
True
>>> b'\x7d\xfe\x7d\xfe'
b'}\xfe}\xfe'
>>> b'}' == b'\x7d'
True
>>> b'g' == b'\x67'
True
>>> b'N' == b'\x4e'
True
>>> b';' == b'\x3b'
True
>>> b"'" == b'\x27'
True

但是也许binascii可以为您提供更好的表示形式:

>>> import binascii
>>> binascii.hexlify(b'\x7d\xfe\x7d\xfe')
b'7dfe7dfe'
>>> binascii.hexlify(b'}\xfe}\xfe')
b'7dfe7dfe'

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章