Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Issue]: After updating to 10.9.0, the live TV feature has a failure to play error #11554

Open
1 task done
as4134 opened this issue May 12, 2024 · 21 comments
Open
1 task done
Labels
bug Something isn't working

Comments

@as4134
Copy link

as4134 commented May 12, 2024

Please describe your bug

After the update, the M3C live feed cannot be played, indicating a fatal error or server error, which did not exist before the update.

Reproduction Steps

  1. Web player/Android client player
    2, start playing a program
    3, after loading for a period of time, the player fatal error prompt pops up

Jellyfin Version

10.9.0

if other:

No response

Environment

- OS:
- Linux Kernel:
- Virtualization:
- Clients:
- Browser:
- FFmpeg Version:
- Playback Method:
- Hardware Acceleration:
- GPU Model:
- Plugins:
- Reverse Proxy:
- Base URL:
- Networking:
- Storage:

Jellyfin logs

{"Protocol":1,"Id":"5e510dcd080c5dbb1a86d215f73083f4","Path":"http://cdn.jdshipin.com:8880/ysp.php?id=sjdl","EncoderPath":null,"EncoderProtocol":null,"Type":0,"Container":null,"Size":null,"Name":null,"IsRemote":true,"ETag":null,"RunTimeTicks":null,"ReadAtNativeFramerate":false,"IgnoreDts":true,"IgnoreIndex":false,"GenPtsInput":false,"SupportsTranscoding":true,"SupportsDirectStream":true,"SupportsDirectPlay":true,"IsInfiniteStream":true,"RequiresOpening":true,"OpenToken":null,"RequiresClosing":true,"LiveStreamId":"e2329f4997b378e64ccf8fa396deb76e_af999c25a00715699361240d4c6c7a53_5e510dcd080c5dbb1a86d215f73083f4","BufferMs":null,"RequiresLooping":false,"SupportsProbing":true,"VideoType":null,"IsoType":null,"Video3DFormat":null,"MediaStreams":[{"Codec":null,"CodecTag":null,"Language":null,"ColorRange":null,"ColorSpace":null,"ColorTransfer":null,"ColorPrimaries":null,"DvVersionMajor":null,"DvVersionMinor":null,"DvProfile":null,"DvLevel":null,"RpuPresentFlag":null,"ElPresentFlag":null,"BlPresentFlag":null,"DvBlSignalCompatibilityId":null,"Comment":null,"TimeBase":null,"CodecTimeBase":null,"Title":null,"VideoRange":1,"VideoRangeType":1,"VideoDoViTitle":null,"AudioSpatialFormat":0,"LocalizedUndefined":null,"LocalizedDefault":null,"LocalizedForced":null,"LocalizedExternal":null,"LocalizedHearingImpaired":null,"DisplayTitle":"SDR","NalLengthSize":null,"IsInterlaced":true,"IsAVC":null,"ChannelLayout":null,"BitRate":20000000,"BitDepth":null,"RefFrames":null,"PacketLength":null,"Channels":null,"SampleRate":null,"IsDefault":false,"IsForced":false,"IsHearingImpaired":false,"Height":null,"Width":null,"AverageFrameRate":null,"RealFrameRate":null,"Profile":null,"Type":1,"AspectRatio":null,"Index":-1,"Score":null,"IsExternal":false,"DeliveryMethod":null,"DeliveryUrl":null,"IsExternalUrl":null,"IsTextSubtitleStream":false,"SupportsExternalStream":false,"Path":null,"PixelFormat":null,"Level":null,"IsAnamorphic":null},{"Codec":null,"CodecTag":null,"Language":null,"ColorRange":null,"ColorSpace":null,"ColorTransfer":null,"ColorPrimaries":null,"DvVersionMajor":null,"DvVersionMinor":null,"DvProfile":null,"DvLevel":null,"RpuPresentFlag":null,"ElPresentFlag":null,"BlPresentFlag":null,"DvBlSignalCompatibilityId":null,"Comment":null,"TimeBase":null,"CodecTimeBase":null,"Title":null,"VideoRange":0,"VideoRangeType":0,"VideoDoViTitle":null,"AudioSpatialFormat":0,"LocalizedUndefined":null,"LocalizedDefault":null,"LocalizedForced":null,"LocalizedExternal":null,"LocalizedHearingImpaired":null,"DisplayTitle":"","NalLengthSize":null,"IsInterlaced":false,"IsAVC":null,"ChannelLayout":null,"BitRate":null,"BitDepth":null,"RefFrames":null,"PacketLength":null,"Channels":null,"SampleRate":null,"IsDefault":false,"IsForced":false,"IsHearingImpaired":false,"Height":null,"Width":null,"AverageFrameRate":null,"RealFrameRate":null,"Profile":null,"Type":0,"AspectRatio":null,"Index":-1,"Score":null,"IsExternal":false,"DeliveryMethod":null,"DeliveryUrl":null,"IsExternalUrl":null,"IsTextSubtitleStream":false,"SupportsExternalStream":false,"Path":null,"PixelFormat":null,"Level":null,"IsAnamorphic":null}],"MediaAttachments":[],"Formats":[],"Bitrate":20000000,"Timestamp":null,"RequiredHttpHeaders":{"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36"},"TranscodingUrl":null,"TranscodingSubProtocol":0,"TranscodingContainer":null,"AnalyzeDurationMs":3000,"DefaultAudioStreamIndex":null,"DefaultSubtitleStreamIndex":null}

