From: Marcel van der Veldt Date: Sun, 7 Aug 2022 22:58:20 +0000 (+0200) Subject: Fix support for mpeg dash based radio streams (#450) X-Git-Url: https://git.kitaultman.com/?a=commitdiff_plain;h=a6184dbe60924fe7a391ae8bbcb94bcd95191c03;p=music-assistant-server.git Fix support for mpeg dash based radio streams (#450) --- diff --git a/music_assistant/helpers/audio.py b/music_assistant/helpers/audio.py index 9ee9e2ca..f33547fd 100644 --- a/music_assistant/helpers/audio.py +++ b/music_assistant/helpers/audio.py @@ -271,6 +271,13 @@ async def get_stream_details( streamdetails.loudness = loudness if not streamdetails.duration: streamdetails.duration = queue_item.duration + # make sure that ffmpeg handles mpeg dash streams directly + if ( + streamdetails.content_type == ContentType.MPEG_DASH + and streamdetails.data + and streamdetails.data.startswith("http") + ): + streamdetails.direct = streamdetails.data # set streamdetails as attribute on the media_item # this way the app knows what content is playing queue_item.streamdetails = streamdetails diff --git a/music_assistant/models/enums.py b/music_assistant/models/enums.py index 23d1e44d..5e11347b 100644 --- a/music_assistant/models/enums.py +++ b/music_assistant/models/enums.py @@ -121,6 +121,7 @@ class ContentType(Enum): PCM_S32LE = "s32le" # PCM signed 32-bit little-endian PCM_F32LE = "f32le" # PCM 32-bit floating-point little-endian PCM_F64LE = "f64le" # PCM 64-bit floating-point little-endian + MPEG_DASH = "dash" UNKNOWN = "?" @classmethod @@ -141,6 +142,7 @@ class ContentType(Enum): tempstr = tempstr.split("&")[0] tempstr = tempstr.split(";")[0] tempstr = tempstr.replace("mp4", "m4a") + tempstr = tempstr.replace("mpd", "dash") try: return cls(tempstr) except ValueError: