-
Notifications
You must be signed in to change notification settings - Fork 0
Enhancement: Per-camera 'Include Audio' property to suppress RTSP audio track #22
Description
Summary
Add a per-camera Include Audio property (bool, default on). When off, the driver appends `?video` to the RTSP URL it hands to the Control4 camera proxy, which tells go2rtc to restream video-only. During live view on T3/T4/mobile navigators, no audio plays out of device speakers for that camera.
Motivation
Today, every camera pipes its audio track through RTSP to Control4 even when audio isn't useful on-site (interior-only cams, audio-disabled neighborhoods, noisy HVAC areas, doorbell chimes that overlap with navigator alerts, etc.). Dealers have no way to silence audio per-camera short of asking the homeowner to edit Frigate config or manage it at the navigator level.
The driver already sets `False` in driver.xml, but that only controls whether C4 routes audio into audio zones — it doesn't prevent audio from reaching navigator speakers during live view. The RTSP stream carries audio regardless.
Proposed design
New driver property (Camera driver)
- Include Audio (bool, default on) — when off, strip audio from the RTSP stream handed to Control4.
Implementation
- In `getStreamURLs()` (`camera-driver/driver.lua:542`) and `getRTSPH264QueryString()` (`camera-driver/driver.lua:580`), append `?video` to the RTSP URL when `Include Audio == false`.
- Example: `rtsp://host:8554/front_door_sub` → `rtsp://host:8554/front_door_sub?video` when disabled.
- go2rtc filters the audio track server-side — zero extra bandwidth, zero Frigate config changes needed.
- HTTP MJPEG and snapshot URLs are unaffected (they're video-only already).
What is NOT affected
- Frigate audio detection events (`Audio: Speech`, `Audio: Bark`, etc.) — these come via MQTT and are independent of the RTSP playback stream.
- Future two-way audio (if/when added) uses a separate transport and this toggle wouldn't interfere.
Edge cases
- Default must be on — door stations and outdoor cams usually want audio, and changing default-off would silently break existing setups.
- Need to verify go2rtc's `?video` filter works consistently across all camera backend types (RTSP passthrough, ffmpeg: wrapper, etc.) — likely works everywhere but should be tested on at least one ffmpeg-wrapped stream.
Documentation updates
- README — mention `Include Audio` property and that it affects navigator live-view playback only, not audio detection events.