WebRTC ストリーミング
WebRTC は HomeBe·at で最も低遅延なカメラストリーミングを提供します。Home Assistant インスタンスでのセットアップ方法をご紹介します。
なぜ WebRTC?
HomeBe·at は複数のストリーミングプロトコルをサポートしています。WebRTC は低遅延と品質の最適なバランスを提供し、通常 1 秒未満の遅延で、HLS の 5〜15 秒と比較して大幅に優れています。
| プロトコル | 遅延 | 品質 | セットアップ |
|---|---|---|---|
| WebRTC | < 1s | 高 | HA 2024.11 以降内蔵 |
| RTSP | < 1s | 高 | カメラへの直接接続 |
| HLS | 5–15s | 中 | HA カメラに内蔵 |
| MJPEG | 1–2s | 低 | 内蔵フォールバック |
Home Assistant の go2rtc
go2rtc はバージョン 2024.11 以降の Home Assistant に内蔵されており、WebRTC ストリーミングをすぐに利用できます。
要件
- go2rtc 連携を含む Home Assistant 2024.11+
- Docker ベースのインストール(HA OS、Container、または Supervised)— Python/Core インストールでは go2rtc は利用不可
- HA サーバーとデバイス間の UDP ネットワーク接続
デフォルト設定
最新バージョンの Home Assistant には go2rtc サポートが標準で含まれています。カメラが RTSP ストリームを公開している場合、HA は自動的に go2rtc を使用して WebRTC 配信を行います。HA ダッシュボードでカメラエンティティに「WebRTC」ストリームオプションが表示されていることを確認してください。
go2rtc の手動設定
自動設定されないカメラの場合は、go2rtc.yaml の設定に追加できます:
streams:
front_door:
- rtsp://admin:[email protected]:554/stream1
backyard:
- rtsp://admin:[email protected]:554/h264HomeBe·at でのストリーミング
HomeBe·at は Home Assistant カメラ向けの WebRTC、HLS、MJPEG ストリーミングに加え、カスタムカメラ向けの RTSP をサポートしています。アプリは各カメラで利用可能なプロトコルを自動的に検出し、最適なものを使用します。アプリの設定でカメラごとにストリームプロトコルを変更することもできます。
対応コーデック
HomeBe·at は H.264、H.265(HEVC)、VP8、VP9、AV1 をサポートしています。コーデックは WebRTC ハンドシェイク中に go2rtc とアプリ間で自動的にネゴシエーションされます。手動設定は不要です。カメラが H.265 でストリーミングしている場合、ネイティブにデコードされます。
Reolink カメラ
fluent(低解像度)と clear(高解像度)の個別のストリームエンティティを公開する Reolink カメラは、HomeBe·at でネイティブに動作します。アプリはこれらの解像度チャンネルを検出し、品質切り替えに使用します。中画質は fluent ストリームに、高画質は clear ストリームに接続します。各ストリームがネイティブ品質であるため、ビットレートの制限は不要です。マルチレンズカメラ(例:Reolink Duo 3 PoE)はレンズごとに個別のカメラとして表示されます。
Clear チャンネルエンティティの有効化
デフォルトでは、Home Assistant は Reolink カメラの fluent(低解像度)カメラエンティティのみを有効にしています。HomeBe·at で高画質ストリーミングを行うには、clear チャンネルを有効にする必要があります:
- Home Assistant で、設定 → デバイスとサービス → Reolink に移動
- カメラデバイスをクリック
- エンティティの下で、無効なエンティティを見つける(グレー表示または「無効を表示」トグルの背後)
- Clear カメラエンティティを有効にする(例:camera.driveway_clear または camera.driveway_clear_lens_0)
- HA がエンティティを登録するまで数秒待ち、HomeBe·at を再起動するか再接続する
有効にすると、HomeBe·at は自動的に clear チャンネルを検出し、高画質ストリーミングに使用します。
追加の Reolink エンティティ
Reolink カメラは、Home Assistant で有効にすると HomeBe·at が使用できる他のエンティティも公開します:
| エンティティ | タイプ | 説明 |
|---|---|---|
| Fluent/Clear ビットレート | 数値(スライダー) | 各チャンネルのストリームビットレート。帯域幅の使用量を調整します。 |
| Fluent/Clear フレームレート | 数値(スライダー) | 各チャンネルのストリームフレームレート。FPS が高いほど滑らかな映像。 |
| PTZ 位置センサー | センサー | 現在のパンおよびチルト位置(読み取り専用)。 |
| PTZ ボタン | ボタン | 方向移動(左、右、上、下)と停止。HomeBe·at は連続移動のために長押しを使用。 |
| PTZ ズーム | 数値(スライダー) | 光学ズームレベル。HomeBe·at は +/- ズームコントロール用に範囲を使いやすいステップに分割します。 |
| PTZ プリセット | セレクト/ボタン | 保存されたカメラ位置(例:「玄関」、「車庫」)。 |
これらのエンティティを有効にするには、clear チャンネルと同じ手順に従ってください。Home Assistant でデバイスの無効なエンティティを見つけてオンにしてください。
トラブルシューティング
WebRTC が接続できない
- go2rtc が動作しているか確認 — Home Assistant で、設定 > アドオンに移動し、go2rtc がアクティブであることを確認してください。
- UDP 接続を確認 — WebRTC は HA サーバーとデバイス間の UDP トラフィックが必要です。企業ネットワークや制限のあるネットワークでは UDP がブロックされている場合があります。
- エラーコードを確認 — HA が「unknown_command」を返す場合、WebRTC エンドポイントが存在しません(HA 2024.11+ にアップデートしてください)。「not_found」を返す場合、go2rtc 連携が読み込まれていません。
自動フォールバック
WebRTC が失敗すると、HomeBe·at は即座に MJPEG にフォールバックし、同時に HLS ストリームの確立を試みます。HLS の準備が整うと、MJPEG から引き継ぎます。フォールバックの進行に伴い、カメラのアクティブプロトコルバッジが更新されます。
WebRTC を使用できないユーザー
- Python/Core Home Assistant インストール(go2rtc なし)
- go2rtc を手動で無効にしたユーザー
- すべての UDP トラフィックがブロックされているネットワーク
これらの場合、HomeBe·at は自動的に MJPEG または HLS にフォールバックします。