C:\Users\Administrator\Downloads\ffmpeg\ffmpeg.exe -analyzeduration 3000000 -probesize 1G -user_agent "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36" -fflags +igndts -init_hw_device d3d11va=dx11:,vendor=0x1002 -init_hw_device opencl=ocl@dx11 -filter_hw_device ocl -noautorotate -i "http://cdn.jdshipin.com:8880/ysp.php?id=sjdl" -map_metadata -1 -map_chapters -1 -threads 0 -sn -codec:v:0 av1_amf -quality speed -header_insertion_mode gop -rc cbr -qmin 0 -qmax 32 -b:v 20000000 -maxrate 20000000 -bufsize 40000000 -vf "setparams=color_primaries=bt709:color_trc=bt709:colorspace=bt709,yadif=0:-1:0,format=yuv420p" -codec:a:0 libfdk_aac -ac 6 -ab 384000 -copyts -avoid_negative_ts disabled -max_muxing_queue_size 2048 -f hls -max_delay 5000000 -hls_time 3 -hls_segment_type fmp4 -hls_fmp4_init_filename "C:\ProgramData\Jellyfin\Server\transcodes\49aaa03592ecfba8bb7a8999b12dba54-1.mp4" -start_number 0 -hls_base_url "hls/49aaa03592ecfba8bb7a8999b12dba54/" -hls_segment_filename "C:\ProgramData\Jellyfin\Server\transcodes\49aaa03592ecfba8bb7a8999b12dba54%d.mp4" -hls_playlist_type event -hls_list_size 0 -y "C:\ProgramData\Jellyfin\Server\transcodes\49aaa03592ecfba8bb7a8999b12dba54.m3u8"


ffmpeg version 6.0.1-Jellyfin Copyright (c) 2000-2023 the FFmpeg developers
  built with gcc 13-win32 (GCC)
  configuration: --prefix=/opt/ffmpeg --arch=x86_64 --target-os=mingw32 --cross-prefix=x86_64-w64-mingw32- --pkg-config=pkg-config --pkg-config-flags=--static --extra-version=Jellyfin --disable-ffplay --disable-debug --disable-doc --disable-sdl2 --disable-ptx-compression --disable-w32threads --enable-pthreads --enable-shared --enable-lto --enable-gpl --enable-version3 --enable-schannel --enable-iconv --enable-libxml2 --enable-zlib --enable-lzma --enable-gmp --enable-chromaprint --enable-libfreetype --enable-libfribidi --enable-libfontconfig --enable-libass --enable-libbluray --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libopenmpt --enable-libwebp --enable-libvpx --enable-libzimg --enable-libx264 --enable-libx265 --enable-libsvtav1 --enable-libdav1d --enable-libfdk-aac --enable-opencl --enable-dxva2 --enable-d3d11va --enable-amf --enable-libvpl --enable-ffnvcodec --enable-cuda --enable-cuda-llvm --enable-cuvid --enable-nvdec --enable-nvenc
  libavutil      58.  2.100 / 58.  2.100
  libavcodec     60.  3.100 / 60.  3.100
  libavformat    60.  3.100 / 60.  3.100
  libavdevice    60.  1.100 / 60.  1.100
  libavfilter     9.  3.100 /  9.  3.100
  libswscale      7.  1.100 /  7.  1.100
  libswresample   4. 10.100 /  4. 10.100
  libpostproc    57.  1.100 / 57.  1.100
