Server Configuration

Configuring useful features on your server.

Transcoding

When streaming content, sometimes transcoding will be required to reduce buffering and increase compatiblity. For example, if the upload speed of your internet low, the media must be transcoded to prevent buffering. Additionally, some devices don’t support certain codecs (eg. H.265, AV1, etc) and require media to be transcoded for compatiblity.

Within Jellyfin, there are many settings for transcoding, but here, I will focus on hardware acceleration, format options, and how far ahead of a given timestamp the server will transcode.

Hardware Acceleration

To set up hardware acceleration, you will need to select the appropriate hardware acceleration method for your server’s hardware. The best method will match the brand of your graphics; For example, use Nvidia NVENC if you have an Nvidia graphics card, or use Intel QuickSync if you have Intel graphics. However, if you have AMD graphics and are on Linux, you will need to use Video Acceleration API (VAAPI). You’ll also need to select the appropriate device for Intel Quicksync and VAAPI. On Linux, this is the render node (eg. /dev/dri/renderD128), while on Windows, this is the device index starting from 0.

Once you’ve set up the hardware acceleration device, you’ll need to select which codecs you want to use hardware acceleration for. I recommend enabling hardware acceleration for all codecs that your hardware supports, as this will reduce the load on your CPU and allow for smoother playback. To determine which codecs your hardware supports, visit the manufacturer’s websites below.

  • Nvidia: https://developer.nvidia.com/video-encode-decode-gpu-support-matrix
  • Intel: https://www.intel.com/content/www/us/en/ark.html
  • AMD: https://www.amd.com/en/products/graphics/radeon-for-creators/video-editing.html#tabs-b6a36ad588-item-0cb6dbfc4b-tab

Buffer

When transcoding, the server will buffer a certain amount of content ahead of the current playback position. This allows for smoother playback, especially on slower connections. The default setting is 180 seconds, which is generally sufficient for most users. However, if you experience buffering, you may want to increase this value. Conversely, if you have a fast connection and want to reduce the amount of data being buffered, you can decrease this value.

The server will also hold onto a period of media after it’s been played on the client, allowing for quick rewinding without needing to re-transcode. If you have a fast connection or will infrequently rewind content, you can decrease this value.

Trickplay

Trickpay is a feature that allows for smooth seeking and scrubbing through media. When enabled, the server will generate low-resolution preview images of the media at regular intervals, allowing for quick seeking without needing to transcode the media. This can be especially useful for long media files, such as movies or TV shows.

For trickplay, I recommend enabling hardware decoding and hardware accelerated MJPEG encoding. For the remainder of the settings, I find that the default settings work well, although you can adjust them to your liking. The more frequently the server generates preview images, the smoother seeking will be, but this will also increase the load on your server. One thing to note is that the first run of trickplay will take a long time to generate the preview images, but subsequent runs will be much faster as the server will only need to generate preview images for new media or media that has been played since the last run.

Scheduled Tasks

Scheduled tasks allow your server to run certain operations automatically, keeping the server optimized and metadata up to date. Tasks can be set to run daily, weekly, after a certain time interval, and/or every time the server starts up. Additionally, a time limit can be set on the tasks to prevent them from running too long.

On my server, I have every scheduled task set to run daily at 1:00am, allowing them to run and finish while I’m very unlikely to be using the server. Nearly all of the tasks run in less than a minute, so running them weekly would likely be just fine, although the longer you go without running the tasks, the longer they may take.

My recommendation is to start by setting all the tasks to run weekly in the early-morning and adjust from there.

Plugins

Jellyfin comes with the ability to install plugins, with nearly 40 able to be easily installed within the server settings. These allow you to pull metadata from more sources, download subtitles from the internet, and have more administrative tools.

To install a plugin, simply click the plugin you want to install, click install, and restart your server. To uninstall, click on the installed plugin, click uninstall, and restart your server.