Best Transcoding/Bitrate Practices - Printable Version +- Jellyfin Forum (https://forum.jellyfin.org) +-- Forum: Support (https://forum.jellyfin.org/f-support) +--- Forum: General Questions (https://forum.jellyfin.org/f-general-questions) +--- Thread: Best Transcoding/Bitrate Practices (/t-best-transcoding-bitrate-practices) |
Best Transcoding/Bitrate Practices - ANJ_ - 2025-02-02 I've had my Jellyfin server up and running now for quite a while but haven't really looked much into best practices for setting bitrate limitations. While I use it in-network and haven't had to worry about this much for my own experience, I do have some out-of-network users and would like to make sure things work well for them. At the moment I have the pleasure of an ISP that only gives me around 15mbps up, which really limits my rate of served data, because of this I have assumed setting some bitrate limitations is key. Without much research I figured the best logical baseline limiting would be to take my 15mbps up and divide that between my maximum expected connections. ie. 15 total up / 3 users = 5mbps bitrate limit (which is my current bitrate limit). While I'm simplifying a bit and am actually allowing for leftover upload data for other needs, this is the basic setup I have. What I have found with this setup are a few things: First being that if I am doing any other kind of uploading, especially through web apps that don't allow for any kind of limiting, an out-of-network Jellyfin user will experience notable buffering. Second, most files being served over Jellyfin are natively encoded at a bitrate higher than 5mbps which inevitably leads to a guarantee to hit the bitrate limit which in turn leads to: third, transcoding will almost always occur to serve the data out of network as the bitrate limit is met. My questions for more the more knowledgeable are this: Does the logic I have drawn for my settings make any sense? In other words, have I gone about my needs correct in dividing my max upload between my expected connections, allotting for some leftover room? Or is there a better way that you could explain? Does setting a bitrate limit that will inevitably be hit by the files native settings make any sense? Or, is it better to raise or eliminate the limit so that this doesn't happen? If the answer to the above is that it should be raised/eliminated, then: Will raising or eliminating the limit cause issues when/if there are simultaneous out-of-network users? Or will I run into more issues when/if other data is being uploaded elsewhere from other sources? Does transcoding to meet these bitrate limits cause added/unnecessary buffering or other problems for end-users? / Is serving the native file better if it means raising the bitrate limit some to avoid transcoding? Also, although less important, I am curious about this: While observing I have noticed in the Jellyfin Dashboard when users are receiving data there is a red bar indicating the amount of file loaded, when the red bar disappears/the file is loaded (i'm assuming), is my server then done serving them up data and they can scrub through the file freely without me uploading anything? I'm just curious because when someone reported an issue I stopped uploading a file elsewhere to alleviate their buffering but wasn't sure if I were to start uploading my file again, once the red bar was gone, would their video start buffering heavily again? admittedly I am not well versed in networking and I have been learning more about self-hosting as a hobby through trial and error mostly. The hardest bit for me is trying to optimize anything that is out-of-network as it basically requires me to be in two places at once (the source and the end point). I have some pretty obvious limitations at the time and am trying to learn more. Appreciate anyone that chimes in here, would love to learn more especially about how transcoding works in these scenarios and what offers the best final output. Also, a small note on hardware in terms of transcoding I am using the QSV encoding on a i7-7700k |