[AVHWDeviceContext @ 000002000cedc280] Using device 1002:15bf (AMD Radeon 780M Graphics).
http://cdn.jdshipin.com:8880/ysp.php?id=sjdl: Invalid data found when processing input

FFmpeg logs

{"Protocol":1,"Id":"5e510dcd080c5dbb1a86d215f73083f4","Path":"http://cdn.jdshipin.com:8880/ysp.php?id=sjdl","EncoderPath":null,"EncoderProtocol":null,"Type":0,"Container":null,"Size":null,"Name":null,"IsRemote":true,"ETag":null,"RunTimeTicks":null,"ReadAtNativeFramerate":false,"IgnoreDts":true,"IgnoreIndex":false,"GenPtsInput":false,"SupportsTranscoding":true,"SupportsDirectStream":true,"SupportsDirectPlay":true,"IsInfiniteStream":true,"RequiresOpening":true,"OpenToken":null,"RequiresClosing":true,"LiveStreamId":"e2329f4997b378e64ccf8fa396deb76e_af999c25a00715699361240d4c6c7a53_5e510dcd080c5dbb1a86d215f73083f4","BufferMs":null,"RequiresLooping":false,"SupportsProbing":true,"VideoType":null,"IsoType":null,"Video3DFormat":null,"MediaStreams":[{"Codec":null,"CodecTag":null,"Language":null,"ColorRange":null,"ColorSpace":null,"ColorTransfer":null,"ColorPrimaries":null,"DvVersionMajor":null,"DvVersionMinor":null,"DvProfile":null,"DvLevel":null,"RpuPresentFlag":null,"ElPresentFlag":null,"BlPresentFlag":null,"DvBlSignalCompatibilityId":null,"Comment":null,"TimeBase":null,"CodecTimeBase":null,"Title":null,"VideoRange":1,"VideoRangeType":1,"VideoDoViTitle":null,"AudioSpatialFormat":0,"LocalizedUndefined":null,"LocalizedDefault":null,"LocalizedForced":null,"LocalizedExternal":null,"LocalizedHearingImpaired":null,"DisplayTitle":"SDR","NalLengthSize":null,"IsInterlaced":true,"IsAVC":null,"ChannelLayout":null,"BitRate":20000000,"BitDepth":null,"RefFrames":null,"PacketLength":null,"Channels":null,"SampleRate":null,"IsDefault":false,"IsForced":false,"IsHearingImpaired":false,"Height":null,"Width":null,"AverageFrameRate":null,"RealFrameRate":null,"Profile":null,"Type":1,"AspectRatio":null,"Index":-1,"Score":null,"IsExternal":false,"DeliveryMethod":null,"DeliveryUrl":null,"IsExternalUrl":null,"IsTextSubtitleStream":false,"SupportsExternalStream":false,"Path":null,"PixelFormat":null,"Level":null,"IsAnamorphic":null},{"Codec":null,"CodecTag":null,"Language":null,"ColorRange":null,"ColorSpace":null,"ColorTransfer":null,"ColorPrimaries":null,"DvVersionMajor":null,"DvVersionMinor":null,"DvProfile":null,"DvLevel":null,"RpuPresentFlag":null,"ElPresentFlag":null,"BlPresentFlag":null,"DvBlSignalCompatibilityId":null,"Comment":null,"TimeBase":null,"CodecTimeBase":null,"Title":null,"VideoRange":0,"VideoRangeType":0,"VideoDoViTitle":null,"AudioSpatialFormat":0,"LocalizedUndefined":null,"LocalizedDefault":null,"LocalizedForced":null,"LocalizedExternal":null,"LocalizedHearingImpaired":null,"DisplayTitle":"","NalLengthSize":null,"IsInterlaced":false,"IsAVC":null,"ChannelLayout":null,"BitRate":null,"BitDepth":null,"RefFrames":null,"PacketLength":null,"Channels":null,"SampleRate":null,"IsDefault":false,"IsForced":false,"IsHearingImpaired":false,"Height":null,"Width":null,"AverageFrameRate":null,"RealFrameRate":null,"Profile":null,"Type":0,"AspectRatio":null,"Index":-1,"Score":null,"IsExternal":false,"DeliveryMethod":null,"DeliveryUrl":null,"IsExternalUrl":null,"IsTextSubtitleStream":false,"SupportsExternalStream":false,"Path":null,"PixelFormat":null,"Level":null,"IsAnamorphic":null}],"MediaAttachments":[],"Formats":[],"Bitrate":20000000,"Timestamp":null,"RequiredHttpHeaders":{"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36"},"TranscodingUrl":null,"TranscodingSubProtocol":0,"TranscodingContainer":null,"AnalyzeDurationMs":3000,"DefaultAudioStreamIndex":null,"DefaultSubtitleStreamIndex":null}

