playback.py 文件源码

python
阅读 22 收藏 0 点赞 0 评论 0

项目:synthesizer 作者: irmen 项目源码 文件源码
def _recreate_outputter(self):
        if self.samp_queue:
            self.play(None)
        self.samp_queue = queue.Queue(maxsize=self.queue_size)
        stream_ready = threading.Event()

        def audio_thread():
            audio = pyaudio.PyAudio()
            try:
                audio_format = audio.get_format_from_width(self.samplewidth) if self.samplewidth != 4 else pyaudio.paInt32
                self.stream = audio.open(format=audio_format, channels=self.nchannels, rate=self.samplerate, output=True)
                stream_ready.set()
                q = self.samp_queue
                try:
                    while True:
                        sample = q.get()
                        if not sample:
                            break
                        sample.write_frames(self.stream)
                        if self.played_callback:
                            self.played_callback(sample)
                        if q.empty():
                            time.sleep(sample.duration)
                            self.all_played.set()
                finally:
                    self.stream.close()
                    self.all_played.set()
            finally:
                audio.terminate()

        outputter = threading.Thread(target=audio_thread, name="audio-pyaudio", daemon=True)
        outputter.start()
        stream_ready.wait()
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号