从pydub创建AudioSegment时线程停止运行

问题描述

我正在创建一个将在另一个线程上播放音频的应用程序。线程运行良好,直到到达从AudioSegement库创建pydub的语句为止。我希望它在此语句之后继续执行,以便音频将在后台播放。

def add_stream_queue(self):
     search_result = self.search()
     stream = Stream(search_result.get_title(),search_result.get_link())
     self.stream_queue.append_queue(stream)
     if self.first_stream:
         self.stream_thread = threading.Thread(target=self.stream_queue.play_stream_queue,args=[self.play_audio])
         self.stream_thread.start()

在这里我创建线程,它调用play_stream_queue()中的函数StreamQueue

def play_stream_queue(self,play_audio):
    while self.current_stream < self.get_size():
        self.first_stream = False
        self.manage_stream.download_stream(self.get_stream(self.current_stream).get_link())
        play_audio.start(self.get_stream(self.current_stream).get_title())
        self.current_stream += 1
        print("reached")
    self.first_stream = True

在此功能中,我开始在play_audio.start(...)行中播放音频。此时线程执行完美。

def start(self,filename):
    self.filename = self.STREAM_FOlDER + filename + ".m4a"
    self.stream_file = AudioSegment.from_file(self.filename,format="m4a")
    print("TEST")
    # Create an interface to PortAudio
    self.p = pyaudio.PyAudio()
    .
    .
    .

PlayAudio类中,线程正在向我发出问题。该线程将正常运行,直到到达该语句为止,

self.stream_file = AudioSegment.from_file(self.filename,format="m4a")

该语句之后该线程将不会继续。

奇怪的是,它过去可以正常工作,并且该语句之后线程将继续执行,但是随后它随机停止了工作。我还注意到程序是否出错并崩溃,stream_thread将开始播放。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)