求助!关于pyaudio的一个很严重的问题
我最近要录制扬声器的声音,从网上随便找了一个程序,复制粘贴下来,而重点是,我分明有“立体声混音”这个设备,但程序硬要说找不到立体声混音!怎么办!代码:
import os
import pyaudio
import threading
import wave
import time
from datetime import datetime
#录音类
class Recorder():
def __init__(self, chunk=1024, channels=2, rate=44100):
self.CHUNK = chunk
self.FORMAT = pyaudio.paInt16
self.CHANNELS = channels
self.RATE = rate
self._running = True
self._frames = []
#获取内录设备序号,在windows操作系统上测试通过,hostAPI = 0 表明是MME设备
def findInternalRecordingDevice(self,p):
#要找查的设备名称中的关键字
target = '立体声混音'
#逐一查找声音设备
for i in range(p.get_device_count()):
devInfo = p.get_device_info_by_index(i)
if devInfo['name'].find(target)>=0 and devInfo['hostApi'] == 0:
#print('已找到内录设备,序号是 ',i)
return i
print('无法找到内录设备!')
return -1
#开始录音,开启一个新线程进行录音操作
def start(self):
threading._start_new_thread(self.__record, ())
#执行录音的线程函数
def __record(self):
self._running = True
self._frames = []
p = pyaudio.PyAudio()
#查找内录设备
dev_idx = self.findInternalRecordingDevice(p)
if dev_idx < 0 :
return
#在打开输入流时指定输入设备
stream = p.open(input_device_index=dev_idx,
format=self.FORMAT,
channels=self.CHANNELS,
rate=self.RATE,
input=True,
frames_per_buffer=self.CHUNK)
#循环读取输入流
while(self._running):
data = stream.read(self.CHUNK)
self._frames.append(data)
#停止读取输入流
stream.stop_stream()
#关闭输入流
stream.close()
#结束pyaudio
p.terminate()
return
#停止录音
def stop(self):
self._running = False
#保存到文件
def save(self, fileName):
#创建pyAudio对象
p = pyaudio.PyAudio()
#打开用于保存数据的文件
wf = wave.open(fileName, 'wb')
#设置音频参数
wf.setnchannels(self.CHANNELS)
wf.setsampwidth(p.get_sample_size(self.FORMAT))
wf.setframerate(self.RATE)
#写入数据
wf.writeframes(b''.join(self._frames))
#关闭文件
wf.close()
#结束pyaudio
p.terminate()
if __name__ == "__main__":
#检测当前目录下是否有record子目录
if not os.path.exists('record'):
os.makedirs('record')
print("\npython 录音机 ....\n")
print("提示:按 r 键并回车 开始录音\n")
i = input('请输入操作码:')
if i == 'r':
rec = Recorder()
begin = time.time()
print("\n开始录音,按 s 键并回车 停止录音,自动保存到 record 子目录\n")
rec.start()
running = True
while running:
i = input("请输入操作码:")
if i == 's':
running =False
print("录音已停止")
rec.stop()
t = time.time() - begin
print('录音时间为%ds'%t)
#以当前时间为关键字保存wav文件
rec.save("record/rec_"+datetime.now().strftime("%Y-%m-%d_%H-%M-%S")+".wav")
急啊,谁来帮我啊! 快快快!!!
{:10_266:} 你的立体声混音是不是禁用了 hrp 发表于 2020-8-16 23:59
你的立体声混音是不是禁用了
没有啊
页:
[1]