Fix queue not proceeding to next track for squeezelite groups (#2749)
authorMarvin Schenkel <marvinschenkel@gmail.com>
Fri, 5 Dec 2025 19:57:23 +0000 (20:57 +0100)
committerGitHub <noreply@github.com>
Fri, 5 Dec 2025 19:57:23 +0000 (19:57 +0000)
* Fix queue not proceeding to next track for squeezelite groups.

* Update music_assistant/providers/squeezelite/player.py

Co-authored-by: Marcel van der Veldt <m.vanderveldt@outlook.com>
---------

Co-authored-by: Marcel van der Veldt <m.vanderveldt@outlook.com>
music_assistant/controllers/streams/streams_controller.py
music_assistant/providers/squeezelite/player.py

index 4e5bab0a8e213092578338c22989a801f94c1e62..b23620b84ab0f0f2e6c0344ca71088eff953fa9c 100644 (file)
@@ -877,7 +877,7 @@ class StreamsController(CoreController):
         return f"{self.base_url}/announcement/{player_id}.{content_type.value}"
 
     def get_stream(
-        self, media: PlayerMedia, pcm_format: AudioFormat
+        self, media: PlayerMedia, pcm_format: AudioFormat, force_flow_mode: bool = False
     ) -> AsyncGenerator[bytes, None]:
         """
         Get a stream of the given media as raw PCM audio.
@@ -922,7 +922,11 @@ class StreamsController(CoreController):
                 audio_source = ugp_stream.subscribe_raw()
             else:
                 audio_source = ugp_stream.get_stream(output_format=pcm_format)
-        elif media.source_id and media.queue_item_id and media.media_type == MediaType.FLOW_STREAM:
+        elif (
+            media.source_id
+            and media.queue_item_id
+            and (media.media_type == MediaType.FLOW_STREAM or force_flow_mode)
+        ):
             # regular queue (flow) stream request
             queue = self.mass.player_queues.get(media.source_id)
             assert queue
index 1419bfdd52ce342100d8d30dc8501ed8af4ec370..ac79533421e3a171855ccd6d6dc2b6e8a1c3ebdb 100644 (file)
@@ -244,8 +244,12 @@ class SqueezelitePlayer(Player):
             channels=2,
         )
 
-        # select audio source
-        audio_source = self.mass.streams.get_stream(media, master_audio_format)
+        # select audio source, we force flow mode
+        # because multi-client streaming does not support enqueueing
+        audio_source = self.mass.streams.get_stream(
+            media, master_audio_format, force_flow_mode=True
+        )
+
         # start the stream task
         self.multi_client_stream = stream = MultiClientStream(
             audio_source=audio_source, audio_format=master_audio_format