2016-07-19 10 views
0

Ich habe einen Beispielcode kopiert und eingefügt, um eine WAV-Datei mit Pyaudio abzuspielen, aber ich erhalte den Fehler: IOError: [Errno Invalid output device (no default output device)] -9996.IOError: [Errno Ungültiges Ausgabegerät (kein Standardausgabegerät)] -9996

Hier ist der Code:

import pyaudio 
import wave 
import sys 

CHUNK = 1024 

if len(sys.argv) < 2: 
    print("Plays a wave file.\n\nUsage: %s filename.wav" % sys.argv[0]) 
    sys.exit(-1) 

wf = wave.open(sys.argv[1], 'rb') 

p = pyaudio.PyAudio() 

stream = p.open(format=p.get_format_from_width(wf.getsampwidth()), 
       channels=wf.getnchannels(), 
       rate=wf.getframerate(), 
       output=True) 

data = wf.readframes(CHUNK) 

while data != '': 
    stream.write(data) 
    data = wf.readframes(CHUNK) 

stream.stop_stream() 
stream.close() 

p.terminate() 

das Programm I-Terminal öffnen auszuführen und nur python playwavexample mywavfile.wav geben.

Ich dachte, dies könnte ein Erlaubnissproblem gewesen sein, also habe ich versucht, ein Sudo hinein zu werfen, aber es hat nichts getan. Ich benutze Ubuntu 16.04, und die Audioausgabe scheint gut zu funktionieren ...

Antwort

-1

Es scheint, dass PyAudio Ihr Standardgerät nicht finden kann. Eine Lösung wäre, den Parameter output_device_index zur Initialisierung der Variablen stream hinzuzufügen.

Zum Beispiel mit einem Geräteindex von 0

stream = p.open(format=p.get_format_from_width(wf.getsampwidth()), 
       channels=wf.getnchannels(), 
       rate=wf.getframerate(), 
       output=True, 
       output_device_index=0) 

Sie können den Geräteindizes für alle Geräte zugänglich (Eingang und Ausgang) zu PyAudio über den folgenden Code finden.

import pyaudio 

p = pyaudio.PyAudio() 
device_count = p.get_device_count() 
for i in range(0, device_count): 
    print("Name: " + p.get_device_info_by_index(i)["name"]) 
    print("Index: " + p.get_device_info_by_index(i)["index"]) 
    print("\n")