【问题标题】:IOError: [Errno Invalid output device (no default output device)] -9996IOError: [Errno Invalid output device (no default output device)] -9996
【发布时间】:2016-11-23 01:04:05
【问题描述】:

我复制并粘贴了一些示例代码以使用 pyaudio 播放 wav 文件,但出现错误:IOError: [Errno Invalid output device (no default output device)] -9996

代码如下:

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()

要运行程序,我打开终端并输入python playwavexample mywavfile.wav

我认为这可能是一个权限问题,所以我尝试在那里扔一个 sudo 但它没有做任何事情。我正在运行 Ubuntu 16.04,音频输出似乎工作正常...

【问题讨论】:

    标签: python pyaudio


    【解决方案1】:

    PyAudio 似乎找不到您的默认设备。一种解决方案是将参数 output_device_index 添加到 stream 变量的初始化中。

    例如,设备索引为 0

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

    您可以通过以下代码找到 PyAudio 可访问(输入和输出)的所有设备的设备索引。

    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")
    

    【讨论】:

      猜你喜欢
      • 2018-04-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多