I currently have a jellyfin setup running on my pc which I access when away from home by tailscaling into my home network. This works great for my partner and I while we are away from home.

I have given my siblings access to my jellyfin setup as well, and I’ve added them to the tailscale network too. They live in a different country though and have had some latency issues (media buffering constantly) making it kinda suck to use.

I would love to be able to improve this performance but I dont really know where to start. Would this be a bandwidth issue somewhere between my pc, tailscale, my router, their router, and their device? Would this be caused by some setting in my jellyfin setup or in the jellyfin client on their device? I would really appreciate any advice on where I should start to troubleshoot to improve this performance.

  • Brkdncr@lemmy.world
    link
    fedilink
    English
    arrow-up
    11
    ·
    6 months ago

    When they are streaming is it transcoding?

    If not, it should be reducing the stream quality to adjust to the available bandwidth.

    If it is, it could be limited to your pc’s available resources. You may want to turn on hardware transcoding.

    Jellyfin has logs that will tell you if its transcoding and how well it’s working.

    Tailscale does add additional hops to their route and has bandwidth limitations but it should be fine for streaming.

    • SkinList@lemmy.worldOP
      link
      fedilink
      English
      arrow-up
      4
      ·
      6 months ago

      I believe that jellyfin has been transcoding using jellyfin-ffmpeg. I do have logs labelled “FFmpeg.Transcode-…” which seem to look fine. I have just turned on hardware acceleration though. Is that what you meant by “hardware transcoding”?

      Ill check to see if the buffering is improved and will let you know how it goes! Thanks for the advice!

      • entropicdrift@lemmy.sdf.org
        link
        fedilink
        English
        arrow-up
        6
        ·
        6 months ago

        Yes, hardware transcoding = using hardware acceleration for decoding/re-encoding the video files. CPUs do it pretty slowly (or they use a ton of electricity if they’re fast enough to do it quickly) but the special decoder/encoder chips on GPUs (including integrated graphics GPUs) can handle that sort of task no sweat in most cases as long as you’ve got it preperly configured.

  • Funky_Beak@lemmy.sdf.org
    link
    fedilink
    English
    arrow-up
    9
    ·
    6 months ago

    Tailscale can use relays if it cant find a way to make a p2p connection. Check the documentation. There is a command you can run to see whats using the relay.

    • NightmareQueenJune@lemmy.world
      link
      fedilink
      English
      arrow-up
      4
      ·
      6 months ago

      The siblings could run
      tailscale ping nodeIP/nodeName
      This not only shows if they are connected via a DERP (relay) but also retries to connect them directly a few times.
      If that doesn’t work out it can sadly be quite hard figuring out why a DERP is used instead of a direct connection.

  • non_burglar@lemmy.world
    link
    fedilink
    English
    arrow-up
    3
    ·
    6 months ago
    1. You might want to set an appropriate bitrate and video quality for transcoding for these users that works acceptably for their latency and bandwidth.
    2. The reason netflix, prime, Disney+, etc work as well as they do is because they have CDN peering, so your version of Game of Thrones comes from somewhere much closer to you in a network sense. You can change your tailscale relay, or you can lock down jellyfin to their ip and specific port and skip the tailscale (I don’t recommend it unless you know what you’re doing) and let routing tables help with latency.
  • roofuskit@lemmy.world
    link
    fedilink
    English
    arrow-up
    1
    ·
    6 months ago

    Jellyfin has setting for transcoding video when you are streaming to an external client. The problem is when you’re using tail scale Jellyfin is seeing that client as internal. Because of this you must set caps on the bitrate within the client that is accessing via tailscale.

    This of course is assuming your server is capable of the needed transcoding demands.