mirror of
https://github.com/jellyfin/jellyfin.git
synced 2026-01-23 23:20:51 +01:00
HDHomeRun Dual: LiveTV not playing #697
Labels
No labels
area:database
awaiting-feedback
backend
blocked
breaking change: web api
bug
build
ci
confirmed
discussion needed
dotnet future
downstream
duplicate
EFjellyfin.db
enhancement
feature
future
github-actions
good first issue
hdr
help wanted
invalid
investigation
librarydb
live-tv
lyrics
media playback
music
needs testing
nuget
performance
platform
pull-request
question
regression
release critical
requires-web
roadmap
security
security
stale
support
syncplay
ui & ux
upstream
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: starred/jellyfin#697
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @markcs on GitHub (May 20, 2019).
Originally assigned to: @Bond-009 on GitHub.
Describe the bug
I've only just installed JellyFin and am unable to get live TV working with my old HDHomeRun Dual HDHR3 tuner.
I just see the spinning wheel.
To Reproduce
Start Live TV
Expected behavior
TV should play
**Logs**
System (please complete the following information):
Additional context
I have checked the firmware of the HDHomeRun and it was updated to the latest. I don't have any firewalls between the jellyfin server and the HDHomeRun device.
Help appreciated. Thanks!
@dinki commented on GitHub (May 24, 2019):
@markcs I can confirm that Live TV with HDHR is working fine for me since the first version of JF to now. I cannot, however, get Live TV to work using the AndroidTV app, but it does work fine in Chrome on my PC and Android phone.
Can you record any programs using the DVR function? If so, do they playback fine?
Try to catch me on the JF Riot chat and I can try and troubleshoot with you there. I'm certain you will be able to get it working. Give me an @dinki mention and I should get a notification on my phone..
@markcs commented on GitHub (May 26, 2019):
@dinki recording live TV using DVR fails as well, with the following error:
@dinki commented on GitHub (May 28, 2019):
@markcs Did you make any progress on this after the Riot chat?
@markcs commented on GitHub (May 29, 2019):
@dinki No luck. I reverted to Version 10.2.1 using a docker container. I can not play live TV, but do not see any errors. I have created a default recording path.
When I try to record a program, the recording starts but doesn't seem to finish. I see the .ts file being created under transcoding-tmp, but this just gets bigger and bigger, even after the time of the show has finished. This file is never moved to the recording path and the recording is never visible under the 'Recording' tab. (I guess because JF assumes the recording hasn't finished for some reason?)
@dinki commented on GitHub (May 29, 2019):
@Mark2xv that's no good. Unfortunately I'm at the end of my ideas. Your best bet is to jump back on chat and see if any of the devs can give you some other things to try.
@JamesDean3 commented on GitHub (Jun 7, 2019):
I'm having the same issue.
@PrplHaz4 commented on GitHub (Jun 7, 2019):
I recently opened an issue with similar symptoms, but to me it looked like it was specific to running as a windows service - it could be a more broad ffmpeg issue however. My logs are attached to the other issue, and there seems to be a lot of "junk" in the successful stream logs...
https://github.com/jellyfin/jellyfin/issues/1422
For the others having issues - what hardware acceleration settings are you using? I was on windows using AMF, but have since changed it to VAAPI and it seems to behave better. This is with an AMD APU.
@markcs commented on GitHub (Jun 12, 2019):
My issue seems to be this:
I have no firewall or anything between the jellyfin server and the HDHomeRun.
@sparky8251 commented on GitHub (Jun 25, 2019):
I'd be curious if somehow there is a permissions issue here. Can someone check what the permissions are on the tmp files you are seeing? Do they match what JF needs to be able to move the files to your media folders?
IIRC, the transcode files are placed under the typical JF conf dir, so it can easily write them there, but media folders might have different perms preventing it from being moved.
Regardless, looks like we need more information to proceed. This is a difficult one it seems...
@rechner commented on GitHub (Jun 26, 2019):
I'm having a seemingly similar problem with an HDHomeRun CONNECT. When I try to tune a live TV program, the browser player hangs at the spinning wheel. Docker v10.3.5, with apache reverse proxy, using an HDHR4-2US Firmware Version 20190621
Docker logs
[02:58:07] [INF] HttpClientManager GET: https://zap2it.tmsimg.com/h3/NowShowing/76876/s10991_h3_aa.png, [02:58:07] [INF] HttpClientManager GET: https://zap2it.tmsimg.com/h3/NowShowing/24343/s24343_h3_aa.png, [02:58:07] [INF] HttpClientManager GET: https://zap2it.tmsimg.com/h3/NowShowing/50612/s61775_h3_aa.png, [02:58:07] [INF] HttpClientManager GET: https://zap2it.tmsimg.com/sources/generic/generic_sources_h3.png, [02:58:07] [INF] HttpClientManager GET: https://zap2it.tmsimg.com/sources/generic/generic_sources_h3.png, [02:58:07] [INF] HttpClientManager GET: https://zap2it.tmsimg.com/sources/generic/generic_sources_h3.png, [02:58:07] [INF] HttpClientManager GET: https://zap2it.tmsimg.com/sources/generic/generic_sources_h3.png, [02:58:07] [INF] HttpClientManager GET: https://zap2it.tmsimg.com/h3/NowShowing/70483/s10269_h3_aa.png, [02:58:07] [INF] xmltv path: /xmltv/xmltv.xml, [02:58:07] [WRN] HTTP Response 200 to 10.0.0.1. Time (slow): 0:00:00.6347573. http://10.0.0.128:8096/emby/Items/76df8c7620f1d7f99b79a19789f65acf/Images/Primary?maxWidth=426&tag=7823343be10e3cb0ffd90734e3a85cc3&quality=40, [02:58:07] [WRN] HTTP Response 200 to 10.0.0.1. Time (slow): 0:00:00.6735968. http://10.0.0.128:8096/emby/Items/3fb26f1b061f8e03d4c206aedc9bc1bc/Images/Primary?maxWidth=426&tag=cb04d2e788266e94de61111aceb7d5d1&quality=40, [02:58:07] [INF] HttpClientManager GET: https://zap2it.tmsimg.com/h3/NowShowing/106633/s10270_h3_aa.png, [02:58:07] [INF] HttpClientManager GET: https://zap2it.tmsimg.com/sources/generic/generic_sources_h3.png, [02:58:07] [INF] HttpClientManager GET: https://zap2it.tmsimg.com/h3/NowShowing/21650/s21650_h3_aa.png, [02:58:07] [INF] HttpClientManager GET: https://zap2it.tmsimg.com/sources/generic/generic_sources_h3.png, [02:58:07] [INF] HttpClientManager GET: https://zap2it.tmsimg.com/h3/NowShowing/67818/s67818_h3_aa.png, [02:58:08] [INF] HttpClientManager GET: https://zap2it.tmsimg.com/h3/NowShowing/97794/s90401_h3_aa.png, [02:58:08] [INF] HttpClientManager GET: https://zap2it.tmsimg.com/h3/NowShowing/105295/s101752_h3_aa.png, [02:58:08] [WRN] HTTP Response 200 to 10.0.0.1. Time (slow): 0:00:00.5978415. http://10.0.0.128:8096/emby/Items/333c985d310922fb83b9c1a329af5f01/Images/Primary?maxWidth=426&tag=891f736ee725d35c1e1a79ff2041f10e&quality=40, [02:58:08] [INF] HttpClientManager GET: https://zap2it.tmsimg.com/h3/NowShowing/31220/s67676_h3_aa.png, [02:58:08] [INF] HttpClientManager GET: https://zap2it.tmsimg.com/sources/generic/generic_sources_h3.png, [02:58:08] [INF] HttpClientManager GET: https://zap2it.tmsimg.com/h3/NowShowing/73924/s97051_h3_aa.png, [02:58:08] [INF] HttpClientManager GET: https://zap2it.tmsimg.com/sources/generic/generic_sources_h3.png, [02:58:08] [INF] HttpClientManager GET: https://zap2it.tmsimg.com/h3/NowShowing/34741/s34741_h3_aa.png, [02:58:08] [INF] HttpClientManager GET: https://zap2it.tmsimg.com/h3/NowShowing/19575/s53098_h3_aa.png, [02:58:08] [INF] HttpClientManager GET: https://zap2it.tmsimg.com/h3/NowShowing/109090/s97051_h3_aa.png, [02:58:08] [INF] HttpClientManager GET: https://zap2it.tmsimg.com/h3/NowShowing/110385/s70436_h3_aa.png, [02:58:08] [INF] HttpClientManager GET: https://zap2it.tmsimg.com/h3/NowShowing/110386/s102116_h3_aa.png, [02:58:09] [INF] xmltv path: /xmltv/xmltv.xml, [02:58:09] [WRN] HTTP Response 200 to 10.0.0.1. Time (slow): 0:00:00.5367125. http://10.0.0.128:8096/emby/Items/f6ee786122aff911290323e20e598172/Images/Primary?maxWidth=426&tag=8c7513c06cd921bf4bce67474694d817&quality=40, [02:58:09] [WRN] HTTP Response 200 to 10.0.0.1. Time (slow): 0:00:00.5498447. http://10.0.0.128:8096/emby/Items/aea4b707f4d76a54a9d35311779f53a1/Images/Primary?maxWidth=426&tag=a30778e8637b3126d19595de166654a2&quality=40, [02:58:09] [WRN] HTTP Response 200 to 10.0.0.1. Time (slow): 0:00:00.5527466. http://10.0.0.128:8096/emby/Items/035b1732359f1d320db1270e4e8a2f87/Images/Primary?maxWidth=426&tag=940e7ac07af6974a2de287d6163c3aba&quality=40, [02:58:09] [WRN] HTTP Response 200 to 10.0.0.1. Time (slow): 0:00:00.5841937. http://10.0.0.128:8096/emby/Items/a3c66f2db0b8993d67650d44afd7eae9/Images/Primary?maxWidth=426&tag=f2121c15a1d9a31f3e7877df72aad796&quality=40, [02:58:09] [INF] Getting image size for item LiveTvChannel /config/metadata/livetv/ccef7f44f8bf78434b67847b4df814c8/metadata/poster.png, [02:58:10] [INF] xmltv path: /xmltv/xmltv.xml, [02:58:11] [INF] xmltv path: /xmltv/xmltv.xml, [02:58:12] [INF] xmltv path: /xmltv/xmltv.xml, [02:58:13] [INF] xmltv path: /xmltv/xmltv.xml, [02:58:14] [INF] xmltv path: /xmltv/xmltv.xml, [02:58:15] [INF] User policy for rechner. EnablePlaybackRemuxing: True EnableVideoPlaybackTranscoding: True EnableAudioPlaybackTranscoding: True, [02:58:15] [INF] Profile: Unknown Profile, Path: http://10.0.10.110, isEligibleForDirectPlay: True, isEligibleForDirectStream: True, [02:58:15] [INF] Profile: Unknown Profile, No direct play profiles found for Path: http://10.0.10.110, [02:58:15] [INF] Opening channel stream from Emby, external channel Id: hdhr_2.4, [02:58:15] [INF] Streaming Channel hdhr_2.4, [02:58:15] [INF] GetChannelStream: channel id: hdhr_2.4. stream id: native_b951ad2afe9ba9dfa1a58baecd435371_f18d31fdaafab16a719d1c3e1a17059d profile: native, [02:58:15] [INF] Opening SharedHttpStream Live stream from http://10.0.10.110:5004/auto/v2.4, [02:58:15] [INF] HttpClientManager GET: http://10.0.10.110:5004/auto/v2.4, [02:58:15] [INF] xmltv path: /xmltv/xmltv.xml, [02:58:16] [INF] Beginning SharedHttpStream stream to /config/transcoding-temp/18d1d8cdc61f4a12b598572940dda1bc.ts, [02:58:16] [INF] Live stream opened after 460.9164ms, [02:58:16] [INF] Returning mediasource streamId native_b951ad2afe9ba9dfa1a58baecd435371_f18d31fdaafab16a719d1c3e1a17059d, mediaSource.Id native_b951ad2afe9ba9dfa1a58baecd435371_f18d31fdaafab16a719d1c3e1a17059d, mediaSource.LiveStreamId null, [02:58:16] [INF] Waiting 3000ms before probing the live stream, [02:58:16] [INF] xmltv path: /xmltv/xmltv.xml, [02:58:17] [INF] xmltv path: /xmltv/xmltv.xml, [02:58:18] [INF] xmltv path: /xmltv/xmltv.xml, [02:58:19] [INF] /usr/local/bin/ffprobe -analyzeduration 3000000 -i "https://127.0.0.1:8920/LiveTv/LiveStreamFiles/18d1d8cdc61f4a12b598572940dda1bc/stream.ts" -threads 0 -v warning -print_format json -show_streams -show_format, [tcp @ 0x557105a09880] Connection to tcp://127.0.0.1:8920 failed: Connection refused, https://127.0.0.1:8920/LiveTv/LiveStreamFiles/18d1d8cdc61f4a12b598572940dda1bc/stream.ts: Connection refused, [02:58:19] [ERR] Error probing live tv stream, System.Exception: ffprobe failed - streams and format are both null., at MediaBrowser.MediaEncoding.Encoder.MediaEncoder.GetMediaInfoInternal(String inputPath, String primaryPath, MediaProtocol protocol, Boolean extractChapters, String probeSizeArgument, Boolean isAudio, Nullable`1 videoType, Boolean forceEnableLogging, CancellationToken cancellationToken), at Emby.Server.Implementations.Library.LiveStreamHelper.AddMediaInfoWithProbe(MediaSourceInfo mediaSource, Boolean isAudio, String cacheKey, Boolean addProbeDelay, CancellationToken cancellationToken), at Emby.Server.Implementations.Library.MediaSourceManager.OpenLiveStreamInternal(LiveStreamRequest request, CancellationToken cancellationToken), [02:58:19] [INF] Live stream opened: {"Protocol":"Http","Id":"native_b951ad2afe9ba9dfa1a58baecd435371_f18d31fdaafab16a719d1c3e1a17059d","Path":"https://127.0.0.1:8920/LiveTv/LiveStreamFiles/18d1d8cdc61f4a12b598572940dda1bc/stream.ts","Type":"Default","Container":"ts","IsRemote":false,"ReadAtNativeFramerate":false,"IgnoreDts":true,"IgnoreIndex":false,"GenPtsInput":false,"SupportsTranscoding":true,"SupportsDirectStream":true,"SupportsDirectPlay":false,"IsInfiniteStream":true,"RequiresOpening":true,"RequiresClosing":true,"LiveStreamId":"a17c75760a04e99b68cf766e11316e1c_09efa0d56b934a82adec00a87b837fb0_native_b951ad2afe9ba9dfa1a58baecd435371_f18d31fdaafab16a719d1c3e1a17059d","BufferMs":0,"RequiresLooping":false,"SupportsProbing":true,"MediaStreams":[{"Codec":"mpeg2video","VideoRange":"SDR","DisplayTitle":"MPEG2VIDEO","IsInterlaced":true,"BitRate":2000000,"IsDefault":false,"IsForced":false,"Type":"Video","Index":-1,"IsExternal":false,"IsTextSubtitleStream":false,"SupportsExternalStream":false},{"Codec":"AC3","DisplayTitle":"Dolby Digital","IsInterlaced":false,"BitRate":192000,"IsDefault":false,"IsForced":false,"Type":"Audio","Index":-1,"IsExternal":false,"IsTextSubtitleStream":false,"SupportsExternalStream":false}],"Formats":[],"Bitrate":2192000,"RequiredHttpHeaders":{},"AnalyzeDurationMs":3000}, [02:58:19] [INF] User policy for rechner. EnablePlaybackRemuxing: True EnableVideoPlaybackTranscoding: True EnableAudioPlaybackTranscoding: True, [02:58:19] [INF] Profile: Unknown Profile, Path: https://127.0.0.1:8920/LiveTv/LiveStreamFiles/18d1d8cdc61f4a12b598572940dda1bc/stream.ts, isEligibleForDirectPlay: True, isEligibleForDirectStream: True, [02:58:19] [INF] Profile: Unknown Profile, No direct play profiles found for Path: https://127.0.0.1:8920/LiveTv/LiveStreamFiles/18d1d8cdc61f4a12b598572940dda1bc/stream.ts, [02:58:19] [INF] Profile: Unknown Profile, Path: https://127.0.0.1:8920/LiveTv/LiveStreamFiles/18d1d8cdc61f4a12b598572940dda1bc/stream.ts, isEligibleForDirectPlay: True, isEligibleForDirectStream: True, [02:58:19] [INF] Profile: Unknown Profile, No direct play profiles found for Path: https://127.0.0.1:8920/LiveTv/LiveStreamFiles/18d1d8cdc61f4a12b598572940dda1bc/stream.ts, [02:58:19] [WRN] HTTP Response 200 to 10.0.0.1. Time (slow): 0:00:03.9035369. http://10.0.0.128:8096/emby/Items/ccef7f44f8bf78434b67847b4df814c8/PlaybackInfo?UserId=471bf4476696499d9e67e8181ad07af6&StartTimeTicks=0&IsPlayback=true&AutoOpenLiveStream=true&MaxStreamingBitrate=140000000, [02:58:19] [INF] /usr/local/bin/ffmpeg -analyzeduration 3000000 -fflags +igndts -f mpegts -i "https://127.0.0.1:8920/LiveTv/LiveStreamFiles/18d1d8cdc61f4a12b598572940dda1bc/stream.ts" -map_metadata -1 -map_chapters -1 -threads 0 -sn -codec:v:0 libx264 -pix_fmt yuv420p -preset veryfast -crf 23 -maxrate 139808000 -bufsize 279616000 -profile:v high -level 4.1 -x264opts:0 subme=0:me_range=4:rc_lookahead=10:me=dia:no_chroma_me:8x8dct=0:partitions=none -force_key_frames "expr:gte(t,n_forced*3)" -vf "yadif=0:-1:0" -flags -global_header -vsync cfr -codec:a:0 libmp3lame -ac 2 -ab 192000 -f segment -max_delay 5000000 -avoid_negative_ts disabled -start_at_zero -segment_time 3 -individual_header_trailer 0 -segment_format mpegts -segment_list_entry_prefix "hls/4bcea20134fe15ecc47ecb3b2e9d3c17/" -segment_list_type m3u8 -segment_start_number 0 -segment_list "/config/transcoding-temp/4bcea20134fe15ecc47ecb3b2e9d3c17.m3u8" -y "/config/transcoding-temp/4bcea20134fe15ecc47ecb3b2e9d3c17%d.ts", [02:58:19] [INF] FFMpeg exited with code 1, [02:58:20] [INF] xmltv path: /xmltv/xmltv.xml, [02:58:21] [INF] xmltv path: /xmltv/xmltv.xml, [02:58:22] [INF] xmltv path: /xmltv/xmltv.xml, [02:58:23] [INF] xmltv path: /xmltv/xmltv.xml, [02:58:24] [INF] xmltv path: /xmltv/xmltv.xml, [02:58:25] [INF] xmltv path: /xmltv/xmltv.xml, [02:58:26] [INF] xmltv path: /xmltv/xmltv.xml, [02:58:27] [INF] xmltv path: /xmltv/xmltv.xml, [02:58:28] [INF] xmltv path: /xmltv/xmltv.xml, [02:58:30] [INF] xmltv path: /xmltv/xmltv.xml, [02:58:31] [INF] xmltv path: /xmltv/xmltv.xml, [02:58:32] [INF] xmltv path: /xmltv/xmltv.xml, [02:58:33] [INF] xmltv path: /xmltv/xmltv.xml, [02:58:35] [INF] xmltv path: /xmltv/xmltv.xml, [02:58:36] [INF] xmltv path: /xmltv/xmltv.xml, [02:58:37] [INF] xmltv path: /xmltv/xmltv.xml, [02:58:38] [INF] xmltv path: /xmltv/xmltv.xml, [02:58:39] [INF] xmltv path: /xmltv/xmltv.xml, [02:58:41] [INF] xmltv path: /xmltv/xmltv.xml, [02:58:42] [INF] xmltv path: /xmltv/xmltv.xml, [02:58:43] [INF] xmltv path: /xmltv/xmltv.xml, [02:58:44] [INF] xmltv path: /xmltv/xmltv.xml, [02:58:45] [INF] xmltv path: /xmltv/xmltv.xml, [02:58:46] [INF] xmltv path: /xmltv/xmltv.xml, [02:58:47] [INF] xmltv path: /xmltv/xmltv.xml, [02:58:48] [INF] xmltv path: /xmltv/xmltv.xml, [02:58:50] [INF] Refresh Guide Completed after 1 minute(s) and 18 seconds, [02:58:50] [INF] ExecuteQueuedTasks,In the course of debugging, I tried running that same ffmpeg command on the container's console to see what would happen, since I didn't find the logs for the ffmpeg process that died in Jellyfin's log viewer.
Snip
Trying to play back a recorded program that is still in progress dies in a similar fashion.
Docker logs
However, playing back previously-recorded shows works fine.
@markcs commented on GitHub (Jun 27, 2019):
@sparky8251
It doesn't appear to be getting as far as receiving a file to transcode. As I wrote above, the issue is this:
Anyway, to answer your question, I believe that the folder I have for jellyfin has the correct permissions. I tried running manualy as my own user with the same result (livetv not working).
drwxrwsr-x 2 jellyfin jellyfin 10 May 27 16:26 livetv
drwxrwsr-x 2 jellyfin jellyfin 10 Jun 27 13:13 transcoding-temp
@E64jLZN8 commented on GitHub (Jul 24, 2019):
Same issue here on a Macbook Pro running Jellyfin, with xTeve as a virtual HDHR Tuner: live TV streams do not start (spinning wheel) until I get error messages (about 1.5 minute later).
Note that the stream URL is correct (I can open it without any problem in VLC).
Here are the details of the terminal window (from the initial request to the error messages):
@markcs commented on GitHub (Jul 25, 2019):
I just tried with the latest version (10.3.7-1) but still the same issue. I can not watch live TV.
@dinki commented on GitHub (Jul 29, 2019):
@rechner Did you ever get this sorted? Are you running Docker in host mode? HDHR needs some UDP that has a random port or something and live tv will probably not work if you are running in bridge mode.
Also, be sure to use anything but 10.3.6 which had live tv broken until fixed in 10.3.7
@rechner commented on GitHub (Jul 29, 2019):
Just pulled the latest image, and same deal for 10.3.7, no live or recording-in-progress TV, but recorded programmes play back fine. I'm using MACVLAN network mode to give the container its own IP on my LAN, and Apache reverse proxy. Is streaming traffic from the HDHR different between recording and in-progress playback? My cursory impression was that live TV was streamed and buffered by Jellyfin. The HDHR is on a separate, IoT VLAN, but no firewall restrictions in place, and even an mDNS reflector is on in the router (though I suppose UDP traffic problems aren't beyond the realm of possibility). Any suggestions for further troubleshooting?
Docker logs
I can do this from the container's shell
@dinki commented on GitHub (Jul 30, 2019):
@rechner You know way more about networking than I'll ever know, but is there a way for you to set the container in host mode just as a test? I can only guess that it is a UDP problem causing this as that has plagued quite a few HDHR users including myself. Let's eliminate that as the problem.
@kodywilson commented on GitHub (Aug 14, 2019):
I'm having the exact same issue that @rechner is having. I can record shows no problem and they play back fine. Live TV, however, never works.
My Jellyfin is in host mode too.
Docker Logs
``` [cont-init.d] 30-config: executing... , [cont-init.d] 30-config: exited 0., [cont-init.d] 40-gid-video: executing... , [cont-init.d] 40-gid-video: exited 0., [cont-init.d] 99-custom-scripts: executing... , [custom-init] no custom files found exiting..., [cont-init.d] 99-custom-scripts: exited 0., [cont-init.d] done., [services.d] starting services, [services.d] done., [08:07:57] [INF] Jellyfin version: 10.3.7.0, [08:07:57] [INF] Arguments: ["/usr/lib/jellyfin/bin/jellyfin.dll", "--ffmpeg=/usr/lib/jellyfin-ffmpeg/ffmpeg"], [08:07:57] [INF] Operating system: Linux 5.0.0.23, [08:07:57] [INF] Architecture: X64, [08:07:57] [INF] 64-Bit Process: True, [08:07:57] [INF] User Interactive: True, [08:07:57] [INF] Processor count: 2, [08:07:57] [INF] Program data path: /config/data, [08:07:57] [INF] Web resources path: /usr/lib/jellyfin/bin/jellyfin-web/src, [08:07:57] [INF] Application directory: /usr/lib/jellyfin/bin/, [08:07:57] [INF] Setting cache path to /config/cache, [08:07:57] [INF] Loading assemblies, [08:07:57] [INF] Loaded assembly LiteDB, Version=4.1.4.0, Culture=neutral, PublicKeyToken=4ee40123013c9f27 from /config/data/plugins/Kodi Sync Queue/LiteDB.dll, [08:07:57] [INF] Loaded assembly Jellyfin.Plugin.KodiSyncQueue, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null from /config/data/plugins/Kodi Sync Queue/Jellyfin.Plugin.KodiSyncQueue.dll, [08:07:57] [INF] Sqlite version: 3.26.0, [08:07:57] [INF] Sqlite compiler options: COMPILER=gcc-5.4.0 20160609,DEFAULT_FOREIGN_KEYS,ENABLE_COLUMN_METADATA,ENABLE_FTS3_PARENTHESIS,ENABLE_FTS4,ENABLE_FTS5,ENABLE_JSON1,ENABLE_RTREE,THREADSAFE=1, [08:07:57] [INF] Default journal_mode for /config/data/data/users.db is wal, [08:07:57] [INF] PRAGMA synchronous=1, [08:07:57] [INF] Default journal_mode for /config/data/data/authentication.db is wal, [08:07:57] [INF] PRAGMA synchronous=1, [08:07:57] [INF] Default journal_mode for /config/data/data/activitylog.db is wal, [08:07:57] [INF] PRAGMA synchronous=1, [08:07:57] [INF] Default journal_mode for /config/data/data/displaypreferences.db is wal, [08:07:57] [INF] PRAGMA synchronous=1, [08:07:57] [INF] Default journal_mode for /config/data/data/library.db is wal, [08:07:58] [INF] PRAGMA synchronous=1, [08:07:58] [INF] Jellyfin.Plugin.KodiSyncQueue IS NOW STARTING!!!, [08:07:58] [INF] Creating DB Repository..., [08:07:58] [INF] SyncAPI Created and Listening at "/Jellyfin.Plugin.KodiSyncQueue/{UserID}/GetItems?LastUpdateDT={LastUpdateDT}&format=json" - {LastUpdateDT} must be a UTC DateTime formatted as yyyy-MM-ddTHH:mm:ssZ, [08:07:58] [INF] The following parameters also exist to filter the results:, [08:07:58] [INF] filter=movies,tvshows,music,musicvideos,boxsets, [08:07:58] [INF] Results will be included by default and only filtered if added to the filter query..., [08:07:58] [INF] the filter query must be lowercase in both the name and the items..., [08:07:58] [INF] Calling ServiceStack AppHost.Init, [08:07:59] [INF] SkiaSharp version: 1.68.0.0, [08:07:59] [INF] Running startup tasks, [08:07:59] [INF] Retention Task Scheduled!, [08:07:59] [INF] Daily trigger for Remove Old Sync Data set to fire at 08/15/2019 00:01, which is 15:53:00.6686729 from now., [08:07:59] [INF] Daily trigger for Chapter image extraction set to fire at 08/15/2019 02:00, which is 17:52:00.6648947 from now., [08:07:59] [INF] FFmpeg validation: Found ffmpeg version 4.0, [08:07:59] [INF] FFmpeg validation: Found suitable ffmpeg version, [08:07:59] [INF] Validating media encoder at /usr/lib/jellyfin-ffmpeg/ffmpeg, [08:07:59] [INF] Available decoders: ["h264", "h264_cuvid", "hevc", "hevc_cuvid", "mpeg2video", "aac", "ac3", "mp3"], [08:07:59] [INF] Available encoders: ["libx264", "h264_nvenc", "h264_omx", "h264_vaapi", "libx265", "hevc_nvenc", "hevc_vaapi", "mpeg4", "msmpeg4", "aac", "ac3", "libmp3lame", "libopus", "libvorbis", "srt"], [08:07:59] [INF] Encoder validation complete, [08:07:59] [INF] FFmpeg: SetByArgument: /usr/lib/jellyfin-ffmpeg/ffmpeg, [08:07:59] [INF] ServerId: 5273c67dc0ea44f190b965cd3790ad0a, [08:07:59] [INF] Executed all pre-startup entry points in 0:00:00.1743865, [08:07:59] [INF] Core startup complete, [08:07:59] [INF] LibrarySyncNotification Startup..., [08:07:59] [INF] Loading live tv data from /config/data/data/livetv/timers.json, [08:08:00] [INF] WS http://jellyfin.mydomain.com:443/embywebsocket?api_key=d12dasflljlj456456lkebe88710&deviceId=TW96aWxsYS81LjAgKFgxMTsgVWJ1bnR1OyBMaW51eCB4ODZfNjQ7IHJ2OjY4LjApIEdlY2tvLzIwMTAwMTAxIEZpcmVmb3gvNjguMHwxNTY1MDMyMDU1MzQ5. UserAgent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0, [08:08:00] [WRN] GetItemList query time (slow): 123.3453. Query: select type,data,StartDate,EndDate,ChannelId,IsMovie,IsSeries,EpisodeTitle,IsRepeat,CommunityRating,CustomRating,IndexNumber,IsLocked,PreferredMetadataLanguage,PreferredMetadataCountryCode,Width,Height,DateLastRefreshed,Name,Path,PremiereDate,Overview,ParentIndexNumber,ProductionYear,OfficialRating,ForcedSortName,RunTimeTicks,Size,DateCreated,DateModified,guid,Genres,ParentId,Audio,ExternalServiceId,IsInMixedFolder,DateLastSaved,LockedFields,Studios,Tags,TrailerTypes,OriginalTitle,PrimaryVersionId,DateLastMediaAdded,Album,CriticRating,IsVirtualItem,SeriesName,SeasonName,SeasonId,SeriesId,PresentationUniqueKey,InheritedParentalRatingValue,ExternalSeriesId,Tagline,ProviderIds,Images,ProductionLocations,ExtraIds,TotalBitrate,ExtraType,Artists,AlbumArtists,ExternalId,SeriesPresentationUniqueKey,ShowId,OwnerId from TypedBaseItems A where ParentId=@ParentId, [08:08:00] [INF] Executed all post-startup entry points in 0:00:00.8202848, [08:08:00] [INF] Watching directory /media/recordings, [08:08:01] [INF] Watching directory /media/Movies, [08:08:02] [INF] StartupTrigger fired for task: Check for plugin updates, [08:08:02] [INF] Queueing task PluginUpdateTask, [08:08:02] [INF] Executing Check for plugin updates, [08:08:03] [WRN] HTTP Response 200 to 192.168.1.1. Time (slow): 0:00:00.5675714. http://jellyfin.mydomain.com:443/emby/Users/5721b316d52a4895a51a1da8b833fa3e/Views, [08:08:03] [INF] Check for plugin updates Completed after 0 minute(s) and 0 seconds, [08:08:03] [INF] ExecuteQueuedTasks, [08:08:14] [INF] User policy for crane. EnablePlaybackRemuxing: True EnableVideoPlaybackTranscoding: True EnableAudioPlaybackTranscoding: True, [08:08:14] [INF] Profile: Unknown Profile, Path: http://192.168.1.25, isEligibleForDirectPlay: True, isEligibleForDirectStream: True, [08:08:14] [INF] Profile: Unknown Profile, No direct play profiles found for Path: http://192.168.1.25, [08:08:14] [INF] Opening channel stream from Emby, external channel Id: hdhr_9.1, [08:08:14] [INF] Streaming Channel hdhr_9.1, [08:08:14] [INF] GetChannelStream: channel id: hdhr_9.1. stream id: native_7e3fb9393fa80fc2d3712f2e873550d2_f408aff5b69fbd06c9e44e363b2ff1e2 profile: native, [08:08:14] [INF] Opening SharedHttpStream Live stream from http://192.168.1.25:5004/auto/v9.1, [08:08:14] [INF] Beginning SharedHttpStream stream to /config/data/transcoding-temp/9a191f31d4bb48bf83aa4917a8e55a0f.ts, [08:08:14] [INF] Live stream opened after 297.6137ms, [08:08:14] [INF] Returning mediasource streamId native_7e3fb9393fa80fc2d3712f2e873550d2_f408aff5b69fbd06c9e44e363b2ff1e2, mediaSource.Id native_7e3fb9393fa80fc2d3712f2e873550d2_f408aff5b69fbd06c9e44e363b2ff1e2, mediaSource.LiveStreamId null, [08:08:14] [INF] Waiting 3000ms before probing the live stream, [08:08:17] [INF] /usr/lib/jellyfin-ffmpeg/ffprobe -analyzeduration 3000000 -i "https://127.0.0.1:8920/LiveTv/LiveStreamFiles/9a191f31d4bb48bf83aa4917a8e55a0f/stream.ts" -threads 0 -v warning -print_format json -show_streams -show_format, [tcp @ 0x5572cb5ed8c0] Connection to tcp://127.0.0.1:8920 failed: Connection refused, https://127.0.0.1:8920/LiveTv/LiveStreamFiles/9a191f31d4bb48bf83aa4917a8e55a0f/stream.ts: Connection refused, [08:08:17] [ERR] Error probing live tv stream, System.Exception: ffprobe failed - streams and format are both null., at MediaBrowser.MediaEncoding.Encoder.MediaEncoder.GetMediaInfoInternal(String inputPath, String primaryPath, MediaProtocol protocol, Boolean extractChapters, String probeSizeArgument, Boolean isAudio, Nullable`1 videoType, Boolean forceEnableLogging, CancellationToken cancellationToken), at Emby.Server.Implementations.Library.LiveStreamHelper.AddMediaInfoWithProbe(MediaSourceInfo mediaSource, Boolean isAudio, String cacheKey, Boolean addProbeDelay, CancellationToken cancellationToken), at Emby.Server.Implementations.Library.MediaSourceManager.OpenLiveStreamInternal(LiveStreamRequest request, CancellationToken cancellationToken), [08:08:17] [INF] Live stream opened: {"Protocol":"Http","Id":"native_7e3fb9393fa80fc2d3712f2e873550d2_f408aff5b69fbd06c9e44e363b2ff1e2","Path":"https://127.0.0.1:8920/LiveTv/LiveStreamFiles/9a191f31d4bb48bf83aa4917a8e55a0f/stream.ts","Type":"Default","Container":"ts","IsRemote":false,"ReadAtNativeFramerate":false,"IgnoreDts":true,"IgnoreIndex":false,"GenPtsInput":false,"SupportsTranscoding":true,"SupportsDirectStream":true,"SupportsDirectPlay":false,"IsInfiniteStream":true,"RequiresOpening":true,"RequiresClosing":true,"LiveStreamId":"a17c75760a04e99b68cf766e11316e1c_09efa0d56b934a82adec00a87b837fb0_native_7e3fb9393fa80fc2d3712f2e873550d2_f408aff5b69fbd06c9e44e363b2ff1e2","BufferMs":0,"RequiresLooping":false,"SupportsProbing":true,"MediaStreams":[{"Codec":"mpeg2video","VideoRange":"SDR","DisplayTitle":"1080I MPEG2VIDEO","IsInterlaced":true,"BitRate":15000000,"IsDefault":false,"IsForced":false,"Height":1080,"Width":1920,"Type":"Video","Index":-1,"IsExternal":false,"IsTextSubtitleStream":false,"SupportsExternalStream":false},{"Codec":"AC3","DisplayTitle":"Dolby Digital","IsInterlaced":false,"BitRate":448000,"IsDefault":false,"IsForced":false,"Type":"Audio","Index":-1,"IsExternal":false,"IsTextSubtitleStream":false,"SupportsExternalStream":false}],"Formats":[],"Bitrate":15448000,"RequiredHttpHeaders":{},"AnalyzeDurationMs":3000}, [08:08:17] [INF] User policy for crane. EnablePlaybackRemuxing: True EnableVideoPlaybackTranscoding: True EnableAudioPlaybackTranscoding: True, [08:08:17] [INF] Profile: Unknown Profile, Path: https://127.0.0.1:8920/LiveTv/LiveStreamFiles/9a191f31d4bb48bf83aa4917a8e55a0f/stream.ts, isEligibleForDirectPlay: True, isEligibleForDirectStream: True, [08:08:17] [INF] Profile: Unknown Profile, No direct play profiles found for Path: https://127.0.0.1:8920/LiveTv/LiveStreamFiles/9a191f31d4bb48bf83aa4917a8e55a0f/stream.ts, [08:08:17] [INF] Profile: Unknown Profile, Path: https://127.0.0.1:8920/LiveTv/LiveStreamFiles/9a191f31d4bb48bf83aa4917a8e55a0f/stream.ts, isEligibleForDirectPlay: True, isEligibleForDirectStream: True, [08:08:17] [INF] Profile: Unknown Profile, No direct play profiles found for Path: https://127.0.0.1:8920/LiveTv/LiveStreamFiles/9a191f31d4bb48bf83aa4917a8e55a0f/stream.ts, [08:08:17] [WRN] HTTP Response 200 to 192.168.1.1. Time (slow): 0:00:03.7577997. http://jellyfin.mydomain.com:443/emby/Items/f0338991ae98e56c7b4e6309791c77b0/PlaybackInfo?UserId=5721b316d52a4895a51a1da8b833fa3e&StartTimeTicks=0&IsPlayback=true&AutoOpenLiveStream=true&MaxStreamingBitrate=140000000, [08:08:18] [INF] /usr/lib/jellyfin-ffmpeg/ffmpeg -analyzeduration 3000000 -fflags +igndts -f mpegts -i "https://127.0.0.1:8920/LiveTv/LiveStreamFiles/9a191f31d4bb48bf83aa4917a8e55a0f/stream.ts" -map_metadata -1 -map_chapters -1 -threads 0 -sn -codec✌️0 libx264 -pix_fmt yuv420p -preset veryfast -crf 23 -maxrate 139552000 -bufsize 279104000 -profile:v high -level 4.1 -x264opts:0 subme=0:me_range=4:rc_lookahead=10:me=dia:no_chroma_me:8x8dct=0:partitions=none -force_key_frames "expr:gte(t,n_forced*3)" -vf "yadif=0👎0" -flags -global_header -vsync cfr -codec🅰️0 aac -strict experimental -ac 2 -ab 384000 -f segment -max_delay 5000000 -avoid_negative_ts disabled -start_at_zero -segment_time 3 -individual_header_trailer 0 -segment_format mpegts -segment_list_entry_prefix "hls/654e2157359e0477960349b126547697/" -segment_list_type m3u8 -segment_start_number 0 -segment_list "/config/data/transcoding-temp/654e2157359e0477960349b126547697.m3u8" -y "/config/data/transcoding-temp/654e2157359e0477960349b126547697%d.ts", [08:08:18] [INF] FFMpeg exited with code 1, ```
@PrplHaz4 commented on GitHub (Aug 14, 2019):
@kodywilson are you behind a reverse proxy and purposely using the 8920 port?
@kodywilson commented on GitHub (Aug 14, 2019):
I am behind an nginx reverse proxy. No to the port thing, I only tried that after getting desperate. :)
You know, I just looked through the logs and it always mentioned that, even before I added 8920 to the compose file.
Right now, in advanced Jellyfin settings I have:
Local HTTP: 8096
Local HTTPS: 8920
Public HTTP: 8096
Public HTTPS: 443
and then this in my docker compose:
I didn't have 8920 in the compose file at first, but was still getting the same error messages. In fact, I added it after seeing the error message thinking it was part of the problem. :)
Everything else that I have tried works great, it is only live TV giving issues. I use an HD HomeRun connect.
@cvium commented on GitHub (Aug 15, 2019):
This appears to have been broken by https://github.com/jellyfin/jellyfin/pull/1103 (specifically
e64aaebbac (diff-9b2ea67d89a2f298440a152bc96a08f2R204)). UDP sockets are connectionless, which NetworkStream does not like...@anthonylavado commented on GitHub (Aug 16, 2019):
We have a potential fix in a PR. Is there anyone here with an issue that could test it for us?
@kodywilson commented on GitHub (Aug 17, 2019):
I would test it. Do I just pull an image with a certain tag and redeploy?
@anthonylavado
@markcs commented on GitHub (Aug 17, 2019):
@Bond-009 Happy to test! Instructions would be great, to make sure I test correctly!
@anthonylavado
@kodywilson commented on GitHub (Aug 27, 2019):
Hi @anthonylavado and @Bond-009 is there anything that I can do to help test this? Do I pull down the branch and then rebuild the image, docker deploy, and then try it out? Is that the best way or should it be in a nightly build and then I pull that version?
Please let me know and thank you so much for all you do!
@anthonylavado commented on GitHub (Aug 27, 2019):
Sorry we haven't merged this yet - the idea is that yes, we'll merge it, and then anyone with Docker can pull down a nightly to test with. There have been some other changes that have gone in since, and we need to fix some merge conflicts first.
@kodywilson commented on GitHub (Aug 27, 2019):
Right on, thanks Anthony, looking forward to testing this out!
@anthonylavado commented on GitHub (Aug 28, 2019):
With the magic words, GitHub auto closes an issue when the PR is merged to master.
Anyway, this is in now, and there will be a nightly generated as a result. Check for a tag after midnight EDT (currently UTC -4).
@PrplHaz4 commented on GitHub (Aug 29, 2019):
@anthonylavado It looks like that nightly has resolved the LiveTV issue - I am able to play livetv with my HDHR using the native jellyfin LiveTV feature.
As a note to anyone following - I DID find that your proxy settings make a difference for LiveTV. I have jf behind a reverse proxy, so the url with port 8920 was not reachable by any of my clients. Changing Secure Connection Mode to
Disabledand restarting Jellyfin got me a successful HDHR LiveTV stream.Secure Connection Mode =
Disabledhttp://127.0.0.1:8096/LiveTv/LiveStreamFiles/dbad7339d3b146caadfae1b4e596acca/stream.tsSecure Connection Mode =
Handled by Reverse Proxyhttps://127.0.0.1:8920/LiveTv/LiveStreamFiles/5976d69faa434b4db64d651640d5b7da/stream.ts@kodywilson commented on GitHub (Aug 29, 2019):
I just tested it as well and it fixed the live tv issues I was having!
@markcs commented on GitHub (Aug 30, 2019):
The latest Jellyfin nightly in the Ubuntu repo is still jellyfin-nightly_20190824_amd64.deb, so I haven't been able to test the original issue yet. Will comment when I've tested on a later release
@markcs commented on GitHub (Aug 30, 2019):
I just updated to version Version: 10.3.7 or version jellyfin-nightly_20190830_amd64.deb.
I see the following error when I try to start the live TV stream:
NOTE: I am not using docker
@kodywilson commented on GitHub (Sep 9, 2019):
This is probably a dumb question @markcs , but does the tuner work when you use the HDHomeRun app or through another program? Do you have the tuner in another controller like TVHeadend? Sometimes they are sticky and don't let go of the channel causing other applications to be unable to use it. I like to check the status page for the HD HomeRun device (just browse to the IP address you assigned it) to see if the tuners are being used by anything else.
Looking at your error messages, I would guess firewall or permissions issue. I run Jellyfin from a container, but you aren't using Docker. On your system, does it run as your user or root?
The nightly @anthonylavado had us use fixed my and @PrplHaz4 issue with live TV, so what you are experiencing must be different. Are you interested in trying it from Docker just for grins? I could send you the code I have in my Docker compose file.
@markcs commented on GitHub (Sep 9, 2019):
@kodywilson May be not a dumb question, but yes, my HDHomeRun tuner works well with Plex, the HDHomeRun app and via Live Channels from my Shield. When I try to run Jellyfin, I do it from the same server that runs Plex (but I shut Plex down first, especially when testing for these bugs). I'm almost 100% sure it is not my environment that is the issue.
When Jellyfin is installed through the repo, it creates a user called jellyfin and runs as that user. Running jellyfin as root or other user has no effect and has the same issue.
Out of curiosity, what HDHomeRun device do you have? Mine is an old Model: HDHR3-DT
@PrplHaz4 commented on GitHub (Sep 10, 2019):
@markcs Your HDHR should still be supported as the "native" HDHR support in Jellyfin uses the "original" UDP protocol for streaming (not HTTP) - some info on hardware generations here: https://forum.silicondust.com/forum/viewtopic.php?t=71707
Some notes from Windows Docs:
My working hardware:
@kodywilson commented on GitHub (Sep 10, 2019):
Mine is the same as @PrplHaz4
Only difference being slightly newer firmware for mine.
@SenorSmartyPants commented on GitHub (Sep 30, 2019):
DVR is not recording for me with the same kind of errors
Docker log
HDHR hardware info
HDHomeRun DUAL
Model: HDHR3-US
Firmware: 20170930
Docker ARM64 nightly-20190930
@mooninite commented on GitHub (Oct 20, 2019):
Yes, this is the problem. Emby would use http instead of https. If we want to use https then instead of 127.0.0.1 we need to use the server DNS host name. Then this will all work.
Let's Encrypt won't issue certs with SAN IP addresses.
@kodywilson commented on GitHub (Oct 24, 2019):
@anthonylavado Is it possible to merge in whatever changes were made that fixed the issues @PrplHaz4 and I were having?
I'm not suggesting to close this issue, since some people are still having problems, but maybe https://github.com/jellyfin/jellyfin/pull/1633 can be merged into master so those of us helped by it can start using Live TV?
@anthonylavado commented on GitHub (Oct 25, 2019):
@kodywilson From what I can see, it was released in 10.4.0...
@adamheffernan commented on GitHub (Oct 26, 2019):
Not fixed here having issues playing live TV on Android client, browser works fine.
@dinki commented on GitHub (Oct 26, 2019):
Android client has never been able to play live tv for me. Android TV and web work fine though.
@JustAMan commented on GitHub (Nov 1, 2019):
If stuff works on browser then most likely it's the non-browser client which is broken, please create separate issue there if no such issue already exists.
@hobesman commented on GitHub (Nov 19, 2019):
For me, the problem was that the stream was looking for 127.0.0.1/.../stream.ts, but I had changed the network settings in Jellyfin to bind to a specific network IP, in which case Jellyfin stops responding on 127.0.0.1.
When I reset that entry in the Jellyfin network settings (thereby allowing Jellyfin to bind to all IPs) and restarted Jellyfin, live tv started working. This may be a separate bug from what others are experiencing.
@JustAMan commented on GitHub (Nov 19, 2019):
@hobesman can you file an issue about that IP binding and LiveTV problems you saw?
@stale[bot] commented on GitHub (Mar 18, 2020):
This issue has gone 120 days without comment. To avoid abandoned issues, it will be closed in 21 days if there are no new comments.
If you're the original submitter of this issue, please comment confirming if this issue still affects you in the latest release or nightlies, or close the issue if it has been fixed. If you're another user also affected by this bug, please comment confirming so. Either action will remove the stale label.
This bot exists to prevent issues from becoming stale and forgotten. Jellyfin is always moving forward, and bugs are often fixed as side effects of other changes. We therefore ask that bug report authors remain vigilant about their issues to ensure they are closed if fixed, or re-confirmed - perhaps with fresh logs or reproduction examples - regularly. If you have any questions you can reach us on Matrix or Social Media.
@jeremyvisser commented on GitHub (May 12, 2020):
I’m still experiencing this issue as originally described. I won’t re-post logs, since they are identical to the above.
I’m running the latest Docker image (5e41dfe87d74, v10.5.5), with networking in host mode, and Live TV successfully discovers the HDHomeRun (my model HDHR-EU) and channels, but playback just spins.
One thing that really surprised me was the strace output, where it appears like Jellyfin is trying to bind to the HDHomeRun's address.
In the below example, the Jellyfin host (including Docker container in host mode) has IP address 192.168.23.2. Meanwhile, the HDHomeRun has IP address 192.168.23.6.
The most surprising lines to me are the last ones, where it appears that Jellyfin (running on 192.168.23.2) is trying to bind to a TCP socket on 192.168.23.6:65001 (the IP of the HDHomeRun). Since the machine does not have that IP, it quite legitimately fails:
Did I interpret the above correctly? If so, why would Jellyfin try to listen on a socket with the HDHomeRun's IP address which is bound to fail (no pun intended).
@jeremyvisser commented on GitHub (May 13, 2020):
Digging further, there appear to be two areas of brokenness:
In
HdHomerunManager.StartStreaming(), it configures the TcpClient like this:92299be64c/Emby.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunManager.cs (L139-L143)Now, I have zero C# experience, so correct me if I'm wrong, but I looked up the TcpClient documentation and saw that calling TcpClient with an IPEndPoint as parameter tells it to bind to that source address:
https://docs.microsoft.com/en-us/dotnet/api/system.net.sockets.tcpclient?view=netcore-3.1
This at least appears to be the source of the bizarre behaviour from what I saw in my strace.
I don't know exactly what the code is trying to achieve as it is insufficiently documented, but my best guess is that it is probably intended to use the
TcpClient(String, Int32)method instead, which makes an outbound connection instead of trying to bind locally.The RTP URL that gets passed to the HDHomeRun appears to be getting corrupted with an IPv4–mapped IPv6 address that the HDHomeRun does not understand.
The RTP URL is generated like this:
92299be64c/Emby.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunManager.cs (L191)This
localIpultimately comes from here:92299be64c/Emby.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunUdpStream.cs (L72-L73)Now, what's surprising, is that it's getting the
RemoteEndPoint, which is the HDHomeRun's address. So it's passing an IPv4–mapped IPv6 address of the HDHomeRun's own IP to itself, which results in this constructed URL:This results in an "ERROR: malformed or unsupported target mode" from the HDHomeRun.
I'm completely unfamiliar with the protocol, but naïvely this doesn't make sense to me for two reasons:
We should probably be passing the Jellyfin server's IP to the HDHomeRun, not the HDHomeRun's own IP to the HDHomeRun.
Perhaps we should be using
LocalEndPointinstead ofRemoteEndPointinHdHomerunUdpStream.Open()?The IPv4–mapped IPv6 address is obviously not encoded properly in the RTP URL (missing square brackets for an IPv6 address to start off with) and in any case is not handled by the HDHomeRun which causes it to fail to send a stream ("ERROR: malformed or unsupported target mode").
(I haven’t seen my HDHomeRun pick up an IPv6 address, so it wouldn’t surprise me if it is IPv4–only. It would be worth finding out whether all HDHomeRuns are IPv4–only, or only my older model HDHR-EU.)
(If I hardcode my machine's IP address, then the HDHomeRun accepts it, and starts sending me a UDP stream, but Jellyfin still doesn't present it to my browser, so there is yet another obstacle to overcome before this works, but one step at a time.)
Now, I apologise if I'm misunderstanding anything here or being misleading. This is my first time using Jellyfin, and I am not a C# programmer, nor am I familiar with the HDHomeRun protocol. However, in my naïve opinion, something seems broken here.
@JustAMan commented on GitHub (May 13, 2020):
@jeremyvisser nice investigation and write-up! If you can test by compiling yourself I might be able to follow your lead here and blindly cook a fix.
@jeremyvisser commented on GitHub (May 14, 2020):
Yes, I’m able to build the software and test just fine on my end; I just don’t really have the experience to make the fix myself at this time.
@stale[bot] commented on GitHub (Sep 11, 2020):
This issue has gone 120 days without comment. To avoid abandoned issues, it will be closed in 21 days if there are no new comments.
If you're the original submitter of this issue, please comment confirming if this issue still affects you in the latest release or nightlies, or close the issue if it has been fixed. If you're another user also affected by this bug, please comment confirming so. Either action will remove the stale label.
This bot exists to prevent issues from becoming stale and forgotten. Jellyfin is always moving forward, and bugs are often fixed as side effects of other changes. We therefore ask that bug report authors remain vigilant about their issues to ensure they are closed if fixed, or re-confirmed - perhaps with fresh logs or reproduction examples - regularly. If you have any questions you can reach us on Matrix or Social Media.
@markcs commented on GitHub (Sep 21, 2020):
Jellyfin 10.6.4 running in Docker on Ubuntu server. Still not able to play live TV.
@markcs commented on GitHub (Dec 8, 2020):
Excellent. I downloaded v10.7.0-rc1 and this issue is fixed in that release.