add warning on chunk number mismatch
authorMarcel van der Veldt <m.vanderveldt@outlook.com>
Thu, 4 Aug 2022 00:12:14 +0000 (02:12 +0200)
committerMarcel van der Veldt <m.vanderveldt@outlook.com>
Thu, 4 Aug 2022 00:12:14 +0000 (02:12 +0200)
music_assistant/controllers/streams.py

index f32e04ef966c6928eaf719e513fb79b958e52591..a0c2bce7303b003b049a3521bf317da1763facba 100644 (file)
@@ -665,15 +665,6 @@ class QueueStream:
             ):
 
                 chunk_num += 1
-
-                # handle last/empty chunk
-                if not chunk:
-                    if bytes_written == 0:
-                        # stream error: got empy first chunk ?!
-                        self.logger.warning("Stream error on %s", queue_track.uri)
-                        queue_track.streamdetails.seconds_streamed = 0
-                    break
-
                 seconds_in_buffer = len(buffer) / self.sample_size_per_second
 
                 ####  HANDLE FIRST PART OF TRACK
@@ -723,11 +714,24 @@ class QueueStream:
 
             #### HANDLE END OF TRACK
 
+            if bytes_written == 0:
+                # stream error: got empy first chunk ?!
+                self.logger.warning("Stream error on %s", queue_track.uri)
+                queue_track.streamdetails.seconds_streamed = 0
+                continue
+
             # try to make a rough assumption of how many seconds is buffered ahead by the player(s)
             player_buffered = (
                 self.total_seconds_streamed - self.queue.player.elapsed_time or 0
             )
             seconds_in_buffer = len(buffer) / self.sample_size_per_second
+            # log warning if received seconds are a lot less than expected
+            if (stream_duration - chunk_num) > 20:
+                self.logger.warning(
+                    "Unexpected number of chunks received for track: %s/%s",
+                    chunk_num,
+                    stream_duration,
+                )
             self.logger.debug(
                 "end of track reached - chunk_num: %s - crossfade_buffer: %s - stream_duration: %s - player_buffer: %s",
                 chunk_num,