diff --git a/.devcontainer/preconfig/.storage/lovelace b/.devcontainer/preconfig/.storage/lovelace index 604e5a64..b398e317 100644 --- a/.devcontainer/preconfig/.storage/lovelace +++ b/.devcontainer/preconfig/.storage/lovelace @@ -18,7 +18,7 @@ "cameras": [ { "camera_entity": "camera.big_buck_bunny", - "live_provider": "frigate-jsmpeg", + "live_provider": "jsmpeg", "id": "big_buck_bunny_jsmpeg" }, { diff --git a/README.md b/README.md index b277c6b5..b6003375 100644 --- a/README.md +++ b/README.md @@ -120,7 +120,7 @@ See the [fully expanded cameras configuration example](#config-expanded-cameras) |`ha` (when configured with LL-HLS)|Better|High|Better|Builtin|Use the built-in Home Assistant camera streams -- can be configured to use an [LL-HLS](https://www.home-assistant.io/integrations/stream/#ll-hls) feed for lower latency.| |`ha` (Native WebRTC)|Best|High|Better|Builtin|Use the built-in Home Assistant camera streams -- can be configured to use [native WebRTC](https://www.home-assistant.io/integrations/rtsp_to_webrtc/) offering a very low-latency feed direct to your browser.| |`image`|Poor|Poor|Best|Builtin|Use refreshing snapshots of the built-in Home Assistant camera streams.| -|`frigate-jsmpeg`|Better|Low|Poor|Builtin|Stream the JSMPEG stream from Frigate (proxied via the Frigate integration). See [note below on the required integration version](#jsmpeg-troubleshooting) for this live provider to function. This is the only live provider that can view the Frigate `birdseye` view.| +|`jsmpeg`|Better|Low|Poor|Builtin|Use a the JSMPEG stream.| |`go2rtc`|Best|High|Better|Builtin|Uses [go2rtc](https://github.com/AlexxIT/go2rtc) to stream live feeds. This is supported by Frigate >= `0.12`.| |`webrtc-card`|Best|High|Better|Separate installation required|Embed's [AlexxIT's WebRTC Card](https://github.com/AlexxIT/WebRTC) to stream live feed, requires manual extra setup, see [below](#webrtc). Not to be confused with native Home Assistant WebRTC (use `ha` provider above).| @@ -128,11 +128,20 @@ See the [fully expanded cameras configuration example](#config-expanded-cameras) #### Available Camera Engines +##### Engine Capabilities + |Engine|Live|Supports clips|Supports Snapshots|Supports Recordings|Supports Timeline|Favorite events|Favorite recordings| | - | - | - | - | - | - | - | - | |`frigate`| :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :heavy_multiplication_x: | |`generic`| :white_check_mark: | :heavy_multiplication_x: | :heavy_multiplication_x: | :heavy_multiplication_x: | :heavy_multiplication_x: | :heavy_multiplication_x: | :heavy_multiplication_x: | +##### Live providers supported per Engine + +|Engine / Live Provider|`ha`|`image`|`jsmpeg`|`go2rtc`|`webrtc-card`| +| - | - | - | - | - | - | +|`frigate`| :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | +|`generic`| :white_check_mark: | :white_check_mark: | :heavy_multiplication_x: | :heavy_multiplication_x: | :white_check_mark: | + #### Camera Frigate configuration @@ -146,7 +155,7 @@ cameras: | Option | Default | Overridable | Description | | - | - | - | - | -| `camera_name` | Autodetected from `camera_entity` if that is specified. | :heavy_multiplication_x: | The Frigate camera name to use when communicating with the Frigate server, e.g. for viewing clips/snapshots or the JSMPEG live view. To view the birdseye view set this to `birdseye` and use the `frigate-jsmpeg` live provider.| +| `camera_name` | Autodetected from `camera_entity` if that is specified. | :heavy_multiplication_x: | The Frigate camera name to use when communicating with the Frigate server, e.g. for viewing clips/snapshots or the JSMPEG live view.| | `url` | | :heavy_multiplication_x: | The URL of the frigate server. If set, this value will be (exclusively) used for a `Frigate UI` menu button. All other communication with Frigate goes via Home Assistant. | | `label` | | :heavy_multiplication_x: | A Frigate label / object filter used to filter events (clips & snapshots), e.g. `person`.| | `zone` | | :heavy_multiplication_x: | A Frigate zone used to filter events (clips & snapshots), e.g. `front_door`.| @@ -352,7 +361,7 @@ See the [fully expanded live configuration example](#config-expanded-live) for h | `show_image_during_load` | `true` | :white_check_mark: | If `true`, during the initial stream load, the `image` live provider will be shown instead of the loading video stream. This still image will auto-refresh and is replaced with the live stream once loaded. | | `actions` | | :white_check_mark: | Actions to use for the `live` view. See [actions](#actions) below.| | `controls` | | :white_check_mark: | Configuration for the `live` view controls. See below. | -| `jsmpeg` | | :white_check_mark: | Configuration for the `frigate-jsmpeg` live provider. See below.| +| `jsmpeg` | | :white_check_mark: | Configuration for the `jsmpeg` live provider. See below.| | `webrtc_card` | | :white_check_mark: | Configuration for the `webrtc-card` live provider. See below.| | `layout` | | :white_check_mark: | See [media layout](#media-layout) below.| @@ -2298,7 +2307,7 @@ to provide a separate unambiguous way of referring to that camera, since the type: custom:frigate-card cameras: - camera_entity: camera.front_door - live_provider: frigate-jsmpeg + live_provider: jsmpeg title: Front Door (JSMPEG) - camera_entity: camera.front_door live_provider: webrtc-card @@ -3166,7 +3175,7 @@ Using a `panel` dashboard with the following base configuration will result in t type: custom:frigate-card cameras: - camera_entity: camera.front_door - live_provider: frigate-jsmpeg + live_provider: jsmpeg dimensions: aspect_ratio: 1024:600 aspect_ratio_mode: static @@ -3208,12 +3217,6 @@ For some slowly loading cameras, for which [Home Assistant stream preloading](ht -### JSMPEG Live Camera Only Shows A 'spinner' - -You must be using a version of the [Frigate integration](https://github.com/blakeblackshear/frigate-hass-integration) >= 2.1.0 -to use JSMPEG proxying. The `frigate-jsmpeg` live provider will not work with earlier -integration versions. - ### Timeline shows error message If the timeline shows a message such as `Failed to receive response from Home @@ -3255,7 +3258,7 @@ possible in carousels that use the Firefox video player (e.g. `clips` carousel, or live views that use the `frigate` or `webrtc-card` provider). The next and previous buttons may be used to navigate in these instances. -Dragging works as expected for snapshots, or for the `frigate-jsmpeg` provider. +Dragging works as expected for snapshots, or for the `jsmpeg` provider. ### Progress bar cannot be dragged in Safari diff --git a/src/components/live/live.ts b/src/components/live/live.ts index d0d008f5..1ce25339 100644 --- a/src/components/live/live.ts +++ b/src/components/live/live.ts @@ -747,7 +747,7 @@ export class FrigateCardLiveProvider extends LitElement { return 'ha'; } } else if (this.cameraConfig?.frigate.camera_name) { - return 'frigate-jsmpeg'; + return 'jsmpeg'; } return frigateCardConfigDefaults.cameras.live_provider; } @@ -799,7 +799,7 @@ export class FrigateCardLiveProvider extends LitElement { } if (changedProps.has('cameraConfig')) { const provider = this._getResolvedProvider(); - if (provider === 'frigate-jsmpeg') { + if (provider === 'jsmpeg') { import('./live-jsmpeg.js'); } else if (provider === 'ha') { import('./live-ha.js'); @@ -881,7 +881,7 @@ export class FrigateCardLiveProvider extends LitElement { @frigate-card:media:loaded=${this._videoMediaShowHandler.bind(this)} > ` - : provider === 'frigate-jsmpeg' + : provider === 'jsmpeg' ? html` data : {}, ); }, + upgradeArrayValue( + CONF_CAMERAS, + upgradeWithOverrides('live_provider', (val) => + val === 'frigate-jsmpeg' ? 'jsmpeg' : val, + ), + ), ]; diff --git a/src/editor.ts b/src/editor.ts index a5e68f65..58637fb0 100644 --- a/src/editor.ts +++ b/src/editor.ts @@ -1197,8 +1197,8 @@ export class FrigateCardEditor extends LitElement implements LovelaceCardEditor label: localize('config.cameras.live_providers.image'), }, { - value: 'frigate-jsmpeg', - label: localize('config.cameras.live_providers.frigate-jsmpeg'), + value: 'jsmpeg', + label: localize('config.cameras.live_providers.jsmpeg'), }, { value: 'go2rtc', diff --git a/src/localize/languages/en.json b/src/localize/languages/en.json index 42fd0051..d99ec54d 100644 --- a/src/localize/languages/en.json +++ b/src/localize/languages/en.json @@ -38,7 +38,7 @@ "live_provider": "Live view provider for this camera", "live_providers": { "auto": "Automatic", - "frigate-jsmpeg": "Frigate JSMpeg", + "jsmpeg": "JSMpeg", "go2rtc": "go2rtc", "ha": "Home Assistant video stream (i.e. HLS, LL-HLS, WebRTC via HA)", "image": "Home Assistant images", diff --git a/src/localize/languages/it.json b/src/localize/languages/it.json index e5a2f728..613c7779 100644 --- a/src/localize/languages/it.json +++ b/src/localize/languages/it.json @@ -28,7 +28,7 @@ "live_provider": "Provider di visualizzazione dal vivo per questa telecamera", "live_providers": { "auto": "Automatica", - "frigate-jsmpeg": "Frigate JSMpeg", + "jsmpeg": "JSMpeg", "go2rtc": "", "ha": "", "image": "", diff --git a/src/localize/languages/pt-BR.json b/src/localize/languages/pt-BR.json index 969c0c47..5db86277 100644 --- a/src/localize/languages/pt-BR.json +++ b/src/localize/languages/pt-BR.json @@ -28,7 +28,7 @@ "live_provider": "Provedor de visualização ao vivo para esta câmera", "live_providers": { "auto": "Automatico", - "frigate-jsmpeg": "Frigate JSMpeg", + "jsmpeg": "JSMpeg", "go2rtc": "", "ha": "", "image": "", diff --git a/src/types.ts b/src/types.ts index 5270a820..c0d29882 100644 --- a/src/types.ts +++ b/src/types.ts @@ -70,7 +70,7 @@ const LIVE_PROVIDERS = [ 'auto', 'image', 'ha', - 'frigate-jsmpeg', + 'jsmpeg', 'go2rtc', 'webrtc-card', ] as const;