diff --git a/web/public/locales/en/views/settings.json b/web/public/locales/en/views/settings.json index 1dc2ab5bd..a097c8ebc 100644 --- a/web/public/locales/en/views/settings.json +++ b/web/public/locales/en/views/settings.json @@ -272,7 +272,8 @@ "title": "Stream Validation", "videoCodecGood": "Video codec is {{codec}}.", "audioCodecGood": "Audio codec is {{codec}}.", - "resolutionHigh": "A detect stream resolution of {{resolution}} may cause increased resource usage.", + "resolutionHigh": "Resolution of {{resolution}} may cause increased resource usage.", + "resolutionLow": "A resolution of {{resolution}} may be too low for reliable detection of small objects.", "noAudioWarning": "No audio detected for this stream, recordings will not have audio.", "audioCodecRecordError": "The AAC audio codec is required to support audio in recordings.", "audioCodecRequired": "An audio stream is required to support audio detection.", diff --git a/web/src/components/settings/wizard/Step3Validation.tsx b/web/src/components/settings/wizard/Step3Validation.tsx index 89649c4a8..355038b92 100644 --- a/web/src/components/settings/wizard/Step3Validation.tsx +++ b/web/src/components/settings/wizard/Step3Validation.tsx @@ -504,6 +504,7 @@ function StreamIssues({ const [width, height] = stream.resolution.split("x").map(Number); if (!isNaN(width) && !isNaN(height) && width > 0 && height > 0) { const minDimension = Math.min(width, height); + const maxDimension = Math.max(width, height); if (minDimension > 1080) { result.push({ type: "warning", @@ -511,6 +512,13 @@ function StreamIssues({ resolution: stream.resolution, }), }); + } else if (maxDimension < 640) { + result.push({ + type: "error", + message: t("cameraWizard.step3.issues.resolutionLow", { + resolution: stream.resolution, + }), + }); } } }