Add support for custom go2rtc streams.
This commit is contained in:
@@ -174,6 +174,7 @@ cameras:
|
|||||||
| Option | Default | Overridable | Description |
|
| Option | Default | Overridable | Description |
|
||||||
| - | - | - | - |
|
| - | - | - | - |
|
||||||
| `modes` | `[webrtc, mse, mp4, mjpeg]` | :heavy_multiplication_x: | An ordered array of `go2rtc` modes to use. Valid values are `webrtc`, `mse`, `mp4` or `mjpeg` values. |
|
| `modes` | `[webrtc, mse, mp4, mjpeg]` | :heavy_multiplication_x: | An ordered array of `go2rtc` modes to use. Valid values are `webrtc`, `mse`, `mp4` or `mjpeg` values. |
|
||||||
|
| `stream` | Determind by camera engine (e.g. `frigate` camera name). | :heavy_multiplication_x: | A valid `go2rtc` stream name. |
|
||||||
|
|
||||||
#### Camera WebRTC Card configuration
|
#### Camera WebRTC Card configuration
|
||||||
|
|
||||||
@@ -1392,6 +1393,7 @@ cameras:
|
|||||||
- mse
|
- mse
|
||||||
- mp4
|
- mp4
|
||||||
- mjpeg
|
- mjpeg
|
||||||
|
stream: sitting_room
|
||||||
```
|
```
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
|
|||||||
@@ -1093,7 +1093,7 @@ export class FrigateCameraManagerEngine
|
|||||||
// go2rtc is exposed by the integration under the (slightly
|
// go2rtc is exposed by the integration under the (slightly
|
||||||
// misleading) 'mse' path, even though that path can serve all go2rtc
|
// misleading) 'mse' path, even though that path can serve all go2rtc
|
||||||
// modes.
|
// modes.
|
||||||
`/mse/api/ws?src=${cameraConfig.frigate.camera_name}`,
|
`/mse/api/ws?src=${cameraConfig.go2rtc?.stream ?? cameraConfig.frigate.camera_name}`,
|
||||||
sign: true,
|
sign: true,
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ export const CONF_CAMERAS_ARRAY_FRIGATE_LABEL =
|
|||||||
export const CONF_CAMERAS_ARRAY_FRIGATE_URL = `${CONF_CAMERAS}.#.frigate.url` as const;
|
export const CONF_CAMERAS_ARRAY_FRIGATE_URL = `${CONF_CAMERAS}.#.frigate.url` as const;
|
||||||
export const CONF_CAMERAS_ARRAY_FRIGATE_ZONE = `${CONF_CAMERAS}.#.frigate.zone` as const;
|
export const CONF_CAMERAS_ARRAY_FRIGATE_ZONE = `${CONF_CAMERAS}.#.frigate.zone` as const;
|
||||||
export const CONF_CAMERAS_ARRAY_GO2RTC_MODES = `${CONF_CAMERAS}.#.go2rtc.modes` as const;
|
export const CONF_CAMERAS_ARRAY_GO2RTC_MODES = `${CONF_CAMERAS}.#.go2rtc.modes` as const;
|
||||||
|
export const CONF_CAMERAS_ARRAY_GO2RTC_STREAM = `${CONF_CAMERAS}.#.go2rtc.stream` as const;
|
||||||
export const CONF_CAMERAS_ARRAY_HIDE = `${CONF_CAMERAS}.#.hide` as const;
|
export const CONF_CAMERAS_ARRAY_HIDE = `${CONF_CAMERAS}.#.hide` as const;
|
||||||
export const CONF_CAMERAS_ARRAY_ID = `${CONF_CAMERAS}.#.id` as const;
|
export const CONF_CAMERAS_ARRAY_ID = `${CONF_CAMERAS}.#.id` as const;
|
||||||
export const CONF_CAMERAS_ARRAY_TITLE = `${CONF_CAMERAS}.#.title` as const;
|
export const CONF_CAMERAS_ARRAY_TITLE = `${CONF_CAMERAS}.#.title` as const;
|
||||||
|
|||||||
+2
-1
@@ -130,6 +130,7 @@ import {
|
|||||||
CONF_PERFORMANCE_FEATURES_MEDIA_CHUNK_SIZE,
|
CONF_PERFORMANCE_FEATURES_MEDIA_CHUNK_SIZE,
|
||||||
MEDIA_CHUNK_SIZE_MAX,
|
MEDIA_CHUNK_SIZE_MAX,
|
||||||
CONF_CAMERAS_ARRAY_GO2RTC_MODES,
|
CONF_CAMERAS_ARRAY_GO2RTC_MODES,
|
||||||
|
CONF_CAMERAS_ARRAY_GO2RTC_STREAM,
|
||||||
CONF_CAMERAS_ARRAY_HIDE,
|
CONF_CAMERAS_ARRAY_HIDE,
|
||||||
} from './const.js';
|
} from './const.js';
|
||||||
import { localize } from './localize/localize.js';
|
import { localize } from './localize/localize.js';
|
||||||
@@ -1436,7 +1437,7 @@ export class FrigateCardEditor extends LitElement implements LovelaceCardEditor
|
|||||||
}
|
}
|
||||||
)}
|
)}
|
||||||
${this._renderStringInput(
|
${this._renderStringInput(
|
||||||
getArrayConfigPath(CONF_CAMERAS_ARRAY_WEBRTC_CARD_URL, cameraIndex),
|
getArrayConfigPath(CONF_CAMERAS_ARRAY_GO2RTC_STREAM, cameraIndex),
|
||||||
)}`,
|
)}`,
|
||||||
)}
|
)}
|
||||||
${this._putInSubmenu(
|
${this._putInSubmenu(
|
||||||
|
|||||||
@@ -31,7 +31,8 @@
|
|||||||
"webrtc": "Web Real-Time Communication (WebRTC)",
|
"webrtc": "Web Real-Time Communication (WebRTC)",
|
||||||
"mp4": "MPEG-4 (MP4)",
|
"mp4": "MPEG-4 (MP4)",
|
||||||
"mjpeg": "Motion JPEG (MJPEG)"
|
"mjpeg": "Motion JPEG (MJPEG)"
|
||||||
}
|
},
|
||||||
|
"stream": "go2rtc stream name"
|
||||||
},
|
},
|
||||||
"hide": "Hide camera from UI",
|
"hide": "Hide camera from UI",
|
||||||
"icon": "Icon for this camera (Autodetected from entity)",
|
"icon": "Icon for this camera (Autodetected from entity)",
|
||||||
|
|||||||
@@ -23,6 +23,17 @@
|
|||||||
"url": "Frigate URL del server",
|
"url": "Frigate URL del server",
|
||||||
"zone": "Frigate zona"
|
"zone": "Frigate zona"
|
||||||
},
|
},
|
||||||
|
"go2rtc": {
|
||||||
|
"editor_label": "",
|
||||||
|
"modes": {
|
||||||
|
"editor_label": "",
|
||||||
|
"mse": "",
|
||||||
|
"webrtc": "",
|
||||||
|
"mp4": "",
|
||||||
|
"mjpeg": ""
|
||||||
|
},
|
||||||
|
"stream": ""
|
||||||
|
},
|
||||||
"hide": "",
|
"hide": "",
|
||||||
"icon": "Icona per questa telecamera (Autoidentificato dall'entità)",
|
"icon": "Icona per questa telecamera (Autoidentificato dall'entità)",
|
||||||
"id": "ID univoco per questa telecamera in questa carta",
|
"id": "ID univoco per questa telecamera in questa carta",
|
||||||
|
|||||||
@@ -23,6 +23,17 @@
|
|||||||
"url": "URL do servidor Frigate",
|
"url": "URL do servidor Frigate",
|
||||||
"zone": "Zona do Frigate"
|
"zone": "Zona do Frigate"
|
||||||
},
|
},
|
||||||
|
"go2rtc": {
|
||||||
|
"editor_label": "",
|
||||||
|
"modes": {
|
||||||
|
"editor_label": "",
|
||||||
|
"mse": "",
|
||||||
|
"webrtc": "",
|
||||||
|
"mp4": "",
|
||||||
|
"mjpeg": ""
|
||||||
|
},
|
||||||
|
"stream": ""
|
||||||
|
},
|
||||||
"hide": "",
|
"hide": "",
|
||||||
"icon": "Ícone para esta câmera (detectado automaticamente pela entidade)",
|
"icon": "Ícone para esta câmera (detectado automaticamente pela entidade)",
|
||||||
"id": "ID exclusivo para esta câmera nesse cartão",
|
"id": "ID exclusivo para esta câmera nesse cartão",
|
||||||
|
|||||||
+2
-1
@@ -448,7 +448,8 @@ const cameraConfigSchema = z
|
|||||||
|
|
||||||
go2rtc: z
|
go2rtc: z
|
||||||
.object({
|
.object({
|
||||||
modes: z.enum(['webrtc', 'mse', 'mp4', 'mjpeg']).array(),
|
modes: z.enum(['webrtc', 'mse', 'mp4', 'mjpeg']).array().optional(),
|
||||||
|
stream: z.string().optional(),
|
||||||
})
|
})
|
||||||
.optional(),
|
.optional(),
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user