jellyfin / jellyfin-plugin-tvheadend

https://jellyfin.org
MIT License
29 stars 19 forks source link

LiveTV playback does not work #89

Open citronalco opened 3 weeks ago

citronalco commented 3 weeks ago

With Jellyfin 10.9.6 amd Plugin 12, LiveTV does not work. The web GUI just keeps showing the spinner. It did work with Jellyfin 10.8 and Plugin 11

tvheadend log:

Jun 15 00:41:16 router tvheadend[235888]: htsp: Got connection from 127.0.0.1
Jun 15 00:41:16 router tvheadend[235888]: htsp: 127.0.0.1: Identified as user 'jellyfin' (unverified)
Jun 15 00:41:16 router tvheadend[235888]: htsp: 127.0.0.1 [ jellyfin ]: Welcomed client software: TVHclient4Emby-10.9.6.0 (HTSPv20)
Jun 15 00:41:16 router tvheadend[235888]: htsp: 127.0.0.1 [ jellyfin | TVHclient4Emby-10.9.6.0 ]: Identified as user 'jellyfin'
Jun 15 00:41:20 router tvheadend[235888]: mpegts: 450MHz in DVB-C Network - tuning on Philips TDA10023 DVB-C #0 : DVB-C #0
Jun 15 00:41:20 router tvheadend[235888]: subscription: 0001: "epggrab" unsubscribing
Jun 15 00:41:20 router tvheadend[235888]: subscription: 0003: "HTTP" subscribing on channel "ZDF HD", weight: 100, adapter: "Philips TDA10023 DVB-C #0 : DVB-C #0", network: "DVB-C Network", mux: "450MHz", provider: "ZDFvision", service: "ZDF HD", profile="pass", hostname="127.0.0.1", client="Lavf/60.3.100"

Jellyfin's log:

[2024-06-15 00:41:19.036 +02:00] [INF] Current HLS implementation doesn't support non-keyframe breaks but one is requested, ignoring that request
[2024-06-15 00:41:20.537 +02:00] [INF] "/usr/lib/jellyfin-ffmpeg/ffmpeg" "-analyzeduration 3000000 -probesize 1G -init_hw_device vaapi=va:,kernel_driver=i915,driver=iHD -init_hw_device qsv=qs@va -filter_hw_device qs -noautorotate -i \"http://i-removed-the-user-here:i-removed-the-password-here@127.0.0.1:9981/stream/channelid/1872186106\" -map_metadata -1 -map_chapters -1 -threads 0 -sn -codec:v:0 h264_qsv -preset veryfast -look_ahead 0 -b:v 670704640 -maxrate 670704640 -bufsize 1341409280 -vf \"setparams=color_primaries=bt709:color_trc=bt709:colorspace=bt709,yadif=0:-1:0,scale=trunc(min(max(iw\,ih*a)\,1920)/2)*2:trunc(ow/a/2)*2,format=nv12\" -flags -global_header -codec:a:0 libfdk_aac -ab 384000 -copyts -avoid_negative_ts disabled -max_muxing_queue_size 2048 -f hls -max_delay 5000000 -hls_time 3 -hls_segment_type mpegts -start_number 0 -hls_base_url \"hls/3d2a96e7f2d5a5382111646208baf2b4/\" -hls_segment_filename \"/var/lib/jellyfin/transcodes/3d2a96e7f2d5a5382111646208baf2b4%d.ts\" -hls_playlist_type event -hls_list_size 0 -y \"/var/lib/jellyfin/transcodes/3d2a96e7f2d5a5382111646208baf2b4.m3u8\""

Excerpt of jellyfin's transcoding log:

