欢迎光临散文网 会员登陆 & 注册

pyaudio高级玩法1:pyaudio的非阻塞模式录音

2019-12-23 13:01 作者:怯默吾声  | 我要投稿

pyaudio是py常用的录音和播放库,使用方便,不过其录音时会独占进程。这就给实时的声音处理带来很多麻烦。

当然pyaudio是有非阻塞模式的,可以在百度上能搜到的,只有一些非阻塞模式播放声音的代码。悄悄告诉你,那些都是直接从pyaudio的官方英文文档上原封不动copy下来的。pyaudio能不能使用非阻塞模式录音呢?当然可以,文档虽然没有写明,但是稍微改改就可以啦。



import pyaudio

import wave

import time


# instantiate PyAudio (1)

# define callback (2)

# open stream using callback (3)


CHUNK = 1024

FORMAT = pyaudio.paInt16

CHANNELS = 2

RATE = 44100

p = pyaudio.PyAudio()

################################################3

wf = wave.open("output.wav", 'wb')

wf.setnchannels(CHANNELS)

wf.setsampwidth(p.get_sample_size(FORMAT))

wf.setframerate(RATE)


def callback(in_data, frame_count, time_info, status):

    wf.writeframes(in_data)

    return (in_data, pyaudio.paContinue) 

##################################################打开文件

stream = p.open(format=FORMAT,

        channels=CHANNELS,

        rate=RATE,

        input=True,

        frames_per_buffer=CHUNK,

        stream_callback=callback)


# start the stream (4)

stream.start_stream()


# wait for stream to finish (5)

for _ in range(50):

    if stream.is_active():

        time.sleep(0.1)   #休眠,不影响录音


# stop stream (6)

stream.stop_stream()   #直到运行此句录音终止

stream.close()

wf.close()


# close PyAudio (7)

p.terminate()


pyaudio高级玩法1:pyaudio的非阻塞模式录音的评论 (共 条)

分享到微博请遵守国家法律