Skip to main content

Hardware Acceleration

It is recommended to update your configuration to enable hardware accelerated decoding in ffmpeg. Depending on your system, these parameters may not be compatible. More information on hardware accelerated decoding for ffmpeg can be found here: https://trac.ffmpeg.org/wiki/HWAccelIntro

Raspberry Pi 3/4 (32-bit OS)#

Ensure you increase the allocated RAM for your GPU to at least 128 (raspi-config > Performance Options > GPU Memory). NOTICE: If you are using the addon, you may need to turn off Protection mode for hardware acceleration.

ffmpeg:
hwaccel_args:
- -c:v
- h264_mmal

Raspberry Pi 3/4 (64-bit OS)#

NOTICE: If you are using the addon, you may need to turn off Protection mode for hardware acceleration.

ffmpeg:
hwaccel_args:
- -c:v
- h264_v4l2m2m

Intel-based CPUs with QuickSync#

Intel CPUs with build in graphics (non-F variants) since 5th generation have at least h264 decoding support. Once you've configured it and restarted frigate, verify that it's working by running intel_gpu_top - if everything is set up correctly, you should see non-zero load on Video and/or VideoEnhance.

<10th Generation via vaapi#

ffmpeg:
hwaccel_args:
- -hwaccel
- vaapi
- -hwaccel_device
- /dev/dri/renderD128
- -hwaccel_output_format
- yuv420p

>=10th Generation via Quicksync#

ffmpeg:
hwaccel_args:
- -hwaccel
- qsv
- -qsv_device
- /dev/dri/renderD128

>=12th Generation via Quicksync#

Note: You should use kernel 5.18 or newer for full support.

ffmpeg:
input_args:
- -c:v
- h264_qsv # Or h265_qsv depending on your camera's format
- -gpu_copy
- "on"
...
hwaccel_args:
- -hwaccel
- qsv
- -qsv_device
- /dev/dri/renderD128
- -hwaccel_output_format
- qsv
output_args:
# Converts from the format used on the GPU to the format expected by frigate.
detect: -vf vpp_qsv=format=yuv420p -f rawvideo -pix_fmt yuv420p

Specifying input_args and output_args overrides frigate's defaults, so you may want to append whatever options your camera requires.

AMD/ATI GPUs (Radeon HD 2000 and newer GPUs) via libva-mesa-driver#

Note: You also need to set LIBVA_DRIVER_NAME=radeonsi as an environment variable on the container.

ffmpeg:
hwaccel_args:
- -hwaccel
- vaapi
- -hwaccel_device
- /dev/dri/renderD128

NVIDIA GPU#

NVIDIA GPU based decoding via NVDEC is supported, but requires special configuration. See the NVIDIA NVDEC documentation for more details.