From 892a1863e77bc8250b7e4c069e42294660dfad7a Mon Sep 17 00:00:00 2001 From: Terry Geng Date: Thu, 26 Nov 2020 13:09:43 +0800 Subject: [PATCH] fix: Erroneous logic for determining if ffmpeg dies prematurely. Fixed #223. --- mumbleBot.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/mumbleBot.py b/mumbleBot.py index bef92b4..88c73c2 100644 --- a/mumbleBot.py +++ b/mumbleBot.py @@ -464,6 +464,7 @@ class MumbleBot: self._loop_status = f'Wait for buffer {self.mumble.sound_output.get_buffer_size():.3f}' time.sleep(0.01) + raw_music = None if self.thread: # I get raw from ffmpeg thread # move playhead forward @@ -473,7 +474,7 @@ class MumbleBot: self.playhead = time.time() - self.song_start_at raw_music = self.thread.stdout.read(self.pcm_buffer_size) - self.read_pcm_size += self.pcm_buffer_size + self.read_pcm_size += len(raw_music) if self.redirect_ffmpeg_log: try: @@ -505,10 +506,11 @@ class MumbleBot: else: time.sleep(0.1) - if not self.is_pause and self.thread is None: + if not self.is_pause and not raw_music: + self.thread = None # bot is not paused, but ffmpeg thread has gone. # indicate that last song has finished, or the bot just resumed from pause, or something is wrong. - if self.read_pcm_size < self.pcm_buffer_size and len(var.playlist) > 0 \ + if self.read_pcm_size < self.pcm_buffer_size \ and var.playlist.current_index != -1 \ and self.last_ffmpeg_err: current = var.playlist.current_item()