pi-webrtc
[](https://chromium.googlesource.com/external/webrtc/+/branch-heads/7727)



[](https://opensource.org/licenses/Apache-2.0)
What is pi-webrtc?
A single binary that streams a camera from a Raspberry Pi or Jetson to a browser over WebRTC, and carries control messages back to the device. It delivers sub-100ms latency on LAN and works remotely over WiFi, LTE, or 5G with no public IP.
Features
- Low-latency video — WebRTC with NAT traversal and congestion control.
- Remote control — commands and telemetry over WebRTC DataChannels.
- Hardware acceleration — H.264/AV1 on supported devices.
- RTSP input — add WebRTC and DataChannels to an existing IP camera.
Signaling
| Signaling | Use case |
|---|---|
| WHEP | Playback with any standard WebRTC player |
| MQTT | Peer-to-peer from anywhere, with device control |
| SFU | Many viewers at once via LiveKit or Cloudflare Realtime |
Several signaling options can run at the same time. See Signaling.
Quick Start
On a Raspberry Pi with Raspberry Pi OS Trixie (64-bit) and a CSI camera:
sudo apt update
sudo apt install libmosquitto1 pulseaudio libavformat61 libyaml-cpp0.8
wget https://github.com/mazupo/pi-webrtc/releases/latest/download/pi-webrtc_raspios-trixie-arm64.tar.gz
tar -xzf pi-webrtc_raspios-trixie-arm64.tar.gz
./pi-webrtc --camera=libcamera:0 --uid=my-pi --no-audio --use-whep
Open app.mazupo.com/whep, enter http://:8080 as the WHEP URL, and connect.
Step-by-step guides: Raspberry Pi · NVIDIA Jetson · Watch from anywhere with MQTT
Hardware
| Platform | Camera backend | Hardware encoding |
|---|---|---|
| Raspberry Pi | libcamera | H.264 on supported models |
| NVIDIA Jetson | libargus | H.264 / AV1 on supported models |
USB cameras (V4L2) and RTSP streams work on both platforms.
Documentation
📚 Full documentation, also readable in docs/.
Support the project
Sponsors help fund continued development and receive access to additional releases, features, and documentation. See Sponsors.