AlexxIT/WebRTC sits at 2.2k stars on GitHub, written primarily in JavaScript. Home Assistant custom component for real-time viewing of almost any camera stream using WebRTC and other technologies.
Snapshot summary built from the project's own GitHub metadata — there's no written TopGit review yet. The page will update automatically when a full review is published.
WHY NO REVIEW YET
TopGit writes full reviews for the most-starred, most-requested repositories. This page is a snapshot until then — see the READ ME tab for the original README in full.
Home Assistant custom component for real-time viewing of almost any camera stream using WebRTC and other technologies.
Starting with version 3 the streaming server has been changed from RTSPtoWebRTC to go2rtc.
go2rtc
Installation
Configuration
Custom card
Templates
Two-way audio
Snapshots to Telegram
Cast or share stream
Stream to camera
FAQ
Debug
Known work cameras
go2rtc
This component uses the go2rtc application as a streaming server:
lowest possible streaming latency for many supported protocols
streaming from RTSP, RTMP, HTTP (FLV/MJPEG/JPEG), HomeKit cameras, USB cameras and other sources
streaming to RTSP, WebRTC, MSE/MP4 or MJPEG
support popular codec H264/H265, AAC, PCMU/PCMA, OPUS
on-the-fly transcoding for unsupported codecs via FFmpeg
autoselect streaming technology based on stream codecs, browser capabilities, network configuration
Read more in the go2rtc docs!
You can install go2rtc in several ways:
Basic users - this component will automatically download and run the latest version of go2rtc, you don't need to do anything yourself.
Advanced users - install the go2rtc or Frigate 12+ add-on.
Hakers - install go2rtc as binary or Docker on any server in LAN.
You can change the go2rtc settings by adding the go2rtc.yaml file to your Hass configuration folder.
Important. go2rtc runs its own web interface on port 1984 without a password. There you can see a list of active camera streams. Anyone on your LAN can access them without a password. You can disable this in the go2rtc config.
PS. There is also another nice card with go2rtc support - Frigate Lovelace Card.
Method 2. Manually copy webrtc folder from latest release to /config/custom_components folder.
Additional steps if you are using the UI in YAML mode: add card to resources
The custom_card will be automatically registered with the Home Assistant UI, except when you are managing the UI in YAML mode.
If you are managing the UI in YAML mode then add this to your UI resources for the custom:webrtc-camera card to work:
type: 'custom:webrtc-camera'
url: 'camera1' # stream name from go2rtc.yaml
or
type: 'custom:webrtc-camera'
entity: camera.generic_stream # change to your camera entity_id
or
type: 'custom:webrtc-camera'
streams:
- url: go2rtc_stream_hd
name: HD # name is optional
mode: webrtc # mode is optional
media: video # media is optional
- url: go2rtc_stream_sd
name: SD
mode: mse
media: audio
PS. You can change the active stream by clicking on the mode label. Or by clicking on the stream name with enabled ui: true.
Full
All settings are optional! Only required setting - url or entity or streams.
type: 'custom:webrtc-camera'
url: 'rtsp://rtsp:[email protected]:554/av_stream/ch0'
entity: camera.generic_stream
mode: webrtc,webrtc/tcp,mse,hls,mjpeg # stream technology, default all of them
media: video,audio # select only video or audio track, default both
server: http://192.168.1.123:1984/ # custom go2rtc server address, default empty
ui: true # custom video controls, default false
digital_ptz: # digital zoom and pan via mouse/touch, defaults:
mouse_drag_pan: true
mouse_wheel_zoom: true
mouse_double_click_zoom: true
touch_drag_pan: true
touch_pinch_zoom: true
touch_tap_drag_zoom: true
persist: true # zoom factor and viewport position survive page reloads
# digital_ptz: false # to disable all mouse/touch digital zoom and pan
title: My super camera # optional card title
poster: https://home-assistant.io/images/cast/splash.png # still image when stream is loading
muted: true # initial mute toggle state, default is false (unmuted)
intersection: 0.75 # auto stop stream when less than 75% of video element is in the screen, 50% by default
background: true # run stream when not displayed (ex. for quick video loading), default false
shortcuts: # custom shortcuts, default none
- name: Record
icon: mdi:record-circle-outline
service: switch.toggle
service_data:
entity_id: switch.camera_record
Pan, tilt, zoom controls: PTZ config examples.
Paused by default
type: custom:webrtc-camera
poster: dahua1-snap # stream name from go2rtc.yaml (http-snapshot)
streams:
- url: '' # empty url, so only poster will be shown
- url: dahua1 # stream name from go2rtc.yaml (rtsp-stream)
PS. For Hass Mobile App ensure that you can use microphone with the built-in Assist.
Snapshots to Telegram
read more
Cast or share stream
Component support streaming to Google Cast Chromecast devices (including Android TV and Google Smart Screen). Read more in wiki.
Also component support creating a temporary or permanent link to a stream without sharing access to you Home Assistant. Read more in wiki.
Stream to camera
New in v3.1.0.
go2rtc support play audio files (ex. music or TTS) and live streams (ex. radio) on cameras with two way audio support. You need to:
Check if your camera has supported two way audio source
Setup camera stream in go2rtc.yaml config
Check audio codec, that your camera supports
Create virtual Media Players for your cameras in configuration.yaml:
media_player:
- platform: webrtc
name: Dahua Camera
stream: dahua
audio: pcmu/48000
- platform: webrtc
name: Tapo Camera
stream: tapo
audio: pcma
FAQ
Q. Exernal access with WebRTC doesn't work
A. Read more and don't create new issues.
Q. Audio doesn't work
A. Check what audio codec your camera outputs. And what technology do you use to watch videos. Different technologies support different codecs.
Not working yet, something similar to rtsp://admin:[email protected]:554/live/main or rtsp://192.168.0.207:554/live/main?username=admin&password=123456
Copy the rtsps link from the camera's settings in Unifi Protect, but change the link to rstp:// (it defaults to rstps://), change the port to 7447, and remove any query params
The most recent commit recorded on AlexxIT/WebRTC was 8 months ago, based on the GitHub push timestamp. The repository has 235 forks — one of the better signals of community interest.
How many stars does AlexxIT/WebRTC have?
AlexxIT/WebRTC has 2.2k GitHub stars — refresh the page for the live number, or check github.com/AlexxIT/WebRTC. TopGit mirrors GitHub's count but does not claim minute-by-minute accuracy.
What language is AlexxIT/WebRTC written in?
AlexxIT/WebRTC is written primarily in JavaScript. GitHub's language field is based on the largest share of bytes in the default branch.
What topics is AlexxIT/WebRTC associated with?
GitHub's repository topics for AlexxIT/WebRTC: "hacs", "home-assistant", "ip-camera", "mediasource-extensions", "rtsp", "webrtc". TopGit's editorial category is open-source.
Where do I read more about AlexxIT/WebRTC?
This TopGit page is a snapshot — the READ ME tab shows the project's own README content (links stripped, images preserved). The GitHub repository at github.com/AlexxIT/WebRTC is the definitive source.
Read full README in the tab above.
Want a second opinion on WebRTC?
Ask an AI that can read this page — one click and you get its take on WebRTC.