Improve hwaccel UI config (#22590)

* Add proper labels for hwaccel presets

* Filter presets based on hardware
This commit is contained in:
Nicolas Mowen
2026-03-23 08:37:40 -06:00
committed by GitHub
parent 2c9a25e678
commit 5d67ba76fd
3 changed files with 36 additions and 14 deletions
+20 -12
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",
+12 -1
View File
@@ -1330,7 +1330,18 @@
"none": "None", "none": "None",
"useGlobalSetting": "Inherit from global setting", "useGlobalSetting": "Inherit from global setting",
"selectPreset": "Select preset", "selectPreset": "Select preset",
"manualPlaceholder": "Enter FFmpeg arguments" "manualPlaceholder": "Enter FFmpeg arguments",
"presetLabels": {
"preset-rpi-64-h264": "Raspberry Pi (H.264)",
"preset-rpi-64-h265": "Raspberry Pi (H.265)",
"preset-vaapi": "VAAPI (Intel/AMD GPU)",
"preset-intel-qsv-h264": "Intel QuickSync (H.264)",
"preset-intel-qsv-h265": "Intel QuickSync (H.265)",
"preset-nvidia": "NVIDIA GPU",
"preset-jetson-h264": "NVIDIA Jetson (H.264)",
"preset-jetson-h265": "NVIDIA Jetson (H.265)",
"preset-rkmpp": "Rockchip RKMPP"
}
}, },
"cameraInputs": { "cameraInputs": {
"itemTitle": "Stream {{index}}" "itemTitle": "Stream {{index}}"
@@ -405,7 +405,10 @@ export function FfmpegArgsWidget(props: WidgetProps) {
<SelectContent> <SelectContent>
{presetOptions.map((preset) => ( {presetOptions.map((preset) => (
<SelectItem key={preset} value={preset}> <SelectItem key={preset} value={preset}>
{preset} {t(`configForm.ffmpegArgs.presetLabels.${preset}`, {
ns: "views/settings",
defaultValue: preset,
})}
</SelectItem> </SelectItem>
))} ))}
</SelectContent> </SelectContent>