我被我正在解析的一些WAV文件的错误十六进制输出所迷惑。我的问题是:如何解释和/或纠正以下示例中的异常数据帧?
我使用python标准库从WAV文件中读取数据帧。
IDLE的12个示例帧打印输出的示例输入/输出,以及右侧的符号,如下所示:
Python3.3.2(v3.3.2:d047928ae3f6,2013年5月13日,13:52:24) 达尔文上的[GCC 4.2.1(Apple Inc.build 5666)(dot 3)] 键入“copyright”、“credits”或“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)第一对十六进制组形成左侧通道,第二对形成右侧通道。所以在第一帧中,左声道十六进制采样是15ff,而右声道十六进制也是15ff。
2)WAV文件默认为little-endian格式。这意味着最重要的位被保存在不规则的打印输出中。最低有效位是被字符替换的位。
3)查询表明数据未被压缩。
4)我在Python解析AIFF文件的标准库中发现了同样的问题。其他各种设备的录音也会发生这种情况。
对每帧打印输出中最低有效位发生了什么有什么想法?
您看到的只是4字节帧的ASCII表示。在
但也许
^{pr2}$binascii
会给你更好的表现:相关问题 更多 >
编程相关推荐