2025-01-28, 04:21 PM
(This post was last modified: 2025-01-28, 04:52 PM by TheDreadPirate. Edited 1 time in total.)
I am trying to get Jellyfin to play (stream) m3u8 files from an external online source.
An example of a file I would like Jellyfin to play is this file: https://drod20m.akamaized.net/all/clear/...ifest.m3u8
When downloaded the file looks like this:
If I try to play that file with Jellyfin, Jellyfin won't play the best version/resolution of the file (1920x1080). Jellyfin will only play the first version listen (640x360).
To fix that error i have made a new m3u8 file with links to audio and video sources.
This file looks like this:
When I try to play that with Jellyfin, Jellyfin just stops.
The following errors shows up in the logs:
From ffmpegs log:
It is my understanding that protocols can be added to ffmpegs whitelist. But I still have to figure out if that is the actual problem.
Can the problems be fixed, or am I simply trying to get Jellyfin to play something, that it just cant do?
Pointers and help will be greatly appreciated.
An example of a file I would like Jellyfin to play is this file: https://drod20m.akamaized.net/all/clear/...ifest.m3u8
When downloaded the file looks like this:
Quote:#EXTM3U
#EXT-X-VERSION:6
#EXT-X-INDEPENDENT-SEGMENTS
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio_low",NAME="English",LANGUAGE="en",AUTOSELECT=YES,DEFAULT=YES,CHANNELS="2",URI="Bag-enhver-mand_DRTV-20240300_FullHD_16x9_VideoMain_audio_128kbps.m3u8"
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio_medium",NAME="English",LANGUAGE="en",AUTOSELECT=YES,DEFAULT=YES,CHANNELS="2",URI="Bag-enhver-mand_DRTV-20240300_FullHD_16x9_VideoMain_audio_192kbps.m3u8"
#EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subs",NAME="Fremmedsprogstekster",DEFAULT=YES,AUTOSELECT=YES,FORCED=NO,LANGUAGE="da",URI="../subtitles/Foreign-Bag-enhver-mand_DRTV-20240300_FullHD_16x9_VideoMain/playlist.m3u8"
#EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subs",NAME="Dansk",DEFAULT=NO,AUTOSELECT=NO,FORCED=NO,LANGUAGE="da",URI="../subtitles/Foreign_HardOfHearing-Bag-enhver-mand_DRTV-20240300_FullHD_16x9_VideoMain/playlist.m3u8"
#EXT-X-I-FRAME-STREAM-INF:AVERAGE-BANDWIDTH=15432,BANDWIDTH=25520,VIDEO-RANGE=SDR,CODECS="avc1.42C01E",RESOLUTION=640x360,URI="Bag-enhver-mand_DRTV-20240300_FullHD_16x9_VideoMain_video_500_iframe.m3u8"
#EXT-X-I-FRAME-STREAM-INF:AVERAGE-BANDWIDTH=35846,BANDWIDTH=63332,VIDEO-RANGE=SDR,CODECS="avc1.64001F",RESOLUTION=852x480,URI="Bag-enhver-mand_DRTV-20240300_FullHD_16x9_VideoMain_video_1100_iframe.m3u8"
#EXT-X-I-FRAME-STREAM-INF:AVERAGE-BANDWIDTH=55768,BANDWIDTH=92302,VIDEO-RANGE=SDR,CODECS="avc1.640028",RESOLUTION=960x540,URI="Bag-enhver-mand_DRTV-20240300_FullHD_16x9_VideoMain_video_2000_iframe.m3u8"
#EXT-X-I-FRAME-STREAM-INF:AVERAGE-BANDWIDTH=85514,BANDWIDTH=140880,VIDEO-RANGE=SDR,CODECS="avc1.640029",RESOLUTION=1280x720,URI="Bag-enhver-mand_DRTV-20240300_FullHD_16x9_VideoMain_video_3500_iframe.m3u8"
#EXT-X-I-FRAME-STREAM-INF:AVERAGE-BANDWIDTH=130569,BANDWIDTH=221388,VIDEO-RANGE=SDR,CODECS="avc1.640029",RESOLUTION=1920x1080,URI="Bag-enhver-mand_DRTV-20240300_FullHD_16x9_VideoMain_video_5500_iframe.m3u8"
#EXT-X-STREAM-INF:BANDWIDTH=706330,AVERAGE-BANDWIDTH=629515,FRAME-RATE=25.000,CODECS="avc1.42C01E,mp4a.40.2",RESOLUTION=640x360,VIDEO-RANGE="SDR",AUDIO="audio_low",SUBTITLES="subs"
Bag-enhver-mand_DRTV-20240300_FullHD_16x9_VideoMain_video_500.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=1396820,AVERAGE-BANDWIDTH=1226412,FRAME-RATE=25.000,CODECS="avc1.64001F,mp4a.40.2",RESOLUTION=852x480,VIDEO-RANGE="SDR",AUDIO="audio_low",SUBTITLES="subs"
Bag-enhver-mand_DRTV-20240300_FullHD_16x9_VideoMain_video_1100.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=2522305,AVERAGE-BANDWIDTH=2186176,FRAME-RATE=25.000,CODECS="avc1.640028,mp4a.40.2",RESOLUTION=960x540,VIDEO-RANGE="SDR",AUDIO="audio_medium",SUBTITLES="subs"
Bag-enhver-mand_DRTV-20240300_FullHD_16x9_VideoMain_video_2000.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=4234290,AVERAGE-BANDWIDTH=3673027,FRAME-RATE=25.000,CODECS="avc1.640029,mp4a.40.2",RESOLUTION=1280x720,VIDEO-RANGE="SDR",AUDIO="audio_medium",SUBTITLES="subs"
Bag-enhver-mand_DRTV-20240300_FullHD_16x9_VideoMain_video_3500.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=6447199,AVERAGE-BANDWIDTH=5655913,FRAME-RATE=25.000,CODECS="avc1.640029,mp4a.40.2",RESOLUTION=1920x1080,VIDEO-RANGE="SDR",AUDIO="audio_medium",SUBTITLES="subs"
Bag-enhver-mand_DRTV-20240300_FullHD_16x9_VideoMain_video_5500.m3u8
If I try to play that file with Jellyfin, Jellyfin won't play the best version/resolution of the file (1920x1080). Jellyfin will only play the first version listen (640x360).
To fix that error i have made a new m3u8 file with links to audio and video sources.
This file looks like this:
Quote:#EXTM3U
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio",NAME="English",LANGUAGE="en",AUTOSELECT=YES,DEFAULT=YES,URI="{censored IPTV URL - TDP}-20240300_FullHD_16x9_VideoMain_audio_192kbps.mp4"
#EXT-X-STREAM-INF:BANDWIDTH=6447199,RESOLUTION=1920x1080,CODECS="avc1.640029,mp4a.40.2",AUDIO="audio"
{censored IPTV URL - TDP}-20240300_FullHD_16x9_VideoMain_video_5500.mp4
When I try to play that with Jellyfin, Jellyfin just stops.
The following errors shows up in the logs:
Quote:FFmpeg exited with code 234
[2025-01-28 16:56:54.174 +01:00] [ERR] Error processing request. URL "GET" "/videos/3428acde-9c9a-4b29-e7b9-7847a945c0dd/live.m3u8".
MediaBrowser.Common.FfmpegException: FFmpeg exited with code 234
From ffmpegs log:
Quote:[hls @ 0x654170639440] Opening '{censored IPTV URL - TDP}-20240300_FullHD_16x9_VideoMain_audio_192kbps.mp4' for reading
[https @ 0x6541706468c0] Protocol 'https' not on whitelist 'file,crypto,data'!
[hls @ 0x654170639440] parse_playlist error Invalid argument [{censored IPTV URL - TDP}-20240300_FullHD_16x9_VideoMain_audio_192kbps.mp4]
[hls @ 0x654170639440] Opening '{censored IPTV URL - TDP}-20240300_FullHD_16x9_VideoMain_video_5500.mp4' for reading
[https @ 0x6541706468c0] Protocol 'https' not on whitelist 'file,crypto,data'!
[hls @ 0x654170639440] parse_playlist error Invalid argument [{censored IPTV URL - TDP}-20240300_FullHD_16x9_VideoMain_video_5500.mp4]
[hls @ 0x654170639440] Empty segment [{censored IPTV URL - TDP}-20240300_FullHD_16x9_VideoMain_video_5500.mp4]
It is my understanding that protocols can be added to ffmpegs whitelist. But I still have to figure out if that is the actual problem.
Can the problems be fixed, or am I simply trying to get Jellyfin to play something, that it just cant do?
Pointers and help will be greatly appreciated.