2014-07-25 14 views
5

Sto provando a leggere un file .aiff compresso memorizzato nella mia directory locale. Capisco questo;Il file AIFF-C non può essere letto con il modulo aifc in python

>>>import aifc 
>>>s = aifc.open('/Users/machinename/Desktop/folder/AudioTrack.aiff','r') 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/aifc.py",  line 942, in open 
return Aifc_read(f) 
    File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/aifc.py", line 347, in __init__ 
self.initfp(f) 
    File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/aifc.py", line 317, in initfp 
self._read_comm_chunk(chunk) 
    File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/aifc.py", line 497, in _read_comm_chunk 
raise Error, 'cannot read compressed AIFF-C files' 
aifc.Error: cannot read compressed AIFF-C files 
>>> 

Credo che ci sia una soluzione per questo. Here è possibile vedere aifc supporta anche file aiff-c.

Una domanda semplice, ma non sono riuscito a trovare una soluzione sul web.

risposta

0

potresti trovare che scikits.audiolab (richiede mega-nerd.com/libsndfile/ è installato) fa quello che ti serve. Ad esempio, di recente ho bisogno di ottenere la durata di un file .aif (in secondi):

import scikits.audiolab 

aiff_file = scikits.audiolab.Sndfile('best_song_ever.aif') 
print aiff_file.nframes/float(aiff_file.samplerate) 

Si può fare un sacco di altre cose troppo cool (Full API docs). Spero che questo aiuti!

Problemi correlati