diff --git a/docs/general/administration/hardware-acceleration/amd.md b/docs/general/administration/hardware-acceleration/amd.md index bdb715408..6109ebef7 100644 --- a/docs/general/administration/hardware-acceleration/amd.md +++ b/docs/general/administration/hardware-acceleration/amd.md @@ -5,7 +5,7 @@ title: AMD GPU # HWA Tutorial On AMD GPU -This tutorial guides you on setting up full video hardware acceleration on AMD integrated GPU and discrete GPU via AMF and VA-API. +This tutorial guides you on setting up full video hardware acceleration on AMD integrated GPU and discrete GPU via AMF or VA-API. If you are on macOS, please use [VideoToolbox](/docs/general/administration/hardware-acceleration/apple) instead. ## Acceleration Methods @@ -15,7 +15,7 @@ On Windows **AMF** is the only available method. On Linux there are two methods: -- **VA-API** - Prefered on all GPUs, full acceleration on Vega+ GPUs, open source. +- **VA-API** - Preferred on all GPUs, full acceleration on Polaris(RX400/500)+ GPUs, open source. - **AMF** - Not recommended, limited support, hardware encoder only, closed source. @@ -81,13 +81,7 @@ The HEVC support on AMD is complicated: - **Decoding HEVC 10-bit** - Radeon RX 400 series (Polaris) and newer -- **Encoding HEVC 10-bit** - Ryzen 4000 series APU (Renoir), Radeon RX 5700 series (Navi 1x) and newer - -:::note - -Note that even though the RX 400 series have HEVC 10-bit decoding support, it doesn't support the [DRM-Vulkan format modifier](https://gitlab.freedesktop.org/mesa/mesa/-/issues/5882), which means full hardware acceleration is not possible for these cards on Linux for the time being. A Vega or newer GPU is recommended on Linux. - -::: +- **Encoding HEVC 10-bit** - Ryzen 4000 series APU (Renoir), Radeon RX 5000 series (Navi 1x) and newer ### Transcode AV1 @@ -187,7 +181,7 @@ Please refer to [this section](/docs/general/administration/hardware-acceleratio #### Debian And Ubuntu Linux -The `jellyfin-ffmpeg6` deb package required by Jellyfin 10.9 comes with all necessary user mode Mesa drivers. +The `jellyfin-ffmpeg*` deb package required by Jellyfin comes with all necessary user mode Mesa drivers. Besides that you only need to configure the permission of the `jellyfin` user. @@ -199,10 +193,10 @@ Root permission is required. 1. Assuming you have added the jellyfin repository to your apt source list and installed the `jellyfin-server` and `jellyfin-web`. -2. Install the `jellyfin-ffmpeg6` package. Remove the deprecated `jellyfin` meta package if it breaks the dependencies: +2. Install the `jellyfin-ffmpeg7` package. Remove the deprecated `jellyfin` meta package if it breaks the dependencies: ```shell - sudo apt update && sudo apt install -y jellyfin-ffmpeg6 + sudo apt update && sudo apt install -y jellyfin-ffmpeg7 ``` 3. Make sure at least one `renderD*` device exists in `/dev/dri`. Otherwise upgrade your kernel or enable the iGPU in the BIOS. @@ -300,7 +294,7 @@ Root permission is required. Linux Mint uses Ubuntu as its package base. -You can follow the configuration steps of [Debian And Ubuntu Linux](/docs/general/administration/hardware-acceleration/amd#debian-and-ubuntu-linux) but install all Jellyfin packages `jellyfin-server`, `jellyfin-web` and `jellyfin-ffmpeg6` manually from the [Jellyfin Server Releases Page](https://repo.jellyfin.org/releases/server/). Also make sure you choose the correct codename by following the [official version maps](https://linuxmint.com/download_all.php). +You can follow the configuration steps of [Debian And Ubuntu Linux](/docs/general/administration/hardware-acceleration/amd#debian-and-ubuntu-linux) but install all Jellyfin packages `jellyfin-server`, `jellyfin-web` and `jellyfin-ffmpeg7` manually from the [Jellyfin Server Releases Page](https://repo.jellyfin.org/releases/server/). Also make sure you choose the correct codename by following the [official version maps](https://linuxmint.com/download_all.php). #### Arch Linux diff --git a/docs/general/administration/hardware-acceleration/index.md b/docs/general/administration/hardware-acceleration/index.md index 1047b932b..abf6c422e 100644 --- a/docs/general/administration/hardware-acceleration/index.md +++ b/docs/general/administration/hardware-acceleration/index.md @@ -63,17 +63,17 @@ The transcoding pipeline usually has multiple stages, which can be simplified to Some of these stages cannot be GPU accelerated due to software, hardware or driver limitations. -Partial acceleration may result in slightly higher CPU usage and lower transcoding speed. +Partial acceleration may result in higher CPU usage and lower transcoding speed. ::: -Jellyfin 10.8 supports full acceleration on mainstream Intel, NVIDIA and AMD (Windows only) GPUs. - -Jellyfin 10.9 enables full acceleration for: +Jellyfin supports full acceleration for: +- Mainstream Intel and Nvidia GPUs on Windows and Linux - AMD Polaris and newer GPUs on Linux via VA-API and Vulkan interop +- Older AMD GPUs on Windows - Rockchip VPU of RK3588/3588S -- Intel and Apple Silicon Macs on macOS 12 and above +- Intel and Apple Silicon on macOS 12 and above Using [jellyfin-ffmpeg](https://github.com/jellyfin/jellyfin-ffmpeg/releases) with Jellyfin is highly recommended, which has a `-Jellyfin` suffix in the version string. @@ -180,21 +180,15 @@ Dolby Vision (P5 & P8) to SDR tone-mapping is supported in Jellyfin 10.8 and req ::: -| OS/Platform | NVIDIA NVENC | AMD AMF | Intel QSV | Intel VA-API | AMD VA-API |Apple VideoToolbox| Rockchip RKMPP | Software | -| -------------- | ------------ | ------- | --------- | ------------ | ---------- | ---------------- | -------------- | -------- | -| Windows | ✔️ | ✔️ | ✔️ | N/A | N/A | N/A | N/A | WIP | -| Windows Docker | ✔️ | N/A | N/A | N/A | N/A | N/A | N/A | WIP | -| Linux | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | N/A | ✔️ | WIP | -| Linux Docker | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | N/A | ✔️ | WIP | -| macOS | N/A | N/A | N/A | N/A | N/A | ✔️ | N/A | WIP | - ## Tips For Hardware Acceleration - Avoid H.264 / AVC 10-bit videos :::tip - The hardware decoding of H.264 / AVC 10-bit (High 10 profile) video is not supported by any Intel, NVIDIA and AMD GPU. Jellyfin will always fallback to software decoding for it. Consider upgrading such video to H.265 / HEVC 10-bit (Main 10 profile). + The hardware decoding of H.264 / AVC 10-bit (High 10 profile) video is not supported by any Intel, NVIDIA and AMD GPU. + It is only supported by Apple Silicon and Rockchip. Jellyfin will fall back to software decoding for it when there is + no hardware decoder available. Consider upgrading such video to H.265 / HEVC 10-bit (Main 10 profile). ::: diff --git a/docs/general/administration/hardware-acceleration/intel.md b/docs/general/administration/hardware-acceleration/intel.md index d327303fe..78b6211ea 100644 --- a/docs/general/administration/hardware-acceleration/intel.md +++ b/docs/general/administration/hardware-acceleration/intel.md @@ -5,7 +5,7 @@ title: Intel GPU # HWA Tutorial On Intel GPU -This tutorial guides you on setting up full video hardware acceleration on Intel integrated GPUs and ARC discrete GPUs via QSV and VA-API. +This tutorial guides you on setting up full video hardware acceleration on Intel integrated GPUs and ARC discrete GPUs via QSV and VA-API. If you are on macOS, please use [VideoToolbox](/docs/general/administration/hardware-acceleration/apple) instead. ## Acceleration Methods @@ -15,7 +15,7 @@ On Windows **QSV** is the only available method. On Linux there are two methods: -- **QSV** - **Prefered on mainstream GPUs**, for better performance +- **QSV** - **Preferred on mainstream GPUs**, for better performance - **VA-API** - Required by pre-Broadwell legacy GPUs, for compatibility @@ -23,29 +23,7 @@ On Linux there are two methods: Linux VA-API supports nearly all Intel GPUs. -Linux QSV [supported platforms](https://github.com/intel/media-driver#supported-platforms) are limited to: - -- **BDW** (Broadwell) - -- **SKL** (Skylake) - -- **BXTx** (BXT: Broxton, APL: Apollo Lake, GLK: Gemini Lake) - -- **KBLx** (KBL: Kaby Lake, CFL: Coffe Lake, WHL: Whiskey Lake, CML: Comet Lake, AML: Amber Lake) - -- **ICL** (Ice Lake) - -- **JSL** (Jasper Lake) / **EHL** (Elkhart Lake) - -- **TGLx** (TGL: Tiger Lake, RKL: Rocket Lake, ADL-S/P/N: Alder Lake, RPL-S/P: Raptor Lake) - -- **DG1**/**SG1** - -- Alchemist (**DG2**)/ATSM - -- Meteor Lake (**MTL**) - -- Future platforms... +Linux QSV [supported platforms](https://github.com/intel/media-driver#supported-platforms) are limited to Broadwell (5th gen Core) and newer. ::: @@ -117,13 +95,13 @@ HEVC / H.265 remains the first choice for storing 4K 10-bit, HDR and Dolby Visio Intel GPUs are no exception: -- **Decoding & Encoding HEVC 8-bit** - Gen 9 Sky Lake (6th Gen Core) and newer +- **Decoding & Encoding HEVC 8-bit** - Gen 9 Skylake (6th Gen Core) and newer - **Decoding & Encoding HEVC 10-bit** - Gen 9.5 Kaby Lake (7th Gen Core), Apollo Lake, Gemini Lake (Pentium and Celeron) and newer :::note -Note that the 6th Gen Core lacks 10-bit support, it's best to choose 7th Gen and newer processors, which usually have HD / UHD 6xx series iGPU. +Note that the 6th Gen Core with HD 5xx iGPUs lacks 10-bit support, it's best to choose 7th Gen and newer processors, which usually have HD / UHD 6xx series iGPUs. ::: @@ -163,7 +141,7 @@ They can be divided into 4 tiers by their performance: :::tip - These iGPUs usually come from mini PC boxes or Synology NASes and they can transcode HEVC 10-bit and apply tone-mapping filters. You can't expect much due to performance and power constraints, but it's still adequate for personal use. + These iGPUs usually come from mini PC boxes or NASes and they can transcode HEVC 10-bit and apply tone-mapping filters. You can't expect much due to performance and power constraints, but it's still adequate for personal use. ::: @@ -291,7 +269,7 @@ Please refer to [this section](/docs/general/administration/hardware-acceleratio #### Debian And Ubuntu Linux -The `jellyfin-ffmpeg6` deb package comes with all necessary user mode Intel media drivers except OpenCL (see below). +The `jellyfin-ffmpeg*` deb package comes with all necessary user mode Intel media drivers except OpenCL (see below). :::note @@ -305,10 +283,10 @@ Root permission is required. If you are running Debian, you will need to add "non-free" to your apt config. ::: -2. Install the `jellyfin-ffmpeg6` package. Remove the deprecated `jellyfin` meta package if it breaks the dependencies: +2. Install the `jellyfin-ffmpeg7` package. Remove the deprecated `jellyfin` meta package if it breaks the dependencies: ```shell - sudo apt update && sudo apt install -y jellyfin-ffmpeg6 + sudo apt update && sudo apt install -y jellyfin-ffmpeg7 ``` 3. Make sure at least one `renderD*` device exists in `/dev/dri`. Otherwise upgrade your kernel or enable the iGPU in the BIOS. @@ -404,7 +382,7 @@ Root permission is required. Linux Mint uses Ubuntu as its package base. -You can follow the configuration steps of [Debian And Ubuntu Linux](/docs/general/administration/hardware-acceleration/intel#debian-and-ubuntu-linux) but install all Jellyfin packages `jellyfin-server`, `jellyfin-web` and `jellyfin-ffmpeg6` manually from the [Jellyfin Server Releases Page](https://repo.jellyfin.org/releases/server/). Also make sure you choose the correct codename by following the [official version maps](https://linuxmint.com/download_all.php). +You can follow the configuration steps of [Debian And Ubuntu Linux](/docs/general/administration/hardware-acceleration/intel#debian-and-ubuntu-linux) but install all Jellyfin packages `jellyfin-server`, `jellyfin-web` and `jellyfin-ffmpeg7` manually from the [Jellyfin Server Releases Page](https://repo.jellyfin.org/releases/server/). Also make sure you choose the correct codename by following the [official version maps](https://linuxmint.com/download_all.php). #### Arch Linux diff --git a/docs/general/administration/hardware-acceleration/nvidia.md b/docs/general/administration/hardware-acceleration/nvidia.md index 1664a243e..64cc10c78 100644 --- a/docs/general/administration/hardware-acceleration/nvidia.md +++ b/docs/general/administration/hardware-acceleration/nvidia.md @@ -113,7 +113,7 @@ NVENC/NVDEC performance tables: ## Windows Setups -Windows 10 64-bit and newer is recommeded. **In Jellyfin 10.9 the minimum required NVIDIA driver version is 522.25**. +Windows 10 64-bit and newer is recommeded. **In Jellyfin 10.10 the minimum required NVIDIA driver version is 522.25**. ### Configure On Windows Host @@ -151,13 +151,13 @@ Refer to [Configure On Linux Host](/docs/general/administration/hardware-acceler ## Linux Setups -A 64-bit Linux distribution is required. **In Jellyfin 10.9 the minimum required NVIDIA driver version is 520.56.06**. +A 64-bit Linux distribution is required. **In Jellyfin 10.10 the minimum required NVIDIA driver version is 520.56.06**. ### Configure On Linux Host #### Debian And Ubuntu Linux -The `jellyfin-ffmpeg6` deb package required by Jellyfin 10.9 doesn't include any NVIDIA proprietary driver. +The `jellyfin-ffmpeg*` deb package required by Jellyfin doesn't include any NVIDIA proprietary driver. You have to install the NVIDIA driver from the distro and configure the permission of the `jellyfin` user. @@ -169,10 +169,10 @@ Root permission is required. 1. Assuming you have added the jellyfin repository to your apt source list and installed the `jellyfin-server` and `jellyfin-web`. -2. Install the `jellyfin-ffmpeg6` package. Remove the deprecated `jellyfin` meta package if it breaks the dependencies: +2. Install the `jellyfin-ffmpeg7` package. Remove the deprecated `jellyfin` meta package if it breaks the dependencies: ```shell - sudo apt update && sudo apt install -y jellyfin-ffmpeg6 + sudo apt update && sudo apt install -y jellyfin-ffmpeg7 ``` 3. Install the NVIDIA proprietary driver by following these links. Then install two extra packages for NVENC and NVDEC support: @@ -220,7 +220,7 @@ Root permission is required. Linux Mint uses Ubuntu as its package base. -You can follow the configuration steps of [Debian and Ubuntu Linux](/docs/general/administration/hardware-acceleration/nvidia#debian-and-ubuntu-linux) but install all Jellyfin packages `jellyfin-server`, `jellyfin-web` and `jellyfin-ffmpeg6` manually from the [Jellyfin Server Releases Page](https://repo.jellyfin.org/releases/server/). Also make sure you choose the correct codename by following the [official version maps](https://linuxmint.com/download_all.php). +You can follow the configuration steps of [Debian and Ubuntu Linux](/docs/general/administration/hardware-acceleration/nvidia#debian-and-ubuntu-linux) but install all Jellyfin packages `jellyfin-server`, `jellyfin-web` and `jellyfin-ffmpeg7` manually from the [Jellyfin Server Releases Page](https://repo.jellyfin.org/releases/server/). Also make sure you choose the correct codename by following the [official version maps](https://linuxmint.com/download_all.php). #### Arch Linux diff --git a/docs/general/administration/hardware-acceleration/rockchip.md b/docs/general/administration/hardware-acceleration/rockchip.md index 7730dd976..35154103d 100644 --- a/docs/general/administration/hardware-acceleration/rockchip.md +++ b/docs/general/administration/hardware-acceleration/rockchip.md @@ -99,7 +99,7 @@ A 64-bit Linux distribution is recommended. **The Rockchip BSP kernel (6.1 or 5. #### Debian And Ubuntu Linux -The `jellyfin-ffmpeg6` deb package required by Jellyfin 10.9 comes with all necessary user mode Rockchip MPP & RGA drivers. +The `jellyfin-ffmpeg*` deb package required by Jellyfin comes with all necessary user mode Rockchip MPP & RGA drivers. Besides that you only need to install the OpenCL runtime (libmali) and configure the the device permissions. @@ -109,7 +109,7 @@ Root permission is required. ::: -1. Assuming you have added the jellyfin repository to your apt source list and installed the `jellyfin-server`, `jellyfin-web` and `jellyfin-ffmpeg6`. +1. Assuming you have added the jellyfin repository to your apt source list and installed the `jellyfin-server`, `jellyfin-web` and `jellyfin-ffmpeg7`. 2. Make sure `dma_heap`, `dri`, `mpp_service` and `rga` exist in `/dev`. Otherwise upgrade your BSP kernel to 5.10 LTS and newer. diff --git a/docs/general/administration/hardware-selection.md b/docs/general/administration/hardware-selection.md index 3da2eeeca..bf4814259 100644 --- a/docs/general/administration/hardware-selection.md +++ b/docs/general/administration/hardware-selection.md @@ -20,7 +20,7 @@ Some component recommendations do not change regardless of the hardware configur - Internet Connection: At least 20mbps upload bandwidth for remote access.2 1Your largest media file times the max number of concurrent streams all your users will consume can be used as a rule of thumb for the transcoding file size.
-2If you have less than 100mbps of total upload bandwidth, a bandwidth limit of 70% of your upload speed for Jellyfin is recommended. This option can be found in the dashboard. +2If you have less than 100mbps of total upload bandwidth, a bandwidth limit of 70% of your upload speed for Jellyfin is recommended to avoid affecting normal internet usage. This option can be found in the dashboard. ### Hardware Encoder Quality @@ -56,11 +56,17 @@ If you are planning to use a dedicated graphics card (including upgrading an old Intel Drivers are much easier to install on Linux, with many distributions including them by default. If you do not need CUDA for other applications, it is highly recommended that you stick with Intel Graphics on Linux. +### Servers without GPUs + +Not having a GPU is **NOT** recommended for Jellyfin, as video transcoding on the CPU is very performance demanding. HDR +to SDR tone-mapping can make the situation even worse. Depending on your configuration, you may end up in situations +where a Ryzen 9 5950X cannot handle even a single video stream. Please read [the section below for more details](/docs/general/administration/hardware-selection#software-hdr-to-sdr-tone-mapping) + ### Low Power Servers For users with expensive power or running servers on battery power: -- Intel 12th gen N series platforms +- Intel 12th gen or above N series platforms - Apple M Series mac mini - Rockchip RK3588 / RK3588S SBC (**Advanced Users Only**) @@ -70,7 +76,7 @@ These hardware platforms might lead to a poor Jellyfin experience. Please be car - Intel "Atom" CPUs: Intel J/M/N/Y series low power CPUs up to 11th gen use a different architecture than higher end parts, leading to subpar performance despite what their names might suggest. Please be careful about these parts when shopping for a system to run Jellyfin. - Prebuilt NAS devices: The software environment on most Prebuilt NAS devices often causes 3rd party software to be hard to install and not work properly. They also often have low end processors that are too slow for a good Jellyfin experience (Intel Atom, Realtek ARM CPUs etc.). -- Most SBCs (Single Board Computers): Most SBCs (Including Raspberry Pis and **especially the Pi 5**) are too slow to provide a good Jellyfin experience. If You really want to run Jellyfin on a SBC, please look at models based on the following platforms: Rockchip RK3588 / RK3588S, Intel Core, Intel 12th gen N series +- Most Single Board Computers (SBC): Most SBCs (Including Raspberry Pis and **especially the Pi 5**) are too slow to provide a good Jellyfin experience since they often lack proper support for hardware acceleration. If You really want to run Jellyfin on an SBC, please look at models based on the following platforms: Rockchip RK3588 / RK3588S, Intel Core, Intel 12th gen N series - AMD Graphics: AMD Graphics have poor encoder quality and poor driver support. **This applies even on Linux**. - Low end GPUs: Certain low end GPUs (eg. GT1030, RX6400) don't have hardware encoding available. These models can't be used for Jellyfin hardware acceleration. @@ -103,6 +109,14 @@ In BIOS settings of motherboards, it may also be called `Smart Access Memory` or When using Intel ARC Graphics, Resizable BAR is recommended. Disabling it will result in a 10% reduction in transcoding performance. However, given how fast the media engine on Intel ARC is, this will not be a problem for the vast majority of users. +#### Software HDR to SDR Tone-mapping + +If there is no GPU available, the CPU can also be used to tone-map HDR content to SDR. **This can be very demanding on +the CPU, therefore a GPU is ALWAYS recommended.** When using software tone-mapping, a software encoder will always be +used. Tone-mapping 4K 60fps Dolby Vision content to 4K 60fps H264 SDR requires a Ryzen 9 5950X for faster than real time +transcoding. If you would like to output in H265 or AV1, you may end up in situations where no current desktop CPUs have +enough performance. + ### System Memory (RAM) As a general rule of thumb, at least 8GB is recommended for most configurations. For a Linux server running without a GUI, 4GB should be enough. @@ -144,7 +158,7 @@ If you are planning to use Linux with Intel 12/13th Gen integrated graphics or A :::caution -Intel 10th gen and older integrated graphics are losing support for QSV on Linux due to the SDK for these platforms being deprecated by Intel. Please choose a newer CPU if you plan on using Intel integrated graphics. +Intel 10th gen and older integrated graphics are losing support for QSV on Linux due to the SDK for these platforms being deprecated by Intel. If you own 7-10th gen CPUs with integrated graphics, please continue to use them for Jellyfin. If you are making a purchase decision, please choose a newer CPU if you plan on using Intel integrated graphics. ::: diff --git a/docs/general/server/transcoding.md b/docs/general/server/transcoding.md index e9862c6b3..31bff9774 100644 --- a/docs/general/server/transcoding.md +++ b/docs/general/server/transcoding.md @@ -9,10 +9,9 @@ These settings will relate to backend options that modify how the server transco ## Hardware Acceleration -If your hardware supports this you can enable [hardware acceleration](/docs/general/administration/hardware-acceleration) for much faster transcoding. Some of the supported methods are listed below. - -- VAAPI -- NVENC +If your hardware supports this you can enable [hardware acceleration](/docs/general/administration/hardware-acceleration) for much faster transcoding. Jellyfin +supports hardware accelerated transcoding on all modern GPUs from Intel, AMD, Nvidia, Apple and Rockchip +if the required hardware is available. ## Thread Count @@ -26,3 +25,10 @@ There are four types of playback; three of which involve transcoding. The type b - Remux: Changes the container but leaves both audio and video streams untouched. - Direct Stream: Transcodes audio but leaves original video untouched. - Transcode: Transcodes the video stream. + +## HDR to SDR Tone-mapping + +When the source video is in HDR, it will need to be tone-mapped to SDR when transcoding, as Jellyfin currently +doesn't support HDR to HDR tone-mapping, or passing through HDR metadata. While this can be done in software, it is +very slow, and you may encounter situations where no modern consumer CPUs can transcode in real time. Therefore, a GPU +is always recommended, where even a basic Intel iGPU can handle as much load as a Ryzen 5800X for this usecase.