GithubHelp home page GithubHelp logo

estilo-pampa / security Goto Github PK

View Code? Open in Web Editor NEW

This project forked from alexxit/webrtc

0.0 0.0 0.0 313 KB

Home Assistant custom component for viewing almost any camera stream in real time using WebRTC and other technologies.

Home Page: https://github.com/AlexxIT/Blog

JavaScript 58.78% Python 39.31% HTML 1.91%

security's Introduction

WebRTC Camera

hacs_badge

Home Assistant custom component for viewing almost any camera stream in real time using WebRTC and other technologies.

Starting with version 3 the streaming server has been changed from RTSPtoWebRTC to go2rtc.


go2rtc

This component uses the go2rtc application as 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:

  1. Basic users - this component will automatically download and run the latest version of go2rtc, you don't need to do anything yourself.
  2. Advanced users - install the go2rtc or Frigate 12+ add-on.
  3. 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 streams from cameras. And anyone on your LAN can access them without password. You can disable this in the go2rtc config.

Installation

Method 1. HACS > Integrations > Plus > WebRTC > Install

Method 2. Manually copy webrtc folder from latest release to /config/custom_components folder.

Configuration

Settings > Devices & Services > Add Integration > WebRTC

If the integration is not in the list, you need to clear the browser cache.

Component doesn't create devices and entities. It creates only two services and lovelace custom card.

Custom card

As a url you can use any protocol supported in go2rtc or specify the stream name from the go2rtc config.
As a entity you can use almost any camera from Hass.

Minimal

type: 'custom:webrtc-camera'
url: 'rtsp://rtsp:[email protected]:554/av_stream/ch0'

or

type: 'custom:webrtc-camera'
entity: camera.generic_stream  # change to your camera entity_id

Full

type: 'custom:webrtc-camera'
url: 'rtsp://rtsp:[email protected]:554/av_stream/ch0'

ui: true  # custom video controls, default false
title: My super camera  # optional card title
poster: https://home-assistant.io/images/cast/splash.png  # still image when stream is loading
muted: true  # disable sound, default false

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

mode: webrtc,mse,mp4,mjpeg

Pan, tilt, zoom controls: PTZ config examples.

Video aspect ratio issue

style: "video {aspect-ratio: 16/9; object-fit: fill;}"

Video rotation

  1. On client (free CPU):
style: 'video {transform: rotate(90deg); aspect-ratio: 1}'
  1. On server - FFmpeg transcoding (high CPU cost)

Shortcuts position

style: ".shortcuts {left: unset; top: 25px; right: 5px; display: flex; flex-direction: column}"

Hide mode label

style: '.mode {display: none}'

Move mode label

style: '.header {bottom: 6px} .mode {position: absolute; bottom: 0px}'

Move header line

style: '.header {top: unset; bottom: 6px}'

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

go2rtc support play audio files (ex. music or TTS) and live streams (ex. radio) on cameras with two way audio support. You need to:

  1. Check if your camera has supported two way audio source
  2. Setup camera stream in go2rtc.yaml config
  3. Check audio codec, that your camera supports
  4. 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.

Q. External access on the iPhone not in real time
A. The iPhone browser does not support modern web technologies. It's hard to believe, but it's true. If you haven't setup external access for WebRTC - you will get a chopped stream of keyframes in MP4 format.

Q. Stream in macOS app not in real time
A. Support for modern web technologies is blocked in the macOS app. You will get a chopped stream of keyframes in MP4 format.

Debug

Add to your configuration.yaml:

logger:
  default: warning
  logs:
    custom_components.webrtc: debug

Known work cameras

Brand Models Comment
ActiveCam AC-D2121IR3
ActiveCam AC-D7121IR1W support sound
Android IP Webcam Pro support sound, rtsp://192.168.1.123:8080/h264_ulaw.sdp
Dahua DH-IPC-HDPW1431FP-AS-0280B, VTO2211G-P support sound
Dahua VTO2202F-P-S2 read more
EZVIZ C3S rtsp://admin:[email protected]:554/h264/ch01/main/av_stream and /h264/ch01/sub/av_stream
EZVIZ C3W, C3WN, C6CN, C6T rtsp://admin:[email protected]:554/h264_stream
EZVIZ C8C rtsp://admin:[email protected]:554/channel80
Foscam C1 rtsp://user:[email protected]:554/videoMain
Foscam C2M, R2M rtsp://user:[email protected]:88/videoMain
GW Security GW5088IP rtsp://192.168.1.123:554/mpeg4cif?username=admin&password=123456
GW Security GW5078IP rtsp://192.168.1.123:554/stream0?username=admin&password=123456
GW Security GW5071IP 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
Hikvision DS-2CD2T47G1-L, DS-2CD1321-I, DS-2CD2143G0-IS rtsp://user:[email protected]:554/ISAPI/Streaming/Channels/102
Hikvision IPC-HDW3849H-AS-PV, IPC-EW5531-AS wired to nvr DHI-NVR2108HS-8P-I using custom component
QNAP QUSBCam2 rtsp://username:[email protected]:554/channel1 docs
Raspberry Pi PiCam read more
Reolink RLC-410, RLC-410W, RLC-510WA, E1 Pro, E1 Zoom, 4505MP RLC-510WA support sound, E1 Zoom support sound, PTZ and zoom
Reolink E1 rtsp://admin:[email protected]:554/h264Preview_01_main
Sonoff GK-200MP2-B support sound and PTZ, rtsp://rtsp:[email protected]:554/av_stream/ch0 and /av_stream/ch1
SriHome SH035 rtsp://192.168.xxx.xxx:8554/profile0 and /profile1 and /profile2
TP-Link Tapo C100/C200/C310 rtsp://user:[email protected]:554/stream1 and /stream2
Unifi G4 Dome, G3 Bullet, G3 Flex
Wyze Cam v2/v3, Cam Pan v1/v2 support sound
Xiaomi Dafang with hack, rtsp://192.168.1.123:8554/unicast
Video: H264, size: 1920x1080, bitrate: 1000, format: VBR, frame rate: 10
Audio: PCMU, rate in: 8000, rate out: 44100
Yi Hi3518e Chipset with hack
Yi MStar Infinity Chipset with hack

security's People

Contributors

airens avatar ajediiam avatar alexxit avatar amitkeret avatar anonym-tsk avatar barma-lej avatar bberg115 avatar devbis avatar dtalens avatar felipecrs avatar genkaok avatar guix77 avatar idoaflalo avatar iswitch avatar jimcortez avatar johnonolan avatar jonogould avatar kj4dxk avatar krystiancharubin avatar leandroissa avatar lukaszp2 avatar mabusdogma avatar mincka avatar nagyrobi avatar nikitakorneev avatar sheasmith avatar sian-lee-sa avatar skrobul avatar webcredo avatar wrt54g avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.