Filter presets based on hardware

This commit is contained in:
Nicolas Mowen 2026-03-23 08:25:36 -06:00
parent 38e1eee5b2
commit c1e51fb76c
2 changed files with 26 additions and 18 deletions

View File

@ -5,6 +5,7 @@ import copy
import json import json
import logging import logging
import os import os
import platform
import traceback import traceback
import urllib import urllib
from datetime import datetime, timedelta from datetime import datetime, timedelta
@ -246,19 +247,26 @@ def get_active_profile(request: Request):
@router.get("/ffmpeg/presets", dependencies=[Depends(allow_any_authenticated())]) @router.get("/ffmpeg/presets", dependencies=[Depends(allow_any_authenticated())])
def ffmpeg_presets(): def ffmpeg_presets():
"""Return available ffmpeg preset keys for config UI usage.""" """Return available ffmpeg preset keys for config UI usage."""
machine = platform.machine().lower()
is_arm64 = machine in ("aarch64", "arm64", "armv8", "armv7l")
if is_arm64:
hwaccel_presets = [
"preset-rpi-64-h264",
"preset-rpi-64-h265",
"preset-jetson-h264",
"preset-jetson-h265",
"preset-rkmpp",
"preset-vaapi",
]
else:
hwaccel_presets = [
"preset-vaapi",
"preset-intel-qsv-h264",
"preset-intel-qsv-h265",
"preset-nvidia",
]
# Whitelist based on documented presets in ffmpeg_presets.md
hwaccel_presets = [
"preset-rpi-64-h264",
"preset-rpi-64-h265",
"preset-vaapi",
"preset-intel-qsv-h264",
"preset-intel-qsv-h265",
"preset-nvidia",
"preset-jetson-h264",
"preset-jetson-h265",
"preset-rkmpp",
]
input_presets = [ input_presets = [
"preset-http-jpeg-generic", "preset-http-jpeg-generic",
"preset-http-mjpeg-generic", "preset-http-mjpeg-generic",

View File

@ -1321,12 +1321,12 @@
"selectPreset": "Select preset", "selectPreset": "Select preset",
"manualPlaceholder": "Enter FFmpeg arguments", "manualPlaceholder": "Enter FFmpeg arguments",
"presetLabels": { "presetLabels": {
"preset-rpi-64-h264": "Raspberry Pi 64-bit (H.264)", "preset-rpi-64-h264": "Raspberry Pi (H.264)",
"preset-rpi-64-h265": "Raspberry Pi 64-bit (H.265)", "preset-rpi-64-h265": "Raspberry Pi (H.265)",
"preset-vaapi": "VAAPI", "preset-vaapi": "VAAPI (Intel/AMD GPU)",
"preset-intel-qsv-h264": "Intel QSV (H.264)", "preset-intel-qsv-h264": "Intel QuickSync (H.264)",
"preset-intel-qsv-h265": "Intel QSV (H.265)", "preset-intel-qsv-h265": "Intel QuickSync (H.265)",
"preset-nvidia": "NVIDIA", "preset-nvidia": "NVIDIA GPU",
"preset-jetson-h264": "NVIDIA Jetson (H.264)", "preset-jetson-h264": "NVIDIA Jetson (H.264)",
"preset-jetson-h265": "NVIDIA Jetson (H.265)", "preset-jetson-h265": "NVIDIA Jetson (H.265)",
"preset-rkmpp": "Rockchip RKMPP" "preset-rkmpp": "Rockchip RKMPP"