C:\Users\Administrator\Downloads\ffmpeg\ffmpeg.exe -analyzeduration 3000000 -probesize 1G -user_agent "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36" -fflags +igndts -init_hw_device d3d11va=dx11:,vendor=0x1002 -init_hw_device opencl=ocl@dx11 -filter_hw_device ocl -noautorotate -i "http://cdn.jdshipin.com:8880/ysp.php?id=sjdl" -map_metadata -1 -map_chapters -1 -threads 0 -sn -codec:v:0 av1_amf -quality speed -header_insertion_mode gop -rc cbr -qmin 0 -qmax 32 -b:v 20000000 -maxrate 20000000 -bufsize 40000000 -vf "setparams=color_primaries=bt709:color_trc=bt709:colorspace=bt709,yadif=0:-1:0,format=yuv420p" -codec:a:0 libfdk_aac -ac 6 -ab 384000 -copyts -avoid_negative_ts disabled -max_muxing_queue_size 2048 -f hls -max_delay 5000000 -hls_time 3 -hls_segment_type fmp4 -hls_fmp4_init_filename "C:\ProgramData\Jellyfin\Server\transcodes\49aaa03592ecfba8bb7a8999b12dba54-1.mp4" -start_number 0 -hls_base_url "hls/49aaa03592ecfba8bb7a8999b12dba54/" -hls_segment_filename "C:\ProgramData\Jellyfin\Server\transcodes\49aaa03592ecfba8bb7a8999b12dba54%d.mp4" -hls_playlist_type event -hls_list_size 0 -y "C:\ProgramData\Jellyfin\Server\transcodes\49aaa03592ecfba8bb7a8999b12dba54.m3u8"


ffmpeg version 6.0.1-Jellyfin Copyright (c) 2000-2023 the FFmpeg developers
  built with gcc 13-win32 (GCC)
  configuration: --prefix=/opt/ffmpeg --arch=x86_64 --target-os=mingw32 --cross-prefix=x86_64-w64-mingw32- --pkg-config=pkg-config --pkg-config-flags=--static --extra-version=Jellyfin --disable-ffplay --disable-debug --disable-doc --disable-sdl2 --disable-ptx-compression --disable-w32threads --enable-pthreads --enable-shared --enable-lto --enable-gpl --enable-version3 --enable-schannel --enable-iconv --enable-libxml2 --enable-zlib --enable-lzma --enable-gmp --enable-chromaprint --enable-libfreetype --enable-libfribidi --enable-libfontconfig --enable-libass --enable-libbluray --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libopenmpt --enable-libwebp --enable-libvpx --enable-libzimg --enable-libx264 --enable-libx265 --enable-libsvtav1 --enable-libdav1d --enable-libfdk-aac --enable-opencl --enable-dxva2 --enable-d3d11va --enable-amf --enable-libvpl --enable-ffnvcodec --enable-cuda --enable-cuda-llvm --enable-cuvid --enable-nvdec --enable-nvenc
  libavutil      58.  2.100 / 58.  2.100
  libavcodec     60.  3.100 / 60.  3.100
  libavformat    60.  3.100 / 60.  3.100
  libavdevice    60.  1.100 / 60.  1.100
  libavfilter     9.  3.100 /  9.  3.100
  libswscale      7.  1.100 /  7.  1.100
  libswresample   4. 10.100 /  4. 10.100
  libpostproc    57.  1.100 / 57.  1.100
