pyaudio出现Invalid number of channels的解决方法

Python3.8

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

最近准备做个录制电脑本身的音频,于是用到了pyaudio。代码如下。

import pyaudio

def get_audio_devices():
    p = pyaudio.PyAudio()
    device_info = p.get_host_api_info_by_index(0)
    device_count = device_info.get('deviceCount')

    devices = []
    for i in range(device_count):
        device = p.get_device_info_by_host_api_device_index(0, i)
        devices.append(device)

    p.terminate()
    return devices

def open_audio_stream(device_index):
    p = pyaudio.PyAudio()

    stream = p.open(format=pyaudio.paInt16, channels=2, rate=48000, input=True, input_device_index=device_index,frames_per_buffer=1024)

    return p, stream

def read_audio_data(stream, chunk_size=1024):
    data = stream.read(chunk_size)
    return data

def close_audio_stream(p, stream):
    stream.stop_stream()
    stream.close()
    p.terminate()

# 获取音频设备
devices = get_audio_devices()
print("可用的音频设备:")
for i, devices in enumerate(devices):
    print(devices)
open_audio_stream(1)

结果报错:OSError: [Errno -9998] Invalid number of channels。

通道错误,打印音频设备时,发现maxInputChannels这个值为0。

解决办法:

需要在电脑声音设置中,录制中的立体声混音开启。

打开后,代码正常运行。

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值