我正在创建一个将在不同线程上播放音频的应用程序。线程运行良好,直到它到达我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
它将开始播放。