fix: Improve 2-way audio detection (#2293)

- For Frigate cameras, you must be running at least [integration
v5.12.0](https://github.com/blakeblackshear/frigate-hass-integration/releases/tag/v5.12.0).
 - Closes: #2191 

Includes a significant refactor of cameras, and the introduction of a
`2-way-audio` capability that is dynamically fetched from `go2rtc`. One
gotcha is if you previously had a substream with 2-way audio, you may
need to modify

```yaml
 - camera_entity: camera.foo
    capabilities:
      disable_except:
        - substream
```

... to ...

```yaml
 - camera_entity: camera.foo
    capabilities:
      disable_except:
        - substream
        - 2-way-audio
```
This commit is contained in:
Dermot Duffy
2025-12-20 13:06:09 -08:00
committed by GitHub
parent 588ed6c98a
commit 1e821f09c6
47 changed files with 2240 additions and 958 deletions
+9 -1
View File
@@ -15,9 +15,14 @@ export class AdvancedCameraCardError extends Error {
}
export interface MediaLoadedCapabilities {
supports2WayAudio?: boolean;
supportsPause?: boolean;
hasAudio?: boolean;
// Note: This is whether the current stream already _has_ 2-way audio, not
// whether the underlying camera _could_ establish 2 way audio. For the
// latter, consult the camera's capabilities ('2-way-audio').
has2WayAudio?: boolean;
}
export type MediaTechnology =
@@ -132,6 +137,8 @@ export interface CapabilitiesRaw {
menu?: boolean;
trigger?: boolean;
'2-way-audio'?: boolean;
}
export type CapabilityKey = keyof CapabilitiesRaw;
@@ -147,6 +154,7 @@ export const capabilityKeys: readonly [CapabilityKey, ...CapabilityKey[]] = [
'seek',
'snapshots',
'substream',
'2-way-audio',
'trigger',
] as const;