防犯カメラの映像が30秒遅れる謎|古いiPadだけ遅れる原因は、Home Assistantの配信方式でした


前回の記事で、眠っていた初代iPad Airをスマートホームのダッシュボードとして復活させた話を書きました(眠っていた初代iPad AirをHome Assistantのダッシュボードにした話)。

その記事の中で、ひとつ気になることを書いていました。防犯カメラの映像が、iPadでは約30秒遅れて表示されるという現象です。

当時は「古いiPadの処理能力が原因の可能性が高い」と推測で書いたのですが、その後気になって調べたところ、どうやら原因は処理能力ではなさそうだとわかりました。調べてみると仕組みとしてなかなか面白かったので、今回はその「謎解き」の記録です。

現象:iPadだけ約30秒遅れる

まず、起きていた現象を整理します。

  • 初代iPad Air(ダッシュボード用):防犯カメラの映像が約30秒遅れる。iPadの時計が21:00:40なのに、映像内のタイムスタンプは21:00:05、という具合
  • Mac:同じHome Assistantの画面を開くと、ほぼリアルタイムで表示される

同じサーバー、同じカメラ、同じ家のネットワークなのに、見る端末によって30秒も差が出る。最初は「10年以上前のiPadだから、処理が追いついていないのだろう」と考えていました。

最初の推測:iPadの処理能力?

前回の記事を書いた時点での私の推測は「iPad側の処理能力」でした。初代iPad Airは2013年発売で、搭載しているOSはiOS 12が最終メジャーバージョンです。

余談ですが、このiPadを今回のプロジェクトのために久しぶりに起動したら、アップデートの通知が届いていて驚きました。2026年1月に配信されたiOS 12.5.8という更新で、中身は新機能ではなく、iMessageやFaceTimeなどを動かし続けるために必要な「証明書」の期限延長です。証明書というのは、Appleのサーバーと安全に通信するための電子的な身分証明書のようなもので、有効期限があります。期限が切れると一部の機能が使えなくなるため、それを延長してくれた、という更新でした。10年以上前の端末をAppleがまだ見捨てていないのは嬉しい驚きでしたが、逆に言えば、ブラウザなどの機能が新しくなるわけではありません。iOS 12世代のブラウザは、機能的には数年前の水準で止まっています。

話を戻すと、「古い端末=処理が遅い=映像が遅れる」というのは直感的には筋が通っていそうに見えます。しかし、よく考えると変な点がありました。**遅延の量が毎回ほぼ一定(約30秒)**なのです。処理能力が原因なら、表示がカクカクしたり、遅延がどんどん蓄積したりしそうなものですが、そうではなく「常に一定時間だけ過去の映像が、なめらかに流れている」という状態でした。

調べてわかったこと:配信方式を自動で切り替える仕組みがある

WebRTCとHLSの配信方式の違いを示した図

調べてわかったのは、Home Assistantには、カメラ映像の配信方式を環境に合わせて自動で切り替える仕組みがあるという事実です。これはHome Assistantの公式情報で確認できます。

Home Assistantは、カメラ映像をブラウザに届けるときに、まずWebRTCという方式を使おうとします。WebRTCはビデオ通話などにも使われるリアルタイム向けの仕組みで、これが使えるMacではほぼ遅延なく映像が表示されます。

そして、WebRTCでの再生ができない環境に対しては、エラーで終わらせるのではなく、互換性の高いHLSという方式に自動で切り替えて(フォールバックして)配信を続ける仕様になっています。

我が家の現象に当てはめると、

  • Mac → WebRTCで受信 → ほぼリアルタイム
  • 初代iPad Air → WebRTCが使えず、HLSに自動切り替え → 約30秒遅延

という構図で、きれいに説明がつきます。iPad上で「今HLSで受信している」と直接確認したわけではないので厳密には推測になりますが、「遅延が常に一定」「端末によって差が出る」「遅延の規模がHLSの典型的な値と一致する」という特徴がすべて整合しました。iPadが「頑張っても追いつけない」のではなく、そもそも渡されている映像の方式が違う、というのが答えのようです。

HLSはなぜ遅れるのか

では、HLSだとなぜ遅れるのか。ここが個人的に一番面白かった部分です。

HLSは、映像を数秒ごとの細切れのファイル(セグメント)に分割して、順番にダウンロードさせる方式です。動画配信サービスなどで広く使われている、長年の実績があり動作が安定した仕組みです。

ただ、この方式には構造的な特徴があります。再生する側は、途切れないように数個分のセグメントをあらかじめ貯めてから再生を始めるのです。1セグメントが数秒だとして、それを数個バッファすると、それだけで数十秒の遅延になります。つまりHLSの遅延は不具合ではなく、安定再生と引き換えの仕様です。

  • WebRTC:遅延を最小にすることを最優先した、リアルタイム会話向けの方式
  • HLS:多少遅れても途切れず安定して流すことを優先した、動画視聴向けの方式

防犯カメラの「今」を見たい用途にはWebRTCが向いていて、映画を観る用途にはHLSが向いている。それぞれ設計思想が違うだけで、どちらが優れているという話ではありません。

原因はわかった。でも、遅延そのものは残っている

原因がわかってみると、Home Assistantの作りには感心しました。10年以上前のブラウザに対しても「表示できません」で終わらせず、その端末でも扱える方式に切り替えて、とにかく映像を届けてくれていたわけです。約30秒の遅延は、その互換性の代償でした。

ただ、正直なところ、我が家にとってこの遅延は解決したい課題のままです。防犯カメラの映像は、できればリアルタイムで見たい。「誰か来たみたいだ」と思って画面を見たときに、映っているのが30秒前の様子では、用途によっては間に合いません。

原因が「端末の限界」だと分かったので、対応の方向性も見えてきました。この遅延の解消は、我が家のスマートホーム化の宿題のひとつとして持ち越します。解決できたら、その方法を続編として書くつもりです。

まとめ

  • 初代iPad Airで防犯カメラ映像が約30秒遅れる原因は、処理能力ではなく配信方式の違いで説明がつく
  • Home Assistantには、リアルタイム向けのWebRTCで再生できない環境に対し、安定性重視のHLSへ自動で切り替える仕組みがある(公式情報で確認できる事実)
  • HLSの遅延は不具合ではなく、細切れの映像を貯めてから再生する仕組み上の仕様
  • 遅延そのものは未解決の課題。解消できたら続編で報告予定

前回の記事では「処理能力が原因の可能性が高い」と書きましたが、調べ直したことで推測を答え合わせできました。古い端末の再利用は、こういう「なぜ?」を調べる楽しみもセットで付いてくるのだと思います。