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
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 36 additions and 14 deletions

View File

@ -5,6 +5,7 @@ import copy
import json
import logging
import os
import platform
import traceback
import urllib
from datetime import datetime, timedelta
@ -246,19 +247,26 @@ def get_active_profile(request: Request):
@router.get("/ffmpeg/presets", dependencies=[Depends(allow_any_authenticated())])
def ffmpeg_presets():
"""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 = [
"preset-http-jpeg-generic",
"preset-http-mjpeg-generic",

View File

@ -1330,7 +1330,18 @@
"none": "None",
"useGlobalSetting": "Inherit from global setting",
"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": {
"itemTitle": "Stream {{index}}"

View File

@ -405,7 +405,10 @@ export function FfmpegArgsWidget(props: WidgetProps) {
<SelectContent>
{presetOptions.map((preset) => (
<SelectItem key={preset} value={preset}>
{preset}
{t(`configForm.ffmpegArgs.presetLabels.${preset}`, {
ns: "views/settings",
defaultValue: preset,
})}
</SelectItem>
))}
</SelectContent>