
- 區網內,鏡頭至螢幕
- 低於 100 ms
- 硬體編碼
- H.264 / AV1
- 可抽換的信令
- MQTT · WHEP · SFU
- 開源授權
- Apache-2.0
01
功能特色
硬體編碼
Raspberry Pi 上用 V4L2 M2M 支援 H.264,Jetson 上支援 H.264 / AV1。
雙向通訊
WebRTC DataChannel 負責傳遞控制訊息,再由 IPC bridge 交給裝置上的任何行程。
可抽換的信令
MQTT、WHEP 與 LiveKit 共用同一套介面,而且可以同時啟用多種。
在 4G / 5G 上照樣能跑
WebRTC 內建 NAT 穿透、壅塞控制與封包遺失回復,在行動網路上一樣可靠。
- 子串流
- 以完整解析度錄影,同時串流一份縮小過的畫面。
- 錄影
- 產出 MP4 檔案與定時 JPEG,可以持續錄製,也可以透過 DataChannel 觸發。
- IPC bridge
- 把 DataChannel 接到 Unix socket,讓裝置上的本機行程直接和瀏覽器對話。
- 動態調整解析度
- 網路或裝置吃緊時自動降低,狀況好轉後再回升。
- 相機控制
- 相容 rpicam-apps — 自動對焦、白平衡、曝光、降噪。
- 音訊
- 透過 PulseAudio 或 ALSA 進行 48 kHz 收音。
- STUN / TURN
- 內建支援,用於行動網路與電信業者網路下的 NAT 穿透。
- YAML 設定檔
- 每一個 CLI 參數都能寫成設定檔裡的一個欄位。
02
應用情境

機器人與無人機
影像從機器人或無人機端以不到一秒的延遲傳出,操作者可以遠端駕駛,不必跟延遲搏鬥。

遠端監控
用點對點信令連上 NAT 後方的攝影機,或透過 SFU 轉發給大量觀看者。

工業與實驗室監測
直接在瀏覽器裡即時觀察機台或實驗設備,同時在裝置端留一份錄影。

野外裝置
一片板子就完成擷取、編碼與 WebRTC 傳輸 —— 中間不需要地面站或轉送主機。
實際運作
用網頁遙控無人機
搖桿輸入走 DataChannel,影像走 WebRTC 回傳 — 全程只靠 WiFi。
裝置端物件追蹤
YOLOv11 + NvDCF 即時執行於 Jetson Orin NX。
一台攝影機,多人觀看
板子只上傳一條串流,由 LiveKit SFU 負責轉發。
03
信令
選擇裝置被連上的方式。多種傳輸方式可以同時啟用。
MQTT
需要: 一台 MQTT broker
從任何地方點對點觀看。裝置不需要公開網址 — 任何 broker 都能居中完成交握。
WHEP
需要: 不需要額外的伺服器 — 區網 IP 就夠了
裝置自己提供端點,所以任何 WHEP 播放器(包含 Home Assistant)都能用一個網址直接播放。
SFU
需要: 一台 LiveKit 伺服器,或一個 Cloudflare Realtime app
支援大量同時觀看。裝置只上傳一條串流,由 SFU 負責轉發,觀看人數不再是它要煩惱的事。
04
為什麼選 pi-webrtc
攝影機板子本身就是 WebRTC 端點。媒體路徑上沒有任何閘道器。
這樣做的好處是:少一台要部署、要顧安全、要擴充的常駐主機。中間不會有任何轉碼或再串流,所以延遲貼近網路來回時間,不會一段一段疊上去。控制訊息走同一條連線上的 DataChannel 回傳,不需要再維護第二條路徑。而且同一個執行檔就涵蓋兩種型態 — 單一觀看者用點對點,需要多人時就接上 SFU。
05
硬體支援
一套程式碼,兩個平台。
Raspberry Pi *
- 相機後端
- libcamera
- 硬體編碼
- H.264
NVIDIA Jetson *
- 相機後端
- libargus
- 硬體編碼
- H.264 / AV1
* Pi 5 與 Jetson Nano 沒有硬體編碼器,會退回軟體編碼。兩個平台都支援透過 V4L2 使用 USB 攝影機。