[hls @ 0x55e5f3d65740] Opening '/var/lib/jellyfin/transcodes/3d2a96e7f2d5a5382111646208baf2b434.ts' for writing
[hls @ 0x55e5f3d65740] Opening '/var/lib/jellyfin/transcodes/3d2a96e7f2d5a5382111646208baf2b4.m3u8.tmp' for writing
frame= 8762 fps= 51 q=44.0 size=N/A time=00:02:55.74 bitrate=N/A dup=2 drop=0 speed=1.01x    
frame= 8795 fps= 51 q=50.0 size=N/A time=00:02:56.25 bitrate=N/A dup=2 drop=0 speed=1.01x    
frame= 8819 fps= 51 q=50.0 size=N/A time=00:02:56.83 bitrate=N/A dup=2 drop=0 speed=1.01x    
frame= 8845 fps= 51 q=41.0 size=N/A time=00:02:57.40 bitrate=N/A dup=2 drop=0 speed=1.02x    
frame= 8866 fps= 51 q=43.0 size=N/A time=00:02:57.89 bitrate=N/A dup=2 drop=0 speed=1.01x    
frame= 8896 fps= 51 q=46.0 size=N/A time=00:02:58.36 bitrate=N/A dup=2 drop=0 speed=1.01x    
frame= 8919 fps= 51 q=50.0 size=N/A time=00:02:58.94 bitrate=N/A dup=2 drop=0 speed=1.02x    
frame= 8947 fps= 51 q=51.0 size=N/A time=00:02:59.32 bitrate=N/A dup=2 drop=0 speed=1.01x    
frame= 8972 fps= 51 q=42.0 size=N/A time=00:02:59.90 bitrate=N/A dup=2 drop=0 speed=1.01x    
frame= 9003 fps= 51 q=42.0 size=N/A time=00:03:00.48 bitrate=N/A dup=2 drop=0 speed=1.01x    
[hls @ 0x55e5f3d65740] Opening '/var/lib/jellyfin/transcodes/3d2a96e7f2d5a5382111646208baf2b435.ts' for writing
[hls @ 0x55e5f3d65740] Opening '/var/lib/jellyfin/transcodes/3d2a96e7f2d5a5382111646208baf2b4.m3u8.tmp' for writing
frame= 9027 fps= 51 q=38.0 size=N/A time=00:03:01.05 bitrate=N/A dup=2 drop=0 speed=1.01x    
frame= 9051 fps= 51 q=46.0 size=N/A time=00:03:01.63 bitrate=N/A dup=2 drop=0 speed=1.01x    
frame= 9084 fps= 51 q=40.0 size=N/A time=00:03:02.01 bitrate=N/A dup=2 drop=0 speed=1.01x    
frame= 9106 fps= 51 q=26.0 size=N/A time=00:03:02.59 bitrate=N/A dup=2 drop=0 speed=1.01x    
frame= 9139 fps= 51 q=26.0 size=N/A time=00:03:03.16 bitrate=N/A dup=2 drop=0 speed=1.01x    
frame= 9162 fps= 51 q=50.0 size=N/A time=00:03:03.61 bitrate=N/A dup=2 drop=0 speed=1.01x    
frame= 9194 fps= 51 q=50.0 size=N/A time=00:03:04.19 bitrate=N/A dup=2 drop=0 speed=1.01x    
frame= 9219 fps= 51 q=32.0 size=N/A time=00:03:04.70 bitrate=N/A dup=2 drop=0 speed=1.01x    
frame= 9243 fps= 51 q=29.0 size=N/A time=00:03:05.32 bitrate=N/A dup=2 drop=0 speed=1.01x    

So technically it seems to work - at least to a certain extent. But it does not display anything, except for the spinner.

Thanson16 commented 2 weeks ago

I believe I am encountering the same problem. Jellyfin 10.9.6 in Docker, Tvheadend Plugin 12.0.0.0. Trying to stream a channel just results in the loading spinner.

Some log output below (XXXX are values that I redacted; they did not look unusual or anything though):

Jellyfin Docker output:

