Jellyfin Forum
Seeking - Printable Version

+- Jellyfin Forum (https://forum.jellyfin.org)
+-- Forum: Support (https://forum.jellyfin.org/f-support)
+--- Forum: Troubleshooting (https://forum.jellyfin.org/f-troubleshooting)
+--- Thread: Seeking (/t-seeking)



Seeking - nothingveryobvious - 2025-02-08

Hello. When I locally direct play a 1080p video, bitrate 5 Mbps, I can play it and seek through it just fine. When I remotely (~ 20 miles away; via reverse proxy, Cloudflare DNS-only, no Cloudflare proxy) direct play the same 1080p video, bitrate 5 Mbps, it plays perfectly, but when I seek, it takes a very long time to finally play. Why is this? Is there a way to improve this?

My server's average speeds are 930 Mbps download and 175 Mbps upload. At the remote location ~ 20 miles away, their speeds are even faster.

It's been like this for a long time now, since earlier versions. I'm on Jellyfin 10.10.5. The client is Jellyfin Android TV 0.18.4.

I'd appreciate any help. Thank you!


RE: Seeking - TheDreadPirate - 2025-02-10

Is it transcoding?


RE: Seeking - nothingveryobvious - 2025-02-12

Hi, @TheDreadPirate. No, it is not transcoding. Dashboard indicates direct play.


RE: Seeking - TheDreadPirate - 2025-02-12

Which reverse proxy and can you share the config for it? Assuming it isn't caddy.


RE: Seeking - nothingveryobvious - 2025-02-13

Hey @TheDreadPirate, I'm using SWAG.

Here's the config:

## Version 2023/05/31
# make sure that your jellyfin container is named jellyfin
# make sure that your dns has a cname set for jellyfin
# if jellyfin is running in bridge mode and the container is named "jellyfin", the below config should work as is
# if not, replace the line "set $upstream_app jellyfin;" with "set $upstream_app <containername>;"
# or "set $upstream_app <HOSTIP>;" for host mode, HOSTIP being the IP address of jellyfin
# in jellyfin settings, under "Advanced/Networking" add subdomain.mydomain.tld as a known proxy

server {
listen 443 ssl http2;
listen [::]:443 ssl http2;

server_name jellyfin.*;

include /config/nginx/ssl.conf;

client_max_body_size 0;

location / {
include /config/nginx/proxy.conf;
include /config/nginx/resolver.conf;
set $upstream_app jellyfin;
set $upstream_port 8096;
set $upstream_proto http;
proxy_pass http://10.0.0.94:8096;

proxy_set_header Range $http_range;
proxy_set_header If-Range $http_if_range;
}

location ~ (/jellyfin)?/socket {
include /config/nginx/proxy.conf;
include /config/nginx/resolver.conf;
set $upstream_app jellyfin;
set $upstream_port 8096;
set $upstream_proto http;
proxy_pass http://10.0.0.94:8096;

}
}



RE: Seeking - TheDreadPirate - 2025-02-13

Does /config/nginx/proxy.conf or resolver.conf include this line?

Code:
proxy_http_version 1.1;



RE: Seeking - nothingveryobvious - 2025-02-14

@TheDreadPirate

Yes, proxy.conf includes that line.


RE: Seeking - bitmap - 2025-02-14

Code:
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;

server_name jellyfin.*;

include /config/nginx/ssl.conf;

client_max_body_size 0;

location / {
include /config/nginx/proxy.conf;
include /config/nginx/resolver.conf;
set $upstream_app jellyfin;
set $upstream_port 8096;
set $upstream_proto http;
proxy_pass http://10.0.0.94:8096;

proxy_set_header Range $http_range;
proxy_set_header If-Range $http_if_range;
}

location ~ (/jellyfin)?/socket {
include /config/nginx/proxy.conf;
include /config/nginx/resolver.conf;
set $upstream_app jellyfin;
set $upstream_port 8096;
set $upstream_proto http;
proxy_pass http://10.0.0.94:8096;

}
}

Are you using SWAG? This looks similar to my config that was originally a template. I'm wondering why you're invoking "set" and then specifying an IP below? The upstream_app variable can be used to set the IP address, but I don't think that's the issue. Sharing portions of my config because they're different than yours. My root location block includes:

Code:
location / {
        include /config/nginx/proxy.conf;
        include /config/nginx/resolver.conf;
        set $upstream_app $jellyfin;
        set $upstream_port 8096;
        set $upstream_proto http;
        proxy_pass $upstream_proto://$upstream_app:$upstream_port;

        proxy_set_header Range $http_range;
        proxy_set_header If-Range $http_if_range;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-Protocol $scheme;
        proxy_set_header X-Forwarded-Host $http_host;

        # Disable buffering when the nginx proxy gets very resource heavy upon streaming
        proxy_buffering off;
    }

And my socket location block includes:

Code:
location ~ (/jellyfin)?/socket {
        include /config/nginx/proxy.conf;
        include /config/nginx/resolver.conf;
        set $upstream_app $jellyfin;
        set $upstream_port 8096;
        set $upstream_proto http;
        proxy_pass $upstream_proto://$upstream_app:$upstream_port;

        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-Protocol $scheme;
        proxy_set_header X-Forwarded-Host $http_host;
    }

I don't see any headers for your socket location and the only other big one I see is proxy_buffering. You also should be aware that invoking http2 in the way you have is deprecated and should be revised to this:

Code:
server {
    listen 443 ssl;
    http2 on;

You may also try setting the client_max_body_size to something like 10M or 20M but I don't think that will make much (if any) difference. TDP can advise you better than I can...they helped me iron out the kinks in my own config...