resolve hwaccel per camera and clarify recording retention

The hwaccel step listed every preset Frigate ships, so an Intel box was offered Raspberry Pi and Rockchip decoding, and the codec specific presets (`preset-intel-qsv-h264` vs `-h265`) were offered as global values that break as soon as two cameras use different codecs. `/hardware/hwaccel` now returns the decoding families the probed hardware can actually use, each carrying a preset per codec, and the wizard resolves the family against the detect stream codec the camera wizard already probed: one global `ffmpeg.hwaccel_args` when every camera agrees, per-camera `cameras.<name>.ffmpeg.hwaccel_args` when they don't. The global stays on `auto` in that case so cameras added later still resolve at startup. A gen13+ Intel machine keeps its QuickSync recommendation with mixed h264 and h265 cameras instead of dropping to vaapi.

The recording step's "Days to retain recordings" only wrote alert and detection retention, and the storage estimate under it assumed continuous recording. It now asks what to record in plain language, writes `record.continuous.days` to match, shows the estimate only for continuous, and drops the spinner arrows on the number input.
This commit is contained in:
Josh Hawkins
2026-08-22 11:51:08 -05:00
parent bb5e9264b0
commit d02811d2b4
13 changed files with 815 additions and 178 deletions
+25 -10
View File
@@ -27,16 +27,16 @@
"description": "Speed up video decoding with your GPU.",
"detecting": "Checking your hardware...",
"auto": "Auto",
"autoResolved": "Will use {{preset}} based on your detection hardware.",
"autoNone": "No compatible GPU found. Frigate will decide at startup.",
"autoResolved": "Will use {{family}} for your cameras.",
"autoNone": "No supported video card found. Frigate will decide at startup.",
"recommendFailed": "Hardware detection is unavailable. Frigate will decide at startup.",
"presets": {
"families": {
"nvidia": "CUDA (NVIDIA)",
"vaapi": "VAAPI (Intel/AMD)",
"cuda": "CUDA (NVIDIA)",
"qsv": "QuickSync (Intel)",
"intel-qsv": "QuickSync (Intel)",
"rkmpp": "RKMPP (Rockchip)",
"rpi": "V4L2 (Raspberry Pi)",
"jetson": "NVIDIA Jetson",
"rpi": "V4L2 (Raspberry Pi)",
"none": "None (software decoding)"
}
},
@@ -52,11 +52,26 @@
},
"recording": {
"title": "Recordings",
"description": "Save video from your cameras for later review.",
"description": "Save video from your cameras so you can watch it later.",
"enableRecording": "Enable recordings",
"retentionDays": "Days to retain recordings",
"storageEstimate": "With {{free}} GB free, you can store approximately {{days}} days of recordings for {{cameras}} camera(s).",
"noCameras": "You haven't added cameras yet. Recording will apply when you add cameras in Settings."
"retentionDays": "Keep recordings for (days)",
"storageEstimate": "With {{free}} GB free, {{cameras}} camera(s) recording around the clock fills the disk in roughly {{days}} days.",
"noCameras": "You haven't added cameras yet. Recording will apply when you add cameras in Settings.",
"modeLabel": "What to record",
"modes": {
"events": {
"label": "Only when something is spotted",
"description": "Saves video around people, cars, and other objects Frigate spots. Uses far less disk space."
},
"continuous": {
"label": "All the time",
"description": "Saves video around the clock, so you can go back to any moment. Uses much more disk space."
}
},
"retentionHint": {
"events": "Video of anything Frigate spots is kept this long, then deleted automatically.",
"continuous": "All video is kept this long, then deleted automatically."
}
},
"complete": {
"title": "You're All Set!",