1 ポイント 投稿者 GN⁺ 2024-09-17 | まだコメントはありません。 | WhatsAppで共有
  • Raspberry Pi WebRTC は、Raspberry Pi または NVIDIA Jetson を約200msの遅延を持つ WebRTC ストリーミングプラットフォームに変える C++20 ベースのプロジェクト
  • ネイティブ WebRTC を使用し、ハードウェア/ソフトウェアエンコード、スナップショット、録画、配信、WebRTC DataChannel によるリモート制御と IoT メッセージングをサポート
  • シグナリング方式として MQTTWHEPWebSocket をサポートし、MQTT は Pi カメラとクライアントが WebRTC 接続情報を交換するために使われる
  • 対応デバイスは Raspberry Pi Zero/3/4/5 と NVIDIA Jetson Nano/NX/Orin で、カメラは CSI または USB を利用でき、libcamera、libargus、V4L2 をサポートしている必要がある
  • Pi 5 またはハードウェアエンコーダのないデバイスでは、実行オプションから --hw-accel を削除する必要があり、WHEP はブローカー不要だが 公開ホスト名 が必要

プロジェクト概要

  • Raspberry Pi WebRTC は、Raspberry Pi または NVIDIA Jetson を低遅延 WebRTC ストリーミングプラットフォームに変えるプロジェクト
  • 目標遅延時間は約 200ms
  • 主な技術表記は以下の通り
    • libwebrtc m146.7680

    • C++20

      • Apache 2.0 ライセンス

対応機能

  • ネイティブ WebRTC ベースのストリーミングを提供
  • 映像エンコードは ハードウェアエンコード とソフトウェアエンコードをサポート
  • カメラ機能にはスナップショット、録画、配信が含まれる
  • WebRTC DataChannel を通じてリモート制御と IoT メッセージングをサポート

シグナリング方式とクライアント

要件

  • 対応ボードは Raspberry Pi Zero/3/4/5 または NVIDIA Jetson Nano/NX/Orin
  • カメラは CSI または USB カメラ を使用可能
  • カメラ入力は libcamera、libargus、または V4L2 をサポートしている必要がある

Raspberry Pi クイックスタート

  • Raspberry Pi OS のインストール
  • 依存関係のインストール
    • libmosquitto1, pulseaudio, libavformat61, libswscale8, libyaml-cpp0.8 をインストール
  • バイナリのダウンロード
  • MQTT シグナリング処理
    • HiveMQ, EMQX, またはセルフホストのブローカーを使用可能
    • MQTT は Pi カメラとクライアントが WebRTC 接続情報を交換できるようにする
    • WHEP はブローカー不要だが公開ホスト名が必要

実行方法と注意点

  • picamera-web を開き、MQTT 設定を追加した後に UID を生成
  • Pi で ./pi-webrtc を実行し、カメラ、FPS、解像度、MQTT ホスト、ポート、ユーザー名、パスワード、UID などをオプションで指定
  • 例のオプションには --camera=libcamera:0, --fps=30, --width=1280, --height=960, --use-mqtt, --no-audio などが含まれる
  • --hw-accelPi Zero 2W, 3B, 4B でハードウェアエンコードを使う際に付けるオプション
  • Pi 5 またはハードウェアエンコーダのないデバイスでは --hw-accel を削除する必要がある

高度な使い方

まだコメントはありません。

まだコメントはありません。