From edbdbb7f0724634c377b029cc7d41a48d3c6268a Mon Sep 17 00:00:00 2001 From: sev Date: Sun, 22 Jan 2023 10:27:13 -0600 Subject: [PATCH] Update NVIDIA hwdecode docs (#5182) Closes #4716 --- .../configuration/hardware_acceleration.md | 28 ++++++++++++------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/docs/docs/configuration/hardware_acceleration.md b/docs/docs/configuration/hardware_acceleration.md index d98b8d22a..3d1dcff30 100644 --- a/docs/docs/configuration/hardware_acceleration.md +++ b/docs/docs/configuration/hardware_acceleration.md @@ -39,15 +39,19 @@ ffmpeg: hwaccel_args: preset-vaapi ``` -### NVIDIA GPU +### NVIDIA GPUs -[Supported Nvidia GPUs for Decoding](https://developer.nvidia.com/video-encode-and-decode-gpu-support-matrix-new) +While older GPUs may work, it is recommended to use modern, supported GPUs. NVIDIA provides a [matrix of supported GPUs and features](https://developer.nvidia.com/video-encode-and-decode-gpu-support-matrix-new). If your card is on the list and supports CUVID/NVDEC, it will most likely work with Frigate for decoding. However, you must also use [a driver version that will work with FFmpeg](https://github.com/FFmpeg/nv-codec-headers/blob/master/README). Older driver versions may be missing symbols and fail to work, and older cards are not supported by newer driver versions. The only way around this is to [provide your own FFmpeg](/configuration/advanced#custom-ffmpeg-build) that will work with your driver version, but this is unsupported and may not work well if at all. -These instructions are based on the [jellyfin documentation](https://jellyfin.org/docs/general/administration/hardware-acceleration.html#nvidia-hardware-acceleration-on-docker-linux) +A more complete list of cards and ther compatible drivers is available in the [driver release readme](https://download.nvidia.com/XFree86/Linux-x86_64/525.85.05/README/supportedchips.html). -Additional configuration is needed for the docker container to be able to access the Nvidia GPU and this depends on how docker is being run: +If your distribution does not offer NVIDIA driver packages, you can [download them here](https://www.nvidia.com/en-us/drivers/unix/). -#### Docker Compose +#### Docker Configuration + +Additional configuration is needed for the Docker container to be able to access the NVIDIA GPU. The supported method for this is to install the [NVIDIA Container Toolkit](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html#docker) and specify the GPU to Docker. How you do this depends on how Docker is being run: + +##### Docker Compose ```yaml services: @@ -64,7 +68,7 @@ services: capabilities: [gpu] ``` -#### Docker Run CLI +##### Docker Run CLI ```bash docker run -d \ @@ -78,9 +82,9 @@ docker run -d \ The decoder you need to pass in the `hwaccel_args` will depend on the input video. -A list of supported codecs (you can use `ffmpeg -decoders | grep cuvid` in the container to get a list) +A list of supported codecs (you can use `ffmpeg -decoders | grep cuvid` in the container to get the ones your card supports) -```shell +``` V..... h263_cuvid Nvidia CUVID H263 decoder (codec h263) V..... h264_cuvid Nvidia CUVID H264 decoder (codec h264) V..... hevc_cuvid Nvidia CUVID HEVC decoder (codec hevc) @@ -101,12 +105,12 @@ ffmpeg: ``` If everything is working correctly, you should see a significant improvement in performance. -Verify that hardware decoding is working by running `nvidia-smi`, which should show the ffmpeg +Verify that hardware decoding is working by running `nvidia-smi`, which should show `ffmpeg` processes: :::note -nvidia-smi may not show ffmpeg processes when run inside the container [due to docker limitations](https://github.com/NVIDIA/nvidia-docker/issues/179#issuecomment-645579458) +`nvidia-smi` may not show `ffmpeg` processes when run inside the container [due to docker limitations](https://github.com/NVIDIA/nvidia-docker/issues/179#issuecomment-645579458). ::: @@ -137,3 +141,7 @@ nvidia-smi may not show ffmpeg processes when run inside the container [due to d | 0 N/A N/A 12827 C ffmpeg 417MiB | +-----------------------------------------------------------------------------+ ``` + +If you do not see these processes, check the `docker logs` for the container and look for decoding errors. + +These instructions were originally based on the [Jellyfin documentation](https://jellyfin.org/docs/general/administration/hardware-acceleration.html#nvidia-hardware-acceleration-on-docker-linux).