[AVHWDeviceContext @ 000002000cedc280] Using device 1002:15bf (AMD Radeon 780M Graphics).
http://cdn.jdshipin.com:8880/ysp.php?id=sjdl: Invalid data found when processing input

Please attach any browser or client logs here

No response

Please attach any screenshots here

No response

Code of Conduct

  • I agree to follow this project's Code of Conduct
@as4134 as4134 added the bug Something isn't working label May 12, 2024
@jellyfin-bot
Copy link
Contributor

Hi, it seems like your issue report has the following item(s) that need to be addressed:

  • You have not filled in the environment completely.
  • You have not provided the ffmpeg log unaltered from the server. Please provide a valid ffmpeg log.

This is an automated message, currently under testing. Please file an issue here if you encounter any problems.

@nils512
Copy link

nils512 commented May 12, 2024

I have the same issue.

Some channels are working fine, some are not (same error).

for example this channel is working fine:
http://192.168.2.39/dlna/?type=DVB-S2&src=1&freq=11347&pol=v&sr=22000&pids=0,6500,6510,6520,6521,6522,6523,6530,6531
But this generates the error:
http://192.168.2.39/dlna/?type=DVB-S&src=1&freq=12188&pol=h&sr=27500&pids=0,44,163,104,105,106,110
This channel loads endless, but no error message is displayed:
http://192.168.2.39/dlna/?type=DVB-S&src=1&freq=12545&pol=h&sr=22000&pids=0,98,34,767,768

I'm using the M3U-tuner. Already deleted and reloaded the files - no changes.
I'm using XMLTV as EPG, also reloaded it without any success.

All channel are working fine from VLC.

I'm running linuxserver/jellyfin:latest in a docker.
Same issue in Firefox on the PC and in the Android App.

[11:52:57] [INF] [17] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: session.RemoteEndPoint : 172.50.0.2
[11:52:57] [INF] [17] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : event_playing_id = e3a236f176da69bf455ab557533d8d67
[11:52:57] [INF] [17] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : event_user_id = c76d22ffcd5a48b99a2b10805f069a5a
[11:52:57] [INF] [17] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : event_user_id_int = 1
[11:52:57] [INF] [17] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : session_playing_id =
[11:52:57] [INF] [17] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : session_user_id = c76d22ffcd5a48b99a2b10805f069a5a
[11:52:57] [INF] [17] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : play_method = na
[11:52:57] [INF] [17] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : e.ClientName = Jellyfin Web
[11:52:57] [INF] [17] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : e.DeviceName = Firefox
[11:52:57] [INF] [17] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : ItemName = RTL Television
[11:52:57] [INF] [17] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : ItemId = e3a236f176da69bf455ab557533d8d67
[11:52:57] [INF] [17] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : ItemType = TvChannel
[11:52:57] [INF] [17] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : Details do not match for play item
[11:52:57] [INF] [17] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : Exited
[11:53:04] [INF] [8] MediaBrowser.MediaEncoding.Transcoding.TranscodeManager: Transcoding kill timer stopped for JobId 37694eb73d014f3e98ba2458bb32fd89 PlaySessionId 7e5136e3ab174bc78eb6b98d5e17ef99. Killing transcoding
[11:53:04] [INF] [8] MediaBrowser.Controller.MediaEncoding.TranscodingJob: Stopping ffmpeg process with q command for /config/cache/transcodes/f6c7344693fa814c552d3c5d396a9368.m3u8
[11:53:04] [INF] [8] MediaBrowser.MediaEncoding.Transcoding.TranscodeManager: FFmpeg exited with code 0
[11:53:04] [INF] [8] MediaBrowser.MediaEncoding.Transcoding.TranscodeManager: Deleting partial stream file(s) /config/cache/transcodes/f6c7344693fa814c552d3c5d396a9368.m3u8
[11:53:06] [INF] [20] Emby.Server.Implementations.Library.MediaSourceManager: Live stream 477259fa0cc77067d5c26f4167c6c3a3 consumer count is now 0
[11:53:06] [INF] [20] Emby.Server.Implementations.Library.MediaSourceManager: Closing live stream e2329f4997b378e64ccf8fa396deb76e_af999c25a00715699361240d4c6c7a53_477259fa0cc77067d5c26f4167c6c3a3