[19:47:48] [INF] [3] TVHeadEnd.AccessTicketHandler: [TVHclient] AccessTicketHandler.GetAccessTicket: New ticket (#3) created for channelId=XXXX
[19:47:48] [INF] [3] TVHeadEnd.LiveTvService: [TVHclient] LiveTvService.GetChannelStream: support for live TV subtitles and multiple audio tracks is enabled
[19:47:48] [INF] [3] Jellyfin.Api.Helpers.MediaInfoHelper: User policy for XXXX. EnablePlaybackRemuxing: True EnableVideoPlaybackTranscoding: True EnableAudioPlaybackTranscoding: True
[19:47:48] [INF] [3] TVHeadEnd.LiveTvService: [TVHclient] LiveTvService.GetChannelStream: support for live TV subtitles and multiple audio tracks is enabled
[19:47:48] [INF] [45] TVHeadEnd.LiveTvService: [TVHclient] LiveTvService.GetChannelStream: support for live TV subtitles and multiple audio tracks is enabled
[19:47:48] [INF] [45] Jellyfin.Api.Controllers.DynamicHlsController: Current HLS implementation doesn't support non-keyframe breaks but one is requested, ignoring that request
[19:47:49] [INF] [3] MediaBrowser.MediaEncoding.Transcoding.TranscodeManager: /usr/lib/jellyfin-ffmpeg/ffmpeg -analyzeduration 3000000 -probesize 1G -init_hw_device vaapi=va:/dev/dri/renderD128,driver=i965 -noautorotate -i "http://XXXX:XXXX@192.168.0.105:9981/stream/channelid/XXXX" -map_metadata -1 -map_chapters -1 -threads 4 -sn -codec:v:0 h264_vaapi -rc_mode CBR -b:v 19616000 -maxrate 19616000 -bufsize 39232000 -sei -a53_cc -force_key_frames:0 "expr:gte(t,n_forced*3)" -vf "setparams=color_primaries=bt709:color_trc=bt709:colorspace=bt709,yadif=0:-1:0,scale=trunc(min(max(iw\,ih*a)\,1920)/2)*2:trunc(ow/a/2)*2,format=nv12,hwupload_vaapi" -codec:a:0 libfdk_aac -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 "59ed7962c6ddbf4b290f96cbfac90bce-1.mp4" -start_number 0 -hls_base_url "hls/59ed7962c6ddbf4b290f96cbfac90bce/" -hls_segment_filename "/cache/transcodes/59ed7962c6ddbf4b290f96cbfac90bce%d.mp4" -hls_playlist_type event -hls_list_size 0 -y "/cache/transcodes/59ed7962c6ddbf4b290f96cbfac90bce.m3u8"
[19:50:32] [INF] [3] Emby.Server.Implementations.Session.SessionManager: Playback stopped reported by app Jellyfin Web 10.9.6 playing XXXX. Stopped at 0 ms

Tvheadend does output an error after a little bit of trying, here is a log snippet:

Jun 16 14:47:03 XXXX tvheadend[1260]: subscription: 009F: "HTTP" unsubscribing from "XXXX", hostname="10.89.0.5", client="Lavf/60.3.100"
Jun 16 14:47:49 XXXX tvheadend[1260]: mpegts: 605.028MHz in ATSC-T Network - tuning on LG Electronics LGDT3306A VSB/QAM Frontend #0 : ATSC-T #0
Jun 16 14:47:49 XXXX tvheadend[1260]: subscription: 00A0: "HTTP" subscribing on channel "XXXX", weight: 100, adapter: "LG Electronics LGDT3306A VSB/QAM Frontend #0 : ATSC-T #0", network: "ATSC-T Network", mux: "XXXX", service: "XXXX", profile="pass", hostname="10.89.0.5", client="Lavf/60.3.100"
Jun 16 14:48:20 XXXX tvheadend[1260]: pass: Live stream: Write failed -- Resource temporarily unavailable
Jun 16 14:48:20 XXXX tvheadend[1260]: webui: Stop streaming /stream/channelid/XXXX, muxer reported errors
Jun 16 14:48:20 XXXX tvheadend[1260]: subscription: 00A0: "HTTP" unsubscribing from "XXXX", hostname="10.89.0.5", client="Lavf/60.3.100"

Jellyfin transcode log did not output anything unusual but let me know if you'd like it, or if there is anything else I can provide.

johann1525 commented 1 week ago

Same Here. Logs are similar. Did test with Firefox, Chromium and Jellyfin F-Droid and GPlay App. My server is a KVM arch linux VM with official jellyfin-server 1.9.6 package installed. TVHeadend is working flawlessly in kodi or via direct http url.

citronalco commented 1 week ago

Still does not work on Jellyfin 10.9.7. Server is Debian 12, client is Firefox.