WebRTC ストリーミング

WebRTC は HomeBe·at で最も低遅延なカメラストリーミングを提供します。Home Assistant インスタンスでのセットアップ方法をご紹介します。

なぜ WebRTC?

HomeBe·at は複数のストリーミングプロトコルをサポートしています。WebRTC は低遅延と品質の最適なバランスを提供し、通常 1 秒未満の遅延で、HLS の 5〜15 秒と比較して大幅に優れています。

プロトコル遅延品質セットアップ
WebRTC< 1sHA 2024.11 以降内蔵
RTSP< 1sカメラへの直接接続
HLS5–15sHA カメラに内蔵
MJPEG1–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/h264

HomeBe·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 チャンネルを有効にする必要があります:

  1. Home Assistant で、設定 → デバイスとサービス → Reolink に移動
  2. カメラデバイスをクリック
  3. エンティティの下で、無効なエンティティを見つける(グレー表示または「無効を表示」トグルの背後)
  4. Clear カメラエンティティを有効にする(例:camera.driveway_clear または camera.driveway_clear_lens_0)
  5. 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 が接続できない

  1. go2rtc が動作しているか確認 — Home Assistant で、設定 > アドオンに移動し、go2rtc がアクティブであることを確認してください。
  2. UDP 接続を確認 — WebRTC は HA サーバーとデバイス間の UDP トラフィックが必要です。企業ネットワークや制限のあるネットワークでは UDP がブロックされている場合があります。
  3. エラーコードを確認 — 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 にフォールバックします。

ヒント: WebRTC で接続の問題が発生した場合は、HA サーバーとデバイス間で UDP トラフィックが許可されているか確認してください。