Opening a wave file in python: unknown format: 49. What's going wrong?

匿名 (未验证) 提交于 2019-12-03 02:31:01

问题:

I try to open a wave file with the wave module, but I keep getting the same error whatever I try. The line with the error is the following:

wav = wave.open(f) 

This is the error message:

Traceback (most recent call last):   File "annotate.py", line 47, in <module>     play(file)   File "annotate.py", line 33, in play     wav = wave.open(f)   File "C:\Program Files (x86)\Python\lib\wave.py", line 498, in open     return Wave_read(f)   File "C:\Program Files (x86)\Python\lib\wave.py", line 163, in __init__     self.initfp(f)   File "C:\Program Files (x86)\Python\lib\wave.py", line 143, in initfp     self._read_fmt_chunk(chunk)   File "C:\Program Files (x86)\Python\lib\wave.py", line 269, in _read_fmt_chunk     raise Error('unknown format: %r' % (wFormatTag,)) wave.Error: unknown format: 49 

String f is a path to a .WAV file and it works when played in any of my media players. I have of course imported the wave module. I tried f both as a relative and an absolute path. I tried replacing "WAV" by "wav".

What is the error caused by?

回答1:

Python's wave module works with a specific type of WAV: PCM (WAVE_FORMAT_PCM: 0x0001).

In your case, you're using a WAV of type WAVE_FORMAT_GSM610 [0x0031 = hex(49)].

You can use a program like Audacity or some lib for converting codecs to change the type of the WAV file.

You can see a list of WAV types here: https://www.videolan.org/developers/vlc/doc/doxygen/html/vlc__codecs_8h.html

Python's wave module source code: https://github.com/python/cpython/blob/master/Lib/wave.py



回答2:

The file is compressed and the wave module does not support this type of compression.



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!