@markster1700

This comment has been minimized.

@thornbill

This comment has been minimized.

@jellyfin-bot jellyfin-bot added this to Needs triage in Issue Triage for Main Repo May 12, 2024
@markster1700

This comment has been minimized.

@gnattu

This comment has been minimized.

@dmitrylyzo

This comment has been minimized.

@Sergiomg86
Copy link

In my case I can't seem to play LiveTV now either, it keeps looping.

@HouseIndoril
Copy link

HouseIndoril commented May 14, 2024

Seems this is somewhat device specific in its presentation. Live TV is handled by an HDHomeRun Flex 4K.

I've got one remote user with no issues on a Fire TV Stick (not really tech savvy).

Another remote fire stick user reports out of sync audio, which I can also confirm for LG WebOS TV on the LAN as well.

I can watch on Android, but get a Source Error on the first playback attempt. Second attempt is fine. Audio remains in sync.

Recordings are outright borked. Attempting to manage them results in endless spin and seems to completely crash the server, have to restart it to even be able to log back in again.

None of these issues were present in 10.8.13.

I will gather some relevant logs if I can.

@antimidas

This comment has been minimized.

@Sergiomg86
Copy link

in my case a clean install from scratch of the latest version solved the error.

@sib8
Copy link

sib8 commented May 15, 2024

I've also experienced this issue on upgrade from last major release. My HDHR tuner channels were not affected, however m3u tuner IPTV channels mostly stopped working. A handful seemed to still work. Did a bit of digging into the logs and found some interesting lines:

[2024-05-14 14:22:48.324 -04:00] [ERR] Error opening tuner
System.Net.Http.HttpRequestException: Response status code does not indicate success: 302 (Found).
at System.Net.Http.HttpResponseMessage.EnsureSuccessStatusCode()

Looks like m3u channel (all channel?) URLs go through a status check now before fetching the stream. Unless they are set up to return a proper '200' success status code I'm guessing these will no longer work.

@dmitrylyzo
Copy link
Contributor

