Per-tile stream quality (high/low), fps cap, latency flags

Cameras carry multiple stream URLs (streams: high/medium/low); each
tile picks one via Quality (auto/high/low). Small tiles can pull the
low substream to cut Pi decode load. discover --enable-rtsp takes a
comma list (high,low), enables each channel, records all enabled ones.
TUI: q cycles a tile quality (shown in the tile); discover enables
high+low. Player: --framedrop + low-delay demuxer flags; player.max_fps.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Levi Woodard
2026-07-01 21:55:25 -05:00
parent 780396076d
commit 8d95c944bd
10 changed files with 287 additions and 70 deletions

View File

@@ -16,23 +16,32 @@ display:
height: 1080
player:
hwdec: auto-safe # v4l2m2m/drm on the Pi 4; "no" to force software
hwdec: v4l2m2m-copy # Pi 4 hardware H.264 decoder. "auto-safe" often
# won't engage it; "no" forces software.
profile: low-latency
max_fps: 0 # cap rendered fps (0 = uncapped); trims render load
restart_backoff_seconds: 3
extra_args: [] # e.g. ["--vf=fps=15"] to cap decode load
extra_args: []
# Camera catalog. Normally populated by `rtsp-streamer discover`; shown here
# filled in by hand for illustration. Layouts reference cameras by `name`.
# by hand for illustration. Each camera can carry multiple stream qualities
# (high/medium/low) so a tile can choose which to pull. Layouts reference
# cameras by `name`. (A single `rtsp:` URL instead of `streams:` also works.)
cameras:
- id: 60a1b2c3d4e5f6 # UniFi Protect camera id (blank for manual entries)
name: Front Door
rtsp: rtsps://192.168.1.1:7441/aBcD1234?enableSrtp
streams:
high: rtsps://192.168.1.1:7441/aBcD1234?enableSrtp
low: rtsps://192.168.1.1:7441/aBcD5678?enableSrtp
- name: Driveway
rtsp: rtsps://192.168.1.1:7441/eFgH5678?enableSrtp
streams:
high: rtsps://192.168.1.1:7441/eFgH1234?enableSrtp
low: rtsps://192.168.1.1:7441/eFgH5678?enableSrtp
- name: Back Yard
rtsp: rtsps://192.168.1.1:7441/iJkL9012?enableSrtp
streams:
low: rtsps://192.168.1.1:7441/iJkL9012?enableSrtp
- name: Garage
rtsp: rtsps://192.168.1.1:7441/mNoP3456?enableSrtp
rtsp: rtsps://192.168.1.1:7441/mNoP3456?enableSrtp # legacy single-URL form
# Layouts place cameras on a base grid (COLSxROWS). Cameras are "tiles" that
# may span multiple cells, so you can mix a big main view with small side
@@ -48,14 +57,15 @@ layouts:
- {camera: Back Yard, col: 0, row: 1}
- {camera: Garage, col: 1, row: 1}
# Security-wall style: one big 3x3 main view + a right column of three.
# Security-wall style: one big 3x3 main view (high quality) + a right column
# of three small tiles on the low substream to keep decode load down.
- name: main-plus
grid: 4x3
tiles:
- {camera: Front Door, col: 0, row: 0, colspan: 3, rowspan: 3}
- {camera: Driveway, col: 3, row: 0}
- {camera: Back Yard, col: 3, row: 1}
- {camera: Garage, col: 3, row: 2}
- {camera: Front Door, col: 0, row: 0, colspan: 3, rowspan: 3, quality: high}
- {camera: Driveway, col: 3, row: 0, quality: low}
- {camera: Back Yard, col: 3, row: 1, quality: low}
- {camera: Garage, col: 3, row: 2, quality: low}
- name: front-focus
grid: 1x1