-
-
Notifications
You must be signed in to change notification settings - Fork 1.8k
Description
I have about 870 live TV channels (IPTV via M3U) and the guide takes around 9-10 seconds to load. Meanwhile Emby with the exact same channel list loads the guide almost instantly.
I dug into the network requests to figure out whats going on and the difference is pretty clear.
What Jellyfin does
Jellyfin makes ONE massive request to load the entire guide:
GET /LiveTv/Programs?MaxStartDate=...&MinEndDate=...&Fields=ChannelInfo&EnableTotalRecordCount=false
This returns all 2,138 programmes for all 867 channels in a single response:
- Response size: 1.27 MB
- Response time: ~9 seconds
There's no pagination, no lazy loading - it just dumps everything at once.
What Emby does
Emby uses a completely different strategy with 2 requests:
-
GET /LiveTv/EPG?Limit=25&Fields=PrimaryImageAspectRatio&AddCurrentProgram=false&EnableUserData=false&EnableImages=falseThis fetches the first 25 channels worth of EPG data using a dedicated combined endpoint. Note the
Limit=25- it only grabs whats visible on screen. -
GET /LiveTv/Programs?channelIds=14705,14707,...&EnableImages=false&EnableUserData=falseA follow-up request for just 13 specific channel IDs that needed additional programme data, with images and user data disabled to keep it small.
The result is the Emby guide renders basically instantly while Jellyfin sits there with a spinner for 9 seconds.
The core issues
- No pagination - Jellyfin fetches programmes for ALL channels regardless of how many are visible. With 800+ channels this is brutal
- No dedicated EPG endpoint - No combined channel+programs endpoint like Emby's
/LiveTv/EPG - Too much data per request - No options to strip images/userdata from the guide response to reduce payload size
- No lazy loading on scroll - Should only fetch more channels as user scrolls down, not everything upfront
What I'd expect
The guide should paginate - load maybe 20-30 channels at a time, fetch more as you scroll. This is how many EPG implementations works, and it's how Emby does it too.
With 20-50 channels this probaly isn't noticable, but with larger IPTV setups (500+ channels is pretty common) the guide becomes basically unusable.
Environment
- Jellyfin 10.11.6
- ~870 channels via M3U tuner
- Tested on Chrome and Safari, same issue
- Server has plenty of resources (12GB RAM limit, not CPU bound)