The main change (in web) related to LiveTV is that the web client now tries to play it directly. Previously, LiveTV was transcoded (or remuxed, I don't remember).

There is a per user option Force transcoding of remote media sources such as Live TV. 👈 As a workaround.

Looks like m3u channel (all channel?) URLs go through a status check now before fetching the stream. Unless they are set up to return a proper '200' success status code I'm guessing these will no longer work.

So LiveTV with redirects doesn't work, right?

@sib8
Copy link

sib8 commented May 15, 2024

There is a per user option Force transcoding of remote media sources such as Live TV. 👈 As a workaround.

Did not know that. Thanks for the info on that setting and the background on what changed with LiveTV. I did flip on the 'Force transcoding of remote media' setting and tried again but I'm seeing the same error in the logs. Seems like '302' status codes are treated as fail case.

@markster1700

This comment has been minimized.

@gnattu

This comment has been minimized.

@markster1700

This comment has been minimized.

@antimidas
Copy link

antimidas commented May 16, 2024 via email

@wolonggl
Copy link
Contributor

jellyfin | [15:22:41] [INF] User policy for xxxxx. EnablePlaybackRemuxing: True EnableVideoPlaybackTranscoding: True EnableAudioPlaybackTranscoding: True
jellyfin | [15:22:41] [INF] Opening channel stream from Emby, external channel Id: m3u_e1a9747c0ffd3374d33f2210046bfa8125747703e2b9cc8f8f3d1729f7ffeed0
jellyfin | [15:22:41] [INF] Streaming Channel m3u_e1a9747c0ffd3374d33f2210046bfa8125747703e2b9cc8f8f3d1729f7ffeed0
jellyfin | [15:22:41] [ERR] Error opening tuner
jellyfin | System.Net.Http.HttpRequestException: An error occurred while sending the request.
jellyfin | ---> System.Net.Http.HttpIOException: The response ended prematurely. (ResponseEnded)
jellyfin | at System.Net.Http.HttpConnection.SendAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
jellyfin | --- End of inner exception stack trace ---
jellyfin | at System.Net.Http.HttpConnection.SendAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
jellyfin | at System.Net.Http.HttpConnectionPool.SendWithVersionDetectionAndRetryAsync(HttpRequestMessage request, Boolean async, Boolean doRequestAuth, CancellationToken cancellationToken)
jellyfin | at System.Net.Http.DiagnosticsHandler.SendAsyncCore(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
jellyfin | at System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
jellyfin | at System.Net.Http.DecompressionHandler.SendAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
jellyfin | at Microsoft.Extensions.Http.Logging.LoggingHttpMessageHandler.g__Core|5_0(HttpRequestMessage request, Boolean useAsync, CancellationToken cancellationToken)
jellyfin | at Microsoft.Extensions.Http.Logging.LoggingScopeHttpMessageHandler.g__Core|5_0(HttpRequestMessage request, Boolean useAsync, CancellationToken cancellationToken)
jellyfin | at System.Net.Http.HttpClient.g__Core|83_0(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationTokenSource cts, Boolean disposeCts, CancellationTokenSource pendingRequestsCts, CancellationToken originalCancellationToken)
jellyfin | at Jellyfin.LiveTv.TunerHosts.M3UTunerHost.GetChannelStream(TunerHostInfo tunerHost, ChannelInfo channel, String streamId, IList1 currentLiveStreams, CancellationToken cancellationToken) jellyfin | at Jellyfin.LiveTv.TunerHosts.BaseTunerHost.GetChannelStream(String channelId, String streamId, IList1 currentLiveStreams, CancellationToken cancellationToken)
jellyfin | [15:22:41] [ERR] Error processing request. URL POST /Items/044e2a8f4e058c3b2a9ff13e55999c7f/PlaybackInfo.
jellyfin | MediaBrowser.Controller.LiveTv.LiveTvConflictException: Exception of type 'MediaBrowser.Controller.LiveTv.LiveTvConflictException' was thrown.
jellyfin | at Jellyfin.LiveTv.TunerHosts.BaseTunerHost.GetChannelStream(String channelId, String streamId, IList1 currentLiveStreams, CancellationToken cancellationToken) jellyfin | at Jellyfin.LiveTv.DefaultLiveTvService.GetChannelStreamWithDirectStreamProvider(String channelId, String streamId, List1 currentLiveStreams, CancellationToken cancellationToken)
jellyfin | at Jellyfin.LiveTv.LiveTvMediaSourceProvider.GetChannelStream(String id, String mediaSourceId, List1 currentLiveStreams, CancellationToken cancellationToken) jellyfin | at Jellyfin.LiveTv.LiveTvMediaSourceProvider.OpenMediaSource(String openToken, List1 currentLiveStreams, CancellationToken cancellationToken)
jellyfin | at Emby.Server.Implementations.Library.MediaSourceManager.OpenLiveStreamInternal(LiveStreamRequest request, CancellationToken cancellationToken)
jellyfin | at Emby.Server.Implementations.Library.MediaSourceManager.OpenLiveStream(LiveStreamRequest request, CancellationToken cancellationToken)
jellyfin | at Jellyfin.Api.Helpers.MediaInfoHelper.OpenMediaSource(HttpContext httpContext, LiveStreamRequest request)
jellyfin | at Jellyfin.Api.Controllers.MediaInfoController.GetPostedPlaybackInfo(Guid itemId, Nullable1 userId, Nullable1 maxStreamingBitrate, Nullable1 startTimeTicks, Nullable1 audioStreamIndex, Nullable1 subtitleStreamIndex, Nullable1 maxAudioChannels, String mediaSourceId, String liveStreamId, Nullable1 autoOpenLiveStream, Nullable1 enableDirectPlay, Nullable1 enableDirectStream, Nullable1 enableTranscoding, Nullable1 allowVideoStreamCopy, Nullable1 allowAudioStreamCopy, PlaybackInfoDto playbackInfoDto)
jellyfin | at lambda_method1120(Closure, Object)
jellyfin | at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.AwaitableObjectResultExecutor.Execute(ActionContext actionContext, IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)
jellyfin | at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.g__Awaited|12_0(ControllerActionInvoker invoker, ValueTask`1 actionResultValueTask)
jellyfin | at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.g__Awaited|10_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
jellyfin | at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)
jellyfin | at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
jellyfin | at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.g__Awaited|13_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
jellyfin | at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.g__Awaited|25_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
jellyfin | at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ResourceExecutedContextSealed context)
jellyfin | at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
jellyfin | at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.g__Awaited|20_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
jellyfin | at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope)
jellyfin | at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope)
jellyfin | at Jellyfin.Api.Middleware.ServerStartupMessageMiddleware.Invoke(HttpContext httpContext, IServerApplicationHost serverApplicationHost, ILocalizationManager localizationManager)
jellyfin | at Jellyfin.Api.Middleware.WebSocketHandlerMiddleware.Invoke(HttpContext httpContext, IWebSocketManager webSocketManager)
jellyfin | at Jellyfin.Api.Middleware.IPBasedAccessValidationMiddleware.Invoke(HttpContext httpContext, INetworkManager networkManager)
jellyfin | at Jellyfin.Api.Middleware.LanFilteringMiddleware.Invoke(HttpContext httpContext, INetworkManager networkManager, IServerConfigurationManager serverConfigurationManager)
jellyfin | at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)
jellyfin | at Jellyfin.Api.Middleware.QueryStringDecodingMiddleware.Invoke(HttpContext httpContext)
jellyfin | at Swashbuckle.AspNetCore.ReDoc.ReDocMiddleware.Invoke(HttpContext httpContext)
jellyfin | at Swashbuckle.AspNetCore.SwaggerUI.SwaggerUIMiddleware.Invoke(HttpContext httpContext)
jellyfin | at Swashbuckle.AspNetCore.Swagger.SwaggerMiddleware.Invoke(HttpContext httpContext, ISwaggerProvider swaggerProvider)
jellyfin | at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context)
jellyfin | at Jellyfin.Api.Middleware.RobotsRedirectionMiddleware.Invoke(HttpContext httpContext)
jellyfin | at Jellyfin.Api.Middleware.LegacyEmbyRouteRewriteMiddleware.Invoke(HttpContext httpContext)
jellyfin | at Microsoft.AspNetCore.ResponseCompression.ResponseCompressionMiddleware.InvokeCore(HttpContext context)
jellyfin | at Jellyfin.Api.Middleware.ResponseTimeMiddleware.Invoke(HttpContext context, IServerConfigurationManager serverConfigurationManager)
jellyfin | at Jellyfin.Api.Middleware.ExceptionMiddleware.Invoke(HttpContext context)

@antimidas
Copy link

antimidas commented May 20, 2024 via email

@hyunel
Copy link

hyunel commented May 21, 2024

Some M3UTuners like udpxy return nothing to HEAD request, which generates the following error: System.Net.Http.HttpIOException: The response ended prematurely. (ResponseEnded)

Just determining the status code doesn't seem to be enough? #11668

curl -Iv 192.168.100.1:4022/rtp/225.1.2.1:11104
> HEAD /rtp/225.1.2.1:11104 HTTP/1.1
> Host: 192.168.100.1:4022
> User-Agent: curl/7.86.0
> Accept: */*
> 
* Empty reply from server
curl: (52) Empty reply from server

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
Status: No status
Development

No branches or pull requests