Ultimative Kamera-Streaming-Anwendung mit Unterstützung für RTSP, WebRTC, HomeKit, FFmpeg, RTMP usw.
Kleine App ohne Abhängigkeiten und ohne Konfiguration für alle Betriebssysteme (Windows, macOS, Linux, ARM)
Nullverzögerung für viele unterstützte Protokolle (geringstmögliche Streaming-Latenz)
Streaming von RTSP, RTMP, DVRIP, HTTP (FLV/MJPEG/JPEG/TS), USB-Kameras und anderen Quellen
Streaming von beliebigen Quellen, unterstützt von FFmpeg
Streaming zu RTSP, WebRTC, MSE/MP4, HomeKit HLS oder MJPEG
Veröffentlichen Sie jede Quelle auf beliebten Streaming-Diensten (YouTube, Telegram usw.)
erstes Projekt der Welt mit Unterstützung für Streaming von HomeKit-Kameras
Unterstützung von H265 für WebRTC im Browser (nur Safari, mehr erfahren)
On-the-Fly-Transkodierung für nicht unterstützte Codecs über FFmpeg
Spielen Sie Audiodateien und Live-Streams auf einigen Kameras mit Lautsprecher ab
Aushandlung von 2-Wege-Codecs mit mehreren Quellen
Mischen von Tracks aus verschiedenen Quellen zu einem einzigen Stream
Vom Client unterstützte Codecs automatisch anpassen
2-Wege-Audio für einige Kameras
Streaming aus privaten Netzwerken über ngrok
kann in jede Smart-Home-Plattform integriert oder als eigenständige App verwendet werden
Inspiriert von:
Reihe von Streaming-Projekten von @deepch
webrtc go-Bibliothek und das gesamte @pion-Team
RTSP-Simple-Server-Idee von @aler9
Idee der GStreamer-Framework-Pipeline
Idee für das MediaSoup-Framework-Routing
HomeKit-Zubehörprotokoll von @brutella
Schöpfer des Projektlogos @v_novoseltsev
Schneller Start
go2rtc: Binär
go2rtc: Docker
go2rtc: Home Assistant-Add-on
go2rtc: Home Assistant-Integration
go2rtc: Dev-Version
Konfiguration
Zwei-Wege-Audio
Quelle: RTSP
Quelle: RTMP
Quelle: HTTP
Quelle: ONVIF
Quelle: FFmpeg
Quelle: FFmpeg-Gerät
Quelle: Exec
Quelle: Echo
Quelle: Expr
Quelle: HomeKit
Quelle: Blase
Quelle: DVRIP
Quelle: Tapo
Quelle: Kasa
Quelle: GoPro
Quelle: Ivideon
Quelle: Hass
Quelle: ISAPI
Quelle: Nest
Quelle: Roborock
Quelle: WebRTC
Quelle: WebTorrent
Eingehende Quellen
Zur Kamera streamen
Stream veröffentlichen
Modul: Streams
Modul: API
Modul: RTSP
Modul: RTMP
Modul: WebRTC
Modul: HomeKit
Modul: WebTorrent
Modul: ngrok
Modul: Hass
Modul: MP4
Modul: HLS
Modul: MJPEG
Modul: Protokoll
Sicherheit
Codecs-Filter
Codecs-Wahnsinn
Codecs-Aushandlung
Projekte mit go2rtc
Kameraerlebnis
TIPPS
FAQ
Laden Sie die Binärdatei herunter oder verwenden Sie das Docker- oder Home Assistant-Add-on oder die Integration
Öffnen Sie die Weboberfläche: http://localhost:1984/
Optional:
Fügen Sie Ihre Streams zur Konfigurationsdatei hinzu
Richten Sie den externen Zugriff auf webrtc ein
Entwickler:
Schreiben Sie Ihr eigenes Webinterface
Integrieren Sie die Web-API in Ihre Smart-Home-Plattform
Laden Sie die Binärdatei für Ihr Betriebssystem aus der neuesten Version herunter:
go2rtc_win64.zip
– Windows 10+ 64-Bit
go2rtc_win32.zip
– Windows 7+ 32-Bit
go2rtc_win_arm64.zip
– Windows ARM 64-Bit
go2rtc_linux_amd64
– Linux 64-Bit
go2rtc_linux_i386
– Linux 32-Bit
go2rtc_linux_arm64
– Linux ARM 64-Bit (z. B. Raspberry 64-Bit-Betriebssystem)
go2rtc_linux_arm
– Linux ARM 32-Bit (z. B. Raspberry 32-Bit-Betriebssystem)
go2rtc_linux_armv6
– Linux ARMv6 (für alte Raspberry 1 und Zero)
go2rtc_linux_mipsel
– Linux MIPS (z. B. Xiaomi Gateway 3, Wyze-Kameras)
go2rtc_mac_amd64.zip
– macOS 10.13+ Intel 64-Bit
go2rtc_mac_arm64.zip
– macOS ARM 64-Bit
Vergessen Sie nicht, die Rechte chmod +x go2rtc_xxx_xxx
unter Linux und Mac zu korrigieren.
Der Docker-Container alexxit/go2rtc
unterstützt mehrere Architekturen, einschließlich amd64
, 386
, arm64
und arm
. Dieser Container bietet die gleiche Funktionalität wie das Home Assistant Add-on, ist jedoch so konzipiert, dass er unabhängig vom Home Assistant funktioniert. Es ist mit FFmpeg, ngrok und Python vorinstalliert.
Add-On installieren:
Einstellungen > Add-ons > Plus > Repositorys > Hinzufügen https://github.com/AlexxIT/hassio-addons
go2rtc > Installieren > Starten
Setup-Integration
Die benutzerdefinierte WebRTC-Kamerakomponente kann in jeder Home Assistant-Installation verwendet werden, einschließlich HassWP unter Windows. Es kann automatisch die neueste Version von go2rtc herunterladen und verwenden. Oder es kann eine Verbindung zu einer vorhandenen Version von go2rtc herstellen. Die Add-on-Installation ist in diesem Fall optional.
Neueste, aber möglicherweise instabile Version:
Binär: neueste nächtliche Veröffentlichung
Docker: alexxit/go2rtc:master
oder alexxit/go2rtc:master-hardware
Hass-Add-on: go2rtc master
oder go2rtc master hardware
Standardmäßig durchsucht go2rtc go2rtc.yaml
im aktuellen Arbeitsverzeichnis
api
-Server wird auf dem Standardport 1984 (TCP) gestartet.
rtsp
-Server wird am Standardport 8554 (TCP) gestartet.
webrtc
verwendet Port 8555 (TCP/UDP) für Verbindungen
ffmpeg
verwendet Standard-Transkodierungsoptionen
Konfigurationsmöglichkeiten und eine vollständige Liste der Einstellungen finden Sie im Wiki.
Verfügbare Module:
Ströme
api – HTTP-API (wichtig für WebRTC-Unterstützung)
rtsp – RTSP-Server (wichtig für FFmpeg-Unterstützung)
webrtc – WebRTC-Server
mp4 – MSE, MP4-Stream und MP4-Snapshot-Server
hls – HLS TS- oder fMP4-Stream-Server
mjpeg – MJPEG-Server
ffmpeg – FFmpeg-Integration
ngrok – ngrok-Integration (externer Zugriff für privates Netzwerk)
hass – Home Assistant-Integration
log – Protokollkonfiguration
go2rtc unterstützt verschiedene Stream-Quellentypen. Sie können einen oder mehrere Links beliebiger Art als Streamquelle konfigurieren.
Verfügbare Quellentypen:
rtsp – RTSP
und RTSPS
Kameras mit Zwei-Wege-Audio-Unterstützung
rtmp – RTMP
Streams
http – HTTP-FLV
, MPEG-TS
, JPEG
(Schnappschüsse), MJPEG
Streams
onvif – Erhalten Sie RTSP
Link der Kamera und den Snapshot-Link mithilfe des ONVIF
-Protokolls
ffmpeg – FFmpeg-Integration ( HLS
, files
und viele andere)
ffmpeg:device – lokale USB-Kamera oder Webcam
exec – Medien aus der externen App-Ausgabe abrufen
echo – Stream-Link von Bash oder Python abrufen
expr – Stream-Link über integrierte Ausdruckssprache abrufen
Homekit – Streaming von der HomeKit-Kamera
Blase – Streaming von ESeeCloud/dvr163 NVR
dvrip – Streaming vom DVR-IP NVR
tapo – TP-Link Tapo-Kameras mit Zwei-Wege-Audio-Unterstützung
kasa – TP-Link Kasa-Kameras
gopro - GoPro-Kameras
ivideon – öffentliche Kameras vom Ivideon-Dienst
hass – Home Assistant-Integration
isapi – Zwei-Wege-Audio für Hikvision-Kameras (ISAPI).
Roborock – Roborock-Staubsauger mit Kameras
webrtc – WebRTC/WHEP-Quellen
webtorrent – WebTorrent-Quelle von einem anderen go2rtc
Lesen Sie mehr über eingehende Quellen
Unterstützt für Quellen:
RTSP-Kameras mit ONVIF Profile T (Rückkanalverbindung)
DVRIP-Kameras
TP-Link Tapo-Kameras
Hikvision ISAPI-Kameras
Roborock saugt Modelle mit Kamera
Audio auf dem Server ausführen
Jeder Browser als IP-Kamera
Zwei-Wege-Audio kann im Browser mit WebRTC-Technologie verwendet werden. Der Browser gewährt Zugriff auf das Mikrofon nur für HTTPS-Sites (weiterlesen).
go2rtc unterstützt auch die Wiedergabe von Audiodateien und Live-Streams auf diesen Kameras.
Streams: sonoff_camera: rtsp://rtsp:[email protected]/av_stream/ch0 dahua_camera: - rtsp://admin:[email protected]/cam/realmonitor?channel=1&subtype=0&unicast=true&proto=Onvif- rtsp://admin:[email protected]/cam/realmonitor?channel=1&subtype=1 amcrest_doorbell: - rtsp://username:[email protected]:554/cam/realmonitor?channel=1&subtype=0#backchannel=0 unifi_camera: rtspx://192.168.1.123:7441/fD6ouM72bWoFijxK glichy_camera: ffmpeg:rtsp://username:[email protected]/live/ch00_1
Empfehlungen
Benutzer von Amcrest Doorbell möchten möglicherweise die Zwei-Wege-Audiofunktion deaktivieren, da bei einem aktiven Stream die Anruftaste nicht funktioniert. Sie müssen #backchannel=0
am Ende Ihres RTSP-Links in der YAML-Konfigurationsdatei hinzufügen
Benutzer der Dahua-Türklingel möchten möglicherweise den Backchannel-Audiocodec ändern
Reolink -Benutzer möchten möglicherweise das RTSP-Protokoll überhaupt NICHT verwenden, da einige Kameramodelle eine sehr schreckliche, unbrauchbare Stream-Implementierung haben
Benutzer von Ubiquiti UniFi möchten möglicherweise die HTTPS-Überprüfung deaktivieren. Verwenden Sie das Präfix rtspx://
anstelle von rtsps://
. Und verwenden Sie nicht das Suffix ?enableSrtp
Benutzer von TP-Link Tapo können Login und Passwort überspringen, da go2rtc die Anmeldung ohne diese unterstützt
Wenn Ihre Kamera über zwei RTSP-Links verfügt, können Sie beide als Quellen hinzufügen. Dies ist nützlich, wenn Streams unterschiedliche Codecs haben, z. B. AAC-Audio mit Hauptstream und PCMU/PCMA-Audio mit zweitem Stream
Wenn der Stream von Ihrer Kamera fehlerhaft ist, versuchen Sie es mit der ffmpeg-Quelle. Wenn Sie keine Transkodierung verwenden, wird die CPU-Last nicht erhöht
Wenn der Stream von Ihrer Kamera sehr fehlerhaft ist, versuchen Sie, die Transkodierung mit der ffmpeg-Quelle zu verwenden
Andere Optionen
Format: rtsp...#{param1}#{param2}#{param3}
Benutzerdefiniertes Timeout hinzufügen #timeout=30
(in Sekunden)
Audio ignorieren – #media=video
oder Video ignorieren – #media=audio
Ignorieren Sie die Zwei-Wege-Audio-API #backchannel=0
– wichtig für einige fehlerhafte Kameras
Verwenden Sie den WebSocket-Transport #transport=ws...
RTSP über WebSocket
Streams: # WebSocket mit Autorisierung, RTSP - ohne Achse-rtsp-ws: rtsp://192.168.1.123:4567/axis-media/media.amp?overview=0&camera=1&resolution=1280x720&videoframeskipmode=empty&Axis-Orig-Sw=true#transport=ws://user:[email protected]:4567/ rtsp-over-websocket # WebSocket ohne Autorisierung, RTSP - mit dahua-rtsp-ws: rtsp://user:[email protected]/cam/realmonitor?channel=1&subtype=1&proto=Private3#transport=ws://192.168.1.123/rtspoverwebsocket
Sie können Streams von einem RTMP-Server, beispielsweise Nginx, mit dem Nginx-RTMP-Modul abrufen.
Streams: rtmp_stream: rtmp://192.168.1.123/live/camera1
Unterstützen Sie den Inhaltstyp:
HTTP-FLV ( video/x-flv
) – wie RTMP, aber über HTTP
HTTP-JPEG ( image/jpeg
) – Link zum Kamera-Schnappschuss, kann von go2rtc in einen MJPEG-Stream konvertiert werden
HTTP-MJPEG ( multipart/x
) – einfacher MJPEG-Stream über HTTP
MPEG-TS ( video/mpeg
) – älteres Streaming-Format
Source unterstützt auch HTTP- und TCP-Streams mit automatischer Erkennung für verschiedene Formate: MJPEG , H.264/H.265 Bitstream , MPEG-TS .
Streams: # [HTTP-FLV]-Stream im Video/X-FLV-Format http_flv: http://192.168.1.123:20880/api/camera/stream/780900131155/657617 # [JPEG]-Schnappschüsse von der Dahua-Kamera werden in einen MJPEG-Stream konvertiert dahua_snap: http://admin:[email protected]/cgi-bin/snapshot.cgi?channel=1 # [MJPEG]-Stream wird ohne Änderung weitergeleitet http_mjpeg: https://mjpeg.sanford.io/count.mjpeg # [MJPEG oder H.264/H.265 Bitstream oder MPEG-TS] tcp_magic: tcp://192.168.1.123:12345 # Benutzerdefinierten Header hinzufügen custom_header: „https://mjpeg.sanford.io/count.mjpeg#header=Autorisierung: Inhaber XXX“
PS. Bei der Dahua-Kamera liegt ein Fehler vor: Wenn Sie den MJPEG-Codec für den zweiten RTSP-Stream auswählen, funktioniert der Schnappschuss nicht.
Neu in v1.5.0
Die Quelle ist nicht sehr nützlich, wenn Sie bereits RTSP- und Snapshot-Links für Ihre Kamera kennen. Aber es kann nützlich sein, wenn Sie es nicht tun.
WebUI > Webseitenunterstützung für ONVIF-Autodiscovery hinzufügen . Ihr Server muss sich im selben Subnetz wie die Kamera befinden. Wenn Sie Docker verwenden, müssen Sie „Network Host“ verwenden.
Streams: dahua1: onvif://admin:[email protected] reolink1: onvif://admin:[email protected]:8000 tapo1: onvif://admin:[email protected]:2020
Sie können jeden Stream, jede Datei oder jedes Gerät über FFmpeg abrufen und an go2rtc übertragen. Die App startet FFmpeg automatisch mit den richtigen Argumenten, wenn jemand beginnt, den Stream anzusehen.
FFmpeg für Docker- und Hass-Add-on -Benutzer verfügbar
Benutzer des Hass-Add-ons können auf Dateien aus dem Ordner /media zugreifen
Format: ffmpeg:{input}#{param1}#{param2}#{param3}
. Beispiele:
Streams: # [DATEI] Alle Titel werden ohne Transkodierungscodecs kopiert Datei1: ffmpeg:/media/BigBuckBunny.mp4 # [DATEI]-Video wird in H264 transkodiert, Audio wird übersprungen Datei2: ffmpeg:/media/BigBuckBunny.mp4#video=h264 # [DATEI] Video wird kopiert, Audio wird in PCMU transkodiert Datei3: ffmpeg:/media/BigBuckBunny.mp4#video=copy#audio=pcmu # [HLS]-Video wird kopiert, Audio wird übersprungen hls: ffmpeg:https://devstreaming-cdn.apple.com/videos/streaming/examples/bipbop_16x9/gear5/prog_index.m3u8#video=copy # [MJPEG]-Video wird in H264 transkodiert mjpeg: ffmpeg:http://185.97.122.128/cgi-bin/faststream.jpg#video=h264 # [RTSP]-Video mit Rotation, sollte transkodiert werden, also H264 auswählen drehen: ffmpeg:rtsp://rtsp:[email protected]/av_stream/ch0#video=h264#rotate=90
Alle Trascoding-Formate verfügen über integrierte Vorlagen: h264
, h265
, opus
, pcmu
, pcmu/16000
, pcmu/48000
, pcma
, pcma/16000
, pcma/48000
, aac
, aac/16000
.
Sie können sie jedoch über die YAML-Konfiguration überschreiben. Sie können der Konfiguration auch Ihre eigenen Formate hinzufügen und diese mit Quellparametern verwenden.
ffmpeg: bin: ffmpeg # Pfad zur ffmpeg-Binärdatei h264: „-codec:v libx264 -g:v 30 -preset:v superfast -tune:v Zerolatency -profile:v main -level:v 4.1“ mycodec: „-alle Argumente, die von ffmpeg unterstützt werden …“ myinput: „-fflags nobuffer -flags low_delay -timeout 5000000 -i {input}“ myraw: „-ss 00:00:20“
Sie können den Namen des go2rtc-Streams als ffmpeg-Eingabe verwenden (z. B. ffmpeg:camera1#video=h264
).
Sie können video
und audio
mehrmals verwenden (z. B. #video=copy#audio=copy#audio=pcmu
).
Sie können rotate
mit den Werten 90
, 180
, 270
oder -90
verwenden, was bei der Transkodierung wichtig ist (z. B. #video=h264#rotate=90
).
Sie können width
und/oder height
verwenden, was bei der Transkodierung wichtig ist (z. B. #video=h264#width=1280
).
Sie können drawtext
verwenden, um einen Zeitstempel hinzuzufügen (z. B. drawtext=x=2:y=2:fontsize=12:fontcolor=white:box=1:boxcolor=black
).
Dadurch wird die CPU des Servers auch bei Hardwarebeschleunigung erheblich erhöht
Sie können raw
param für alle zusätzlichen FFmpeg-Argumente verwenden (z. B. #raw=-vf transpose=1
).
Sie können input
verwenden, um die Standardeingabevorlage zu überschreiben (z. B. #input=rtsp/udp
ändert den RTSP-Transport von TCP in UDP+TCP).
Sie können einen rohen Eingabewert verwenden (z. B. #input=-timeout 5000000 -i {input}
).
Sie können Ihre eigenen Eingabevorlagen hinzufügen
Lesen Sie mehr über Hardwarebeschleunigung.
PS. Es wird empfohlen, die verfügbare Hardware auf der WebUI-Hinzufügenseite zu überprüfen.
Sie können Videos von jeder USB-Kamera oder Webcam als RTSP- oder WebRTC-Stream abrufen. Dies ist Teil der FFmpeg-Integration.
Überprüfen Sie die verfügbaren Geräte in der Weboberfläche
video_size
und framerate
müssen von Ihrer Kamera unterstützt werden!
Für Linux wird derzeit nur Video unterstützt
Für macOS können Sie die Facetime-Kamera oder den gesamten Desktop streamen!
Für macOS ist es wichtig, die richtige Framerate einzustellen
Format: ffmpeg:device?{input-params}#{param1}#{param2}#{param3}
Streams: linux_usbcam: ffmpeg:device?video=0&video_size=1280x720#video=h264 windows_webcam: ffmpeg:device?video=0#video=h264 macos_facetime: ffmpeg:device?video=0&audio=1&video_size=1280x720&framerate=30#video=h264#audio=pcma
PS. Es wird empfohlen, die verfügbaren Geräte auf der Seite „Hinzufügen“ der WebUI zu überprüfen.
Die Exec-Quelle kann jede externe Anwendung ausführen und Daten von ihr erwarten. Es werden zwei Transporte unterstützt: Pipe ( ab v1.5.0 ) und RTSP .
Wenn Sie den RTSP -Transport verwenden möchten, muss der Befehl an beliebiger Stelle das Argument {output}
enthalten. Beim Start wird sie durch die lokale Adresse des RTSP-Servers ersetzt.
Pipe liest Daten aus der Standardausgabe der App in verschiedenen Formaten: MJPEG , H.264/H.265 Bitstream , MPEG-TS . Außerdem kann Pipe Daten in zwei Formaten in die App stdin schreiben: PCMA und PCM/48000 .
Die Quelle kann verwendet werden mit:
FFmpeg – go2rtc ffmpeg-Quelle, nur eine Verknüpfung zur Exec-Quelle
FFplay – Audio auf Ihrem Server abspielen
GStreamer
Raspberry Pi-Kameras
jede eigene Software
Pipe-Befehle unterstützen Parameter (Format: exec:{command}#{param1}#{param2}
):
killsignal
– Signal, das gesendet wird, um den Prozess zu stoppen (numerische Form)
killtimeout
– Zeit in Sekunden für die erzwungene Beendigung mit Sigkill
backchannel
– Rückkanal für Zwei-Wege-Audio aktivieren
Streams: Stream: exec:ffmpeg -re -i /media/BigBuckBunny.mp4 -c copy -rtsp_transport tcp -f rtsp {output} picam_h264: exec:libcamera-vid -t 0 --inline -o - picam_mjpeg: exec:libcamera-vid -t 0 --codec mjpeg -o - pi5cam_h264: exec:libcamera-vid -t 0 --libav-format h264 -o - Canon: exec:gphoto2 --capture-movie --stdout#killsignal=2#killtimeout=5 play_pcma: exec:ffplay -fflags nobuffer -f alaw -ar 8000 -i -#backchannel=1 play_pcm48k: exec:ffplay -fflags nobuffer -f s16be -ar 48000 -i -#backchannel=1
Einige Quellen verfügen möglicherweise über einen dynamischen Link. Und Sie müssen es mithilfe eines Bash- oder Python-Skripts abrufen. Ihr Skript sollte einen Link zur Quelle wiedergeben. RTSP, FFmpeg oder eine der unterstützten Quellen.
Benutzer von Docker- und Hass-Add-ons haben python3
, curl
und jq
vorinstalliert.
Schauen Sie sich Beispiele im Wiki an.
Streams: apple_hls: echo:python3 hls.py https://developer.apple.com/streaming/examples/basic-stream-osx-ios5.html
Neu in v1.8.2
Wie echo
source, verwendet jedoch die integrierte Ausdruckssprache expr (weiterlesen).
Wichtig:
Sie können HomeKit-Kameras ohne Apple-Geräte (iPhone, iPad usw.) verwenden, es handelt sich lediglich um ein weiteres Protokoll
Das HomeKit-Gerät kann nur mit einem Ökosystem gekoppelt werden. Wenn Sie es also mit einem iPhone (Apple Home) gekoppelt haben, können Sie es nicht mit Home Assistant oder go2rtc koppeln. Oder wenn Sie es mit go2rtc gekoppelt haben, können Sie es nicht mit dem iPhone koppeln
Das HomeKit-Gerät sollte sich im selben Netzwerk mit funktionierendem mDNS zwischen Gerät und go2rtc befinden
go2rtc unterstützt den Import gekoppelter HomeKit-Geräte von Home Assistant. So können Sie die HomeKit-Kamera gleichzeitig mit Hass und go2rtc verwenden. Wenn Sie Hass verwenden, empfehle ich, Geräte damit zu koppeln, damit Sie mehr Optionen haben.
Sie können das Gerät auf der HomeKit-Seite mit go2rtc koppeln. Wenn Sie Ihre Geräte nicht sehen können, laden Sie die Seite neu. Versuchen Sie auch, Ihr HomeKit-Gerät neu zu starten (ausschalten). Wenn Sie es immer noch nicht sehen können, liegt ein Problem mit mDNS vor.
Wenn Sie ein Gerät sehen, das jedoch keine Kopplungstaste hat, ist es mit einem Ökosystem gekoppelt (Apple Home, Home Assistant, HomeBridge usw.). Sie müssen das Gerät aus diesem Ökosystem löschen und es steht für die Kopplung zur Verfügung. Wenn Sie das Gerät nicht entkoppeln können, müssen Sie es zurücksetzen.
Wichtig:
HomeKit-Audio verwendet einen sehr vom Standard abweichenden AAC-ELD- Codec mit sehr vom Standard abweichenden Parametern und Spezifikationsverstößen
Audio kann in VLC
und wahrscheinlich auch in keinem anderen Player abgespielt werden
Audio sollte für die Verwendung mit MSE, WebRTC usw. transkodiert werden.
Empfohlene Einstellungen für die Verwendung der HomeKit-Kamera mit WebRTC, MSE, MP4, RTSP:
streams: aqara_g3: - hass:Camera-Hub-G3-AB12 - ffmpeg:aqara_g3#audio=aac#audio=opus
RTSP-Link mit „normalem“ Audio für jeden Player: rtsp://192.168.1.123:8554/aqara_g3?video&audio=aac
Diese Quelle befindet sich in der aktiven Entwicklung! Nur mit Aqara Camera Hub G3 getestet (sowohl EU- als auch CN-Version).
Neu in v1.6.1
Andere Namen: ESeeCloud, dvr163.
Sie können username
, password
, port
, ch
und stream
überspringen, wenn diese Standardwerte sind
Richten Sie separate Streams für verschiedene Kanäle und Streams ein
Streams: Kamera1: bubble://username:[email protected]:34567/bubble/live?ch=0&stream=0
Neu in v1.2.0
Andere Namen: DVR-IP, NetSurveillance, Sofia-Protokoll (NETsurveillance ActiveX-Plugin XMeye SDK).
Sie können username
, password
, port
, channel
und subtype
überspringen, wenn diese Standardeinstellungen sind
Richten Sie separate Streams für verschiedene Kanäle ein
Verwenden Sie subtype=0
für den Hauptstream und subtype=1
für den Extra1-Stream
Es wird nur das TCP-Protokoll unterstützt
Streams: only_stream: dvrip://username:[email protected]:34567?channel=0&subtype=0 only_tts: dvrip://username:[email protected]:34567?backchannel=1 two_way_audio: - dvrip://Benutzername:[email protected]:34567?channel=0&subtype=0- dvrip://Benutzername:[email protected]:34567?backchannel=1
Neu in v1.2.0
TP-Link Tapo proprietäres Kameraprotokoll mit Zwei-Wege-Audio- Unterstützung.
Die Stream-Qualität entspricht dem RTSP-Protokoll
Verwenden Sie das Cloud-Passwort , dies ist nicht das RTSP-Passwort! Sie müssen kein Login hinzufügen!
Sie können auch den MD5-Hash in GROSSBUCHSTABEN von Ihrem Cloud-Passwort mit admin
-Benutzernamen verwenden
Einige neue Kamera-Firmwares erfordern SHA256 anstelle von MD5
Streams: # Cloud-Passwort ohne Benutzernamen Kamera1: tapo://[email protected] # Admin-Benutzername und MD5-Cloud-Passwort-Hash in GROSSBUCHSTABEN Kamera2: tapo://admin:[email protected] # Admin-Benutzername und SHA256-Cloud-Passwort-Hash in GROSSBUCHSTABEN Kamera3: tapo://admin:[email protected]
echo -n "Cloud-Passwort" | md5 | awk '{print toupper($0)}'echo -n "Cloud-Passwort" | shasum -a 256 | awk '{print toupper($0)}'
Neu in v1.7.0
TP-Link Kasa nicht standardmäßiges Protokoll, weitere Informationen.
username
– URL-sichere E-Mail, [email protected]
-> alex%40gmail.com
password
– base64password, secret1
-> c2VjcmV0MQ==
Streams: kc401: kasa://Benutzername:[email protected]:19443/https/stream/mixed
Getestet: KD110, KC200, KC401, KC420WS, EC71.
Neu in v1.8.3
Unterstützt das Streaming von GoPro-Kameras, die über USB oder WLAN mit Linux, Mac und Windows verbunden sind. Mehr lesen.
Unterstützen Sie öffentliche Kameras vom Dienst Ivideon.
Streams: quailcam: ivideon:100-tu5dkUPct39cTp9oNEN2B6/0
Unterstützt den Import von Kamera-Links aus Home Assistant-Konfigurationsdateien:
Generische Kamera, Einrichtung über GUI
HomeKit-Kamera
ONVIF
Roborock-Staubsauger mit Kamera
hass: config: "/config" # Überspringen Sie diese Einstellung, wenn Sie das Add-on userstreams: generic_camera: hass:Camera1 # Einstellungen > Integrationen > Integrationsname verwenden aqara_g3: hass:Camera-Hub-G3-AB12
WebRTC-Kameras ( ab v1.6.0 )
Alle Kameras im WebRTC-Format werden unterstützt. Derzeit unterstützt Home Assistant jedoch nur einige Nest-Kameras in diesem Format.
Wichtig. Mit der Nest-API können Sie nur 5 Minuten lang einen Link zu einem Stream erhalten. Nicht mit Fregatte verwenden! Wenn der Stream abläuft, verbraucht Frigate innerhalb von Sekunden den gesamten verfügbaren RAM auf Ihrem Computer. Es wird empfohlen, die Nest-Quelle zu verwenden – sie unterstützt die Erweiterung des Streams.
Streams: # Link zu Home Assistant Supervised hass-webrtc1: hass://supervisor?entity_id=camera.nest_doorbell # Link zu externem Hass mit langlebigen Zugriffstoken hass-webrtc2: hass://192.168.1.123:8123?entity_id=camera.nest_doorbell&token=eyXYZ...
RTSP-Kameras
Standardmäßig lässt die Home Assistant-API keinen dynamischen RTSP-Link zu einem Kamerastream zu. Mit dieser Methode können also auch weitere Kameras wie Tuya und möglicherweise auch andere importiert werden.
Neu in v1.3.0
Dieser Quelltyp unterstützt nur Backchannel-Audio für das Hikvision ISAPI-Protokoll. Daher sollte es als zweite Quelle zusätzlich zum RTSP-Protokoll verwendet werden.
Streams: hikvision1: - rtsp://admin:[email protected]:554/Streaming/Channels/101- isapi://admin:[email protected]:80/
Neu in v1.6.0
Derzeit werden nur WebRTC-Kameras unterstützt.
Der Einfachheit halber wird empfohlen, die Nest/WebRTC-Kamera mit dem Home Assistant zu verbinden. Aber wenn Sie die folgenden Parameter irgendwie erhalten können, funktioniert die Nest/WebRTC-Quelle ohne Hass.
Streams: Nest-Türklingel: Nest:?client_id=***&client_secret=***&refresh_token=***&project_id=***&device_id=***
Neu in v1.3.0
Dieser Quellentyp unterstützt Roborock-Staubsauger mit Kameras. Bekannte Arbeitsmodelle:
Roborock S6 MaxV – nur Video (der Staubsauger hat kein Mikrofon)
Roborock S7 MaxV – Video und Zwei-Wege-Audio
Roborock Qrevo MaxV – Video und Zwei-Wege-Audio
Quellunterstützung lädt Roborock-Anmeldeinformationen von der benutzerdefinierten Home Assistant-Integration oder der Kernintegration. Andernfalls müssen Sie sich bei Ihrem Roborock-Konto anmelden (MiHome-Konto wird nicht unterstützt). Gehen Sie zu: go2rtc WebUI > Webseite hinzufügen. Kopieren Sie roborock://...
für Ihr Vakuum und fügen Sie sie in go2rtc.yaml
-Konfiguration ein.
Wenn Sie einen Grafik-Pin für Ihren Staubsauger haben, fügen Sie ihn als numerischen Pin (Zeilen: 123, 456, 789) am Ende des Roborock-Links hinzu.
Neu in v1.3.0
Dieser Quelltyp unterstützt vier Verbindungsformate.
pfui
WebRTC/WHEP – wird durch den WebRTC/WISH-Standard für WebRTC-Video-/Audio-Viewer ersetzt. Es kann jedoch sein, dass es in mancher Software von Drittanbietern bereits unterstützt wird. Es wird in go2rtc unterstützt.
go2rtc
Dieses Format wird nur in go2rtc unterstützt. Im Gegensatz zu WHEP unterstützt es asynchrone WebRTC-Verbindungen und Zwei-Wege-Audio.
openipc ( ab v1.7.0 )
Unterstützt die Verbindung zu OpenIPC-Kameras.
wyze ( ab v1.6.1 )
Unterstützt die Verbindung mit Wyze-Kameras über das WebRTC-Protokoll. Sie können das Docker-Wyze-Bridge-Projekt verwenden, um Verbindungsanmeldeinformationen abzurufen.
Kinesis ( ab v1.6.1 )
Unterstützt Amazon Kinesis-Videostreams mithilfe des WebRTC-Protokolls. Sie müssen die signalisierende WebSocket-URL mit allen Anmeldeinformationen in den Abfrageparametern, client_id
und ice_servers
-Liste im JSON-Format angeben.
Streams: webrtc-whep: webrtc:http://192.168.1.123:1984/api/webrtc?src=camera1 webrtc-go2rtc: webrtc:ws://192.168.1.123:1984/api/ws?src=camera1 webrtc-openipc: webrtc:ws://192.168.1.123/webrtc_ws#format=openipc#ice_servers=[{"urls":"stun:stun.kinesisvideo.eu-north-1.amazonaws.com:443"}] webrtc-wyze: webrtc:http://192.168.1.123:5000/signaling/camera1?kvs#format=wyze webrtc-kinesis: webrtc:wss://...amazonaws.com/?...#format=kinesis#client_id=...#ice_servers=[{...},{...}]
PS. Für kinesis
Quellen können Sie Echo verwenden, um Verbindungsparameter mithilfe von bash
/ python
oder einer anderen Skriptsprache abzurufen.
Neu in v1.3.0
Diese Quelle kann über das WebTorrent-Protokoll einen Stream von einem anderen go2rtc abrufen.
Streams: webtorrent1: webtorrent:?share=huofssuxaty00izc&pwd=k3l2j9djeg8v8r7e
Standardmäßig stellt go2rtc eine Verbindung zur Quelle her, wenn ein Client dies anfordert. Go2rtc trennt die Verbindung zur Quelle, wenn keine Clients mehr vorhanden sind.
Go2rtc akzeptiert auch eingehende Quellen in den Formaten RTSP, RTMP, HTTP und WebRTC/WHIP
Go2rtc stoppt eine solche Quelle nicht, wenn sie keine Clients hat
Sie können Daten nur an den vorhandenen Stream übertragen (Stream mit leerer Quelle in der Konfiguration erstellen)
Sie können mehrere eingehende Quellen an denselben Stream weiterleiten
Sie können Daten in einen nicht leeren Stream verschieben, sodass zusätzliche Codecs darin enthalten sind
Beispiele
RTSP mit jedem Codec
ffmpeg -re -i BigBuckBunny.mp4 -c copy -rtsp_transport tcp -f rtsp rtsp://localhost:8554/camera1
HTTP-MJPEG mit MJPEG-Codec
ffmpeg -re -i BigBuckBunny.mp4 -c mjpeg -f mpjpeg http://localhost:1984/api/stream.mjpeg?dst=camera1
HTTP-FLV mit H264, AAC-Codecs
ffmpeg -re -i BigBuckBunny.mp4 -c copy -f flv http://localhost:1984/api/stream.flv?dst=camera1
MPEG-TS mit H264-Codec
ffmpeg -re -i BigBuckBunny.mp4 -c copy -f mpegts http://localhost:1984/api/stream.ts?dst=camera1
Neu in v1.3.0
Sie können den Browser jedes PCs oder Mobiltelefons in eine IP-Kamera mit Video- und Zwei-Wege-Audiounterstützung verwandeln. Oder übertragen Sie sogar Ihren PC-Bildschirm:
Erstellen Sie einen leeren Stream in go2rtc.yaml
Gehen Sie zur go2rtc-WebUI
Öffnen Sie die links
für Ihren Stream
Wählen Sie die Option camera+microphone
oder display+speaker
Öffnen Sie die lokale webrtc
-Seite (Ihr go2rtc sollte über HTTPS funktionieren! ) oder share link
über die WebTorrent-Technologie (funktioniert standardmäßig über HTTPS).
Neu in v1.3.0
Sie können OBS Studio oder jede andere Broadcast-Software mit WHIP-Protokollunterstützung verwenden. Dieser Standard wurde noch nicht genehmigt. Sie können jedoch die Entwicklungsversion von OBS Studio herunterladen:
Einstellungen > Stream > Dienst: WHIP > http://192.168.1.123:1984/api/webrtc?dst=camera1
Neu in v1.3.0
go2rtc unterstützt die Wiedergabe von Audiodateien (z. B. Musik oder TTS) und Live-Streams (z. B. Radio) auf Kameras mit Zwei-Wege-Audio-Unterstützung (RTSP/ONVIF-Kameras, TP-Link Tapo, Hikvision ISAPI, Roborock-Staubsauger, jeder Browser).
API-Beispiel:
POST http://localhost:1984/api/streams?dst=camera1&src=ffmpeg:http://example.com/song.mp3#audio=pcma#input=file
Sie können streamen: lokale Dateien, Webdateien, Live-Streams oder jedes beliebige Format, das von FFmpeg unterstützt wird
Sie sollten die ffmpeg-Quelle zum Transkodieren von Audio in den Codec verwenden, den Ihre Kamera unterstützt
Sie können die Kamera-Codecs auf der go2rtc-WebUI-Infoseite überprüfen, wenn der Stream aktiv ist
Einige Kameras unterstützen nur PCMA/8000
Codec mit geringer Qualität (z. B. Tapo).
Es wird empfohlen, Formate höherer Qualität zu wählen, wenn Ihre Kamera diese unterstützt (z. B. PCMA/48000
für einige Dahua-Kameras).
Wenn Sie Dateien über einen http-Link abspielen, müssen Sie #input=file
Parameter für die Transkodierung hinzufügen, damit die Datei in Echtzeit transkodiert und abgespielt wird
Wenn Sie Live-Streams abspielen, sollten Sie #input
param überspringen, da es bereits in Echtzeit erfolgt
Sie können die aktive Wiedergabe stoppen, indem Sie die API mit dem leeren src
-Parameter aufrufen
Während des Streamings werden auf der go2rtc-WebUI-Infoseite ein aktiver Produzent und ein aktiver Konsument angezeigt
Neu in v1.8.0
Sie können jeden Stream über RTMP/RTMPS auf Streaming-Diensten (YouTube, Telegram usw.) veröffentlichen. Wichtig:
Unterstützte Codecs: H264 für Video und AAC für Audio
Für YouTube ist AAC-Audio erforderlich, Videos ohne Audio funktionieren nicht
Für diese Aufgabe müssen Sie die RTMP-Modulüberwachung nicht aktivieren
Sie können die API verwenden:
POST http://localhost:1984/api/streams?src=camera1&dst=rtmps://...
Oder Konfigurationsdatei:
veröffentlichen: # Stream „video_audio_transcode“ in Telegram veröffentlichen video_audio_transcode: - rtmps://xxx-x.rtmp.t.me/s/xxxxxxxxxx:xxxxxxxxxxxxxxxxxxxxxx # Stream „audio_transcode“ auf Telegram und YouTube veröffentlichen audio_transcode: - rtmps://xxx-x.rtmp.t.me/s/xxxxxxxxxx:xxxxxxxxxxxxxxxxxxxxxx- rtmp://xxx.rtmp.youtube.com/live2/xxxx-xxxx-xxxx-xxxx-xxxxstreams: video_audio_transcode: - ffmpeg:rtsp://user:[email protected]/stream1#video=h264#hardware#audio=aac audio_transcode: - ffmpeg:rtsp://user:[email protected]/stream1#video=copy#audio=aac
Telegram-Desktop-App > Jeder öffentliche oder private Kanal oder jede Gruppe (wo Sie Administrator sind) > Live-Stream > Beginnen mit... > Streaming starten.
YouTube > Erstellen > Live gehen > Stream-Latenz: Extrem niedrige Latenz > Kopieren: Stream-URL + Stream-Schlüssel.
Die HTTP-API ist der Hauptteil für die Interaktion mit der Anwendung. Standardadresse: http://localhost:1984/
.
Wichtig! go2rtc leitet Anfragen von localhost und vom Unix-Socket ohne HTTP-Autorisierung weiter, selbst wenn Sie es konfiguriert haben! Es liegt in Ihrer Verantwortung, einen sicheren externen Zugriff auf die API einzurichten. Bei unsachgemäßer Konfiguration kann ein Angreifer Zugriff auf Ihre Kameras und sogar Ihren Server erhalten.
API-Beschreibung.
Modulkonfiguration
Sie können die HTTP-API mit listen: ""
deaktivieren und beispielsweise nur das RTSP-Client/Server-Protokoll verwenden
Sie können die HTTP-API nur auf localhost mit der Einstellung listen: "127.0.0.1:1984"
aktivieren
Sie können den API- base_path
ändern und go2rtc auf der Sub-URL Ihres Haupt-App-Webservers hosten
alle Dateien aus static_dir
gehostet im Root-Pfad: /
Sie können rohe TLS-Zertifikat-/Schlüsselinhalte oder Pfade zu Dateien verwenden
api: listen: „:1984“ # default „:1984“, HTTP-API-Port („“ – deaktiviert) Benutzername: „admin“ # Standard „“, Basisauthentifizierung für WebUI Passwort: „pass“ # default „“, Basisauthentifizierung für WebUI base_path: „/rtc“ # default „“, API-Präfix für die Bereitstellung auf Suburl (/api => /rtc/api) static_dir: „www“ # default „“, Ordner für statische Dateien (benutzerdefinierte Weboberfläche) Ursprung: „*“ # Standard „“, CORS-Anfragen zulassen (nur * unterstützt) tls_listen: „:443“ # default „, HTTPS-Server aktivieren tls_cert: | # default "", PEM-codiertes Full-Chain-Zertifikat für HTTPS -----BEGIN CERTIFICATE----- ... -----END CERTIFICATE----- tls_key: | # default "", PEM-codierter privater Schlüssel für HTTPS -----BEGIN PRIVATE KEY----- ... -----END PRIVATE KEY----- unix_listen: "/tmp/go2rtc.sock „ # default „, Unix-Socket-Listener für API
PS:
MJPEG über WebSocket wird aufgrund eines Chrome-Fehlers besser abgespielt als natives MJPEG
MP4 über WebSocket wurde nur für Apple iOS erstellt, da es MSE und natives MP4 nicht unterstützt
Sie können jeden Stream als RTSP-Stream erhalten: rtsp://192.168.1.123:8554/{stream_name}
Sie können einen externen Passwortschutz für Ihre RTSP-Streams aktivieren. Der Passwortschutz ist für Localhost-Aufrufe immer deaktiviert (z. B. FFmpeg oder Hass auf demselben Server).
rtsp: listen: „:8554“ # TCP-Port des RTSP-Servers, Standard: 8554 Benutzername: „admin“ # optional, Standardeinstellung – deaktiviert Passwort: „pass“ # optional, Standardeinstellung – deaktiviert default_query: „video&audio“ <sp