← Open Source
mazupo

pi-webrtc

Low-latency hardware-accelerated WebRTC video streaming and remote control for Raspberry Pi & NVIDIA Jetson.

AI EngineeringMake agent see hear talkC++
Open on GitHub
Momentum
+0stars in 24 hours0.0%
996
Stars
60
Forks
+3
This week
3
Contributors
Created 2022-05-09 · Updated 2026-10-14 · #11988 today
Top developers
TzuHuanTaithomergilKevinXuxuxu
README

pi-webrtc

[![WebRTC Version](https://img.shields.io/badge/libwebrtc-m147.7727-red.svg)](https://chromium.googlesource.com/external/webrtc/+/branch-heads/7727)
 ![Download](https://img.shields.io/github/downloads/mazupo/pi-webrtc/total.svg?color=yellow) 
 ![](https://img.shields.io/badge/C%2B%2B-20-brightgreen?logo=cplusplus) 
 ![Release](https://img.shields.io/github/v/release/mazupo/pi-webrtc?color=blue) 
[![License Apache](https://img.shields.io/badge/License-Apache_2.0-purple.svg)](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.

▶ Watch the full demo

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.

License

Apache-2.0 — see LICENSE. Third-party notices: see NOTICE.

Nearby in the ranking
Similar items