1

我正在编写一个音频程序,它读取 arduino 发送的串行信息,如果串行信息“正常”则播放一些歌曲,如果“不正常”则停止播放。问题是我正在使用 python 库名称“pyAudio”,它将 .wav 声音再现为字节流,因此每次都会有一个“while”循环写入字节流,所以声音会播放。由于这个while循环,在执行代码的同时我不能做更多的事情。但是我每次都需要读取串口信息才能知道是否必须播放声音。有没有办法让我以循环不停止运行的方式进行串行读取?

谢谢!

4

1 回答 1

0

伪代码草稿:

def play_audio( buffer,play_controller ):
    # buffer is the audio buffer to play
    # play_controller.is_set lets you pause the playback
    while not_finished:
       if not play_controller.is_set():
           """
           The necessary code for playing a audio buffer/song
           """
       else: time.sleep(0.1)
#end

import threading
pause_handler = threading.Event()
player = threading.Thread(
               target = play_audio,
               args = ( buffer,pause_handler )
            )
player.start()
pause_handler.set() # this could pause playback
pause_handler.clear() # this could restart playback

如果我理解正确的话。如您所见,这非常简单。

如果您正在寻找更可靠的解决方案,您应该查看GStreamer 此处

于 2013-06-20T18:29:35.223 回答