Última aplicación de transmisión de cámara con soporte RTSP, WebRTC, HomeKit, FFmpeg, RTMP, etc.
Pequeña aplicación sin dependencia y configuración cero para todos los sistemas operativos (Windows, macOS, Linux, ARM)
retraso cero para muchos protocolos compatibles (latencia de transmisión más baja posible)
streaming desde RTSP, RTMP, DVRIP, HTTP (FLV/MJPEG/JPEG/TS), cámaras USB y otras fuentes
streaming desde cualquier fuente, compatible con FFmpeg
transmisión a RTSP, WebRTC, MSE/MP4, HomeKit HLS o MJPEG
publicar cualquier fuente en servicios de transmisión populares (YouTube, Telegram, etc.)
Primer proyecto en el mundo con soporte de streaming desde cámaras HomeKit.
admite H265 para WebRTC en el navegador (solo Safari, leer más)
transcodificación sobre la marcha para códecs no compatibles a través de FFmpeg
reproducir archivos de audio y transmisiones en vivo en algunas cámaras con altavoz
Negociación de códecs bidireccionales de múltiples fuentes.
mezclar pistas de diferentes fuentes en una sola secuencia
Códecs compatibles con el cliente de coincidencia automática
Audio bidireccional para algunas cámaras
streaming desde redes privadas a través de ngrok
se puede integrar a cualquier plataforma de hogar inteligente o usarse como una aplicación independiente
Inspirado por:
serie de proyectos de streaming de @deepch
biblioteca webrtc go y todo el equipo @pion
Idea de servidor simple rtsp de @ aler9
Idea de canalización del marco GStreamer
Idea de enrutamiento del marco MediaSoup
Protocolo de accesorios HomeKit de @brutella
creador del logo del proyecto @v_novoseltsev
inicio rapido
go2rtc: binario
go2rtc: ventana acoplable
go2rtc: complemento de asistente doméstico
go2rtc: Integración del asistente doméstico
go2rtc: versión para desarrolladores
Configuración
audio bidireccional
Fuente: RTSP
Fuente: RTMP
Fuente: HTTP
Fuente: ONVIF
Fuente: FFmpeg
Fuente: Dispositivo FFmpeg
Fuente: Ejecutivo
Fuente: Eco
Fuente: Expr
Fuente: HomeKit
Fuente: Burbuja
Fuente: DVRIP
Fuente: Tapo
Fuente: Kasa
Fuente: GoPro
Fuente: Ivideon
Fuente: Hass
Fuente: ISAPI
Fuente: Nido
Fuente: Roborock
Fuente: WebRTC
Fuente: WebTorrent
Fuentes entrantes
Transmitir a la cámara
Publicar flujo
Módulo: Corrientes
Módulo: API
Módulo: RTSP
Módulo: RTMP
Módulo: WebRTC
Módulo: HomeKit
Módulo: WebTorrent
Módulo: ngrok
Módulo: Hass
Módulo: MP4
Módulo: HLS
Módulo: MJPEG
Módulo: Registro
Seguridad
Filtros de códecs
Locura de códecs
Negociación de códecs
Proyectos usando go2rtc
Experiencia de cámara
CONSEJOS
Preguntas frecuentes
Descargue binario o use el complemento o la integración de Docker o Home Assistant
Interfaz web abierta: http://localhost:1984/
Opcionalmente:
agregue sus transmisiones al archivo de configuración
configurar el acceso externo a webrtc
Desarrolladores:
escribe tu propia interfaz web
integre la API web en su plataforma de hogar inteligente
Descargue el binario para su sistema operativo desde la última versión:
go2rtc_win64.zip
- Windows 10+ de 64 bits
go2rtc_win32.zip
- Windows 7+ de 32 bits
go2rtc_win_arm64.zip
- Windows ARM de 64 bits
go2rtc_linux_amd64
- Linux de 64 bits
go2rtc_linux_i386
- Linux de 32 bits
go2rtc_linux_arm64
- Linux ARM de 64 bits (por ejemplo, sistema operativo Raspberry de 64 bits)
go2rtc_linux_arm
- Linux ARM de 32 bits (por ejemplo, sistema operativo Raspberry de 32 bits)
go2rtc_linux_armv6
- Linux ARMv6 (para Raspberry 1 y Zero antiguos)
go2rtc_linux_mipsel
- MIPS de Linux (por ejemplo, Xiaomi Gateway 3, cámaras Wyze)
go2rtc_mac_amd64.zip
- macOS 10.13+ Intel de 64 bits
go2rtc_mac_arm64.zip
- macOS ARM de 64 bits
No olvides arreglar los derechos chmod +x go2rtc_xxx_xxx
en Linux y Mac.
El contenedor Docker alexxit/go2rtc
admite múltiples arquitecturas, incluidas amd64
, 386
, arm64
y arm
. Este contenedor ofrece la misma funcionalidad que el complemento Home Assistant pero está diseñado para funcionar independientemente de Home Assistant. Viene preinstalado con FFmpeg, ngrok y Python.
Instalar complemento:
Configuración > Complementos > Más > Repositorios > Agregar https://github.com/AlexxIT/hassio-addons
go2rtc > Instalar > Iniciar
Integración de configuración
El componente personalizado de la cámara WebRTC se puede utilizar en cualquier instalación de Home Assistant, incluido HassWP en Windows. Puede descargar y utilizar automáticamente la última versión de go2rtc. O puede conectarse a una versión existente de go2rtc. La instalación del complemento en este caso es opcional.
Versión más reciente, pero quizás inestable:
Binario: último lanzamiento nocturno
Docker: alexxit/go2rtc:master
o alexxit/go2rtc:master-hardware
Complemento Hass: versiones de hardware go2rtc master
o go2rtc master hardware
De forma predeterminada, go2rtc buscará go2rtc.yaml
en el directorio de trabajo actual.
El servidor api
se iniciará en el puerto predeterminado 1984 (TCP)
El servidor rtsp
se iniciará en el puerto 8554 (TCP) predeterminado
webrtc
utilizará el puerto 8555 (TCP/UDP) para las conexiones
ffmpeg
usará opciones de transcodificación predeterminadas
Las opciones de configuración y una lista completa de configuraciones se pueden encontrar en la wiki.
Módulos disponibles:
corrientes
api: API HTTP (importante para la compatibilidad con WebRTC)
rtsp - Servidor RTSP (importante para la compatibilidad con FFmpeg)
webrtc - Servidor WebRTC
mp4 - Servidor MSE, flujo MP4 y instantáneas MP4
hls - Servidor de transmisión HLS TS o fMP4
mjpeg - Servidor MJPEG
ffmpeg - integración de FFmpeg
ngrok - integración de ngrok (acceso externo para red privada)
hass - Integración de Home Assistant
log - configuración de registros
go2rtc admite diferentes tipos de fuentes de transmisión. Puede configurar uno o varios enlaces de cualquier tipo como fuente de transmisión.
Tipos de fuente disponibles:
rtsp: cámaras RTSP
y RTSPS
con soporte de audio bidireccional
rtmp - transmisiones RTMP
http: HTTP-FLV
, MPEG-TS
, JPEG
(instantáneas), secuencias MJPEG
onvif: obtenga el enlace RTSP
de la cámara y el enlace de instantánea utilizando el protocolo ONVIF
ffmpeg: integración de FFmpeg ( HLS
, files
y muchos otros)
ffmpeg:dispositivo: cámara USB o cámara web local
ejecutivo: obtiene medios de la salida de una aplicación externa
echo: obtiene el enlace de transmisión desde bash o python
expr: obtiene el enlace de transmisión a través del lenguaje de expresión incorporado
homekit - transmisión desde la cámara HomeKit
burbuja - transmisión desde ESeeCloud/dvr163 NVR
dvrip - transmisión desde DVR-IP NVR
tapo - Cámaras TP-Link Tapo con soporte de audio bidireccional
kasa - Cámaras TP-Link Kasa
gopro - cámaras GoPro
ivideon - cámaras públicas del servicio Ivideon
hass - Integración de Home Assistant
isapi: audio bidireccional para cámaras Hikvision (ISAPI)
roborock - Aspiradoras Roborock con cámaras
webrtc - Fuentes WebRTC/WHEP
webtorrent - Fuente WebTorrent de otro go2rtc
Leer más sobre fuentes entrantes
Compatible con fuentes:
Cámaras RTSP con ONVIF Perfil T (conexión de canal trasero)
cámaras DVRIP
Cámaras TP-Link Tapo
Cámaras Hikvision ISAPI
Roborock aspira modelos con cámaras
Audio ejecutivo en el servidor.
Cualquier navegador como cámara IP
El audio bidireccional se puede utilizar en el navegador con tecnología WebRTC. El navegador dará acceso al micrófono sólo para sitios HTTPS (leer más).
go2rtc también admite la reproducción de archivos de audio y transmisiones en vivo en estas cámaras.
transmisiones: sonoff_camera: rtsp://rtsp:[email protected]/av_stream/ch0 cámara_dahua: - rtsp://admin:[email protected]/cam/realmonitor?channel=1&subtype=0&unicast=true&proto=Onvifr- rtsp://admin:[email protected]/cam/realmonitor?channel=1&subtype=1 amcrest_doorbell: - rtsp://nombre de usuario:contraseñ[email protected]:554/cam/realmonitor?channel=1&subtype=0#backchannel=0 cámara_unifi: rtspx://192.168.1.123:7441/fD6ouM72bWoFijxK glichy_camera: ffmpeg:rtsp://nombre de usuario:contraseñ[email protected]/live/ch00_1
Recomendaciones
Es posible que los usuarios de Amcrest Doorbell quieran desactivar el audio bidireccional, porque con una transmisión activa no tendrá un botón de llamada funcionando. Debe agregar #backchannel=0
al final de su enlace RTSP en el archivo de configuración YAML
Es posible que los usuarios de Dahua Doorbell quieran cambiar el códec de audio del canal trasero
Es posible que los usuarios de Reolink quieran NO utilizar el protocolo RTSP en absoluto, algunos modelos de cámaras tienen una implementación de transmisión inutilizable muy terrible.
Es posible que los usuarios de Ubiquiti UniFi quieran desactivar la verificación HTTPS. Utilice el prefijo rtspx://
en lugar de rtsps://
. Y no utilice el sufijo ?enableSrtp
Los usuarios de TP-Link Tapo pueden omitir el inicio de sesión y la contraseña, porque go2rtc admite el inicio de sesión sin ellos
Si su cámara tiene dos enlaces RTSP, puede agregar ambos como fuentes. Esto es útil cuando las transmisiones tienen diferentes códecs, como por ejemplo audio AAC con transmisión principal y audio PCMU/PCMA con segunda transmisión.
Si la transmisión de su cámara tiene fallas, intente usar la fuente ffmpeg. No agregará carga de CPU si no usas la transcodificación
Si la transmisión de su cámara tiene muchos fallos, intente utilizar la transcodificación con la fuente ffmpeg
Otras opciones
Formato: rtsp...#{param1}#{param2}#{param3}
Agregar tiempo de espera personalizado #timeout=30
(en segundos)
Ignorar audio - #media=video
o ignorar video - #media=audio
Ignorar la API de audio bidireccional #backchannel=0
: importante para algunas cámaras con fallas
Utilice el transporte WebSocket #transport=ws...
RTSP sobre WebSocket
transmisiones: # WebSocket con autorización, RTSP - sin eje-rtsp-ws: rtsp://192.168.1.123:4567/axis-media/media.amp?overview=0&camera=1&solving=1280x720&videoframeskipmode=empty&Axis-Orig-Sw=true#transport=ws://user:[email protected]:4567/ rtsp-sobre-websocket # WebSocket sin autorización, RTSP - con dahua-rtsp-ws: rtsp://user:[email protected]/cam/realmonitor?channel=1&subtype=1&proto=Private3#transport=ws://192.168.1.123/rtspoverwebsocket
Puede obtener transmisión desde el servidor RTMP, por ejemplo Nginx con nginx-rtmp-module.
transmisiones: rtmp_stream: rtmp://192.168.1.123/live/camera1
Tipo de contenido de soporte:
HTTP-FLV ( video/x-flv
): igual que RTMP, pero a través de HTTP
HTTP-JPEG ( image/jpeg
): enlace de instantánea de la cámara, se puede convertir mediante go2rtc a secuencia MJPEG
HTTP-MJPEG ( multipart/x
): transmisión MJPEG simple a través de HTTP
MPEG-TS ( video/mpeg
): formato de transmisión heredado
La fuente también admite transmisiones HTTP y TCP con detección automática para diferentes formatos: MJPEG , H.264/H.265 bitstream , MPEG-TS .
transmisiones: # transmisión [HTTP-FLV] en formato video/x-flv http_flv: http://192.168.1.123:20880/api/camera/stream/780900131155/657617 # Las instantáneas [JPEG] de la cámara Dahua se convertirán a una transmisión MJPEG dahua_snap: http://admin:contraseñ[email protected]/cgi-bin/snapshot.cgi?channel=1 # La transmisión [MJPEG] se enviará mediante proxy sin modificaciones http_mjpeg: https://mjpeg.sanford.io/count.mjpeg # [MJPEG o flujo de bits H.264/H.265 o MPEG-TS] tcp_magic: tcp://192.168.1.123:12345 # Agregar encabezado personalizado custom_header: "https://mjpeg.sanford.io/count.mjpeg#header=Autorización: Portador XXX"
PD. La cámara Dahua tiene un error: si selecciona el códec MJPEG para la segunda transmisión RTSP, la instantánea no funcionará.
Nuevo en v1.5.0
La fuente no es muy útil si ya conoce RTSP y enlaces de instantáneas para su cámara. Pero puede resultar útil si no lo hace.
WebUI > Agregar soporte de página web para descubrimiento automático ONVIF. Su servidor debe estar en la misma subred que la cámara. Si usa Docker, debe usar "host de red".
transmisiones: dahua1: onvif://admin:contraseñ[email protected] reolink1: onvif://admin:contraseñ[email protected]:8000 tapo1: onvif://admin:contraseñ[email protected]:2020
Puede obtener cualquier transmisión, archivo o dispositivo a través de FFmpeg y enviarlo a go2rtc. La aplicación iniciará automáticamente FFmpeg con los argumentos adecuados cuando alguien comience a ver la transmisión.
FFmpeg preinstalado para usuarios de complementos Docker y Hass
Los usuarios del complemento Hass pueden seleccionar archivos de la carpeta /media
Formato: ffmpeg:{input}#{param1}#{param2}#{param3}
. Ejemplos:
transmisiones: # [ARCHIVO] todas las pistas se copiarán sin transcodificar códecs archivo1: ffmpeg:/media/BigBuckBunny.mp4 # El video [ARCHIVO] se transcodificará a H264, el audio se omitirá archivo2: ffmpeg:/media/BigBuckBunny.mp4#video=h264 # Se copiará el video [ARCHIVO], el audio se transcodificará a pcmu archivo3: ffmpeg:/media/BigBuckBunny.mp4#video=copia#audio=pcmu # Se copiará el video [HLS], se omitirá el audio hls: ffmpeg: https://devstreaming-cdn.apple.com/videos/streaming/examples/bipbop_16x9/gear5/prog_index.m3u8#video=copy # El video [MJPEG] se transcodificará a H264 mjpeg: ffmpeg:http://185.97.122.128/cgi-bin/faststream.jpg#video=h264 # Vídeo [RTSP] con rotación, debe transcodificarse, así que seleccione H264 rotar: ffmpeg:rtsp://rtsp:[email protected]/av_stream/ch0#video=h264#rotate=90
Todos los formatos de trascodificación tienen plantillas integradas: h264
, h265
, opus
, pcmu
, pcmu/16000
, pcmu/48000
, pcma
, pcma/16000
, pcma/48000
, aac
, aac/16000
.
Pero puedes anularlos mediante la configuración YAML. También puede agregar sus propios formatos para configurar y usarlos con los parámetros fuente.
ffmpeg: bin: ffmpeg # ruta al binario de ffmpeg h264: "-codec:v libx264 -g:v 30 -preset:v superfast -tune:v zerolatency -profile:v main -level:v 4.1" mycodec: "-cualquier argumento compatible con ffmpeg..." myinput: "-fflags nobuffer -flags low_delay -timeout 5000000 -i {entrada}" myraw: "-ss 00:00:20"
Puede usar el nombre de la transmisión go2rtc como entrada ffmpeg (por ejemplo, ffmpeg:camera1#video=h264
).
Puede utilizar parámetros video
y audio
varias veces (por ejemplo, #video=copy#audio=copy#audio=pcmu
).
Puede usar el parámetro rotate
con valores 90
, 180
, 270
o -90
, importante con la transcodificación (por ejemplo, #video=h264#rotate=90
).
Puede usar parámetros width
y/o height
, importantes con la transcodificación (por ejemplo, #video=h264#width=1280
).
Puedes usar drawtext
para agregar una marca de tiempo (ej. drawtext=x=2:y=2:fontsize=12:fontcolor=white:box=1:boxcolor=black
)
Esto aumentará considerablemente la CPU del servidor, incluso con aceleración de hardware.
Puede usar raw
param para cualquier argumento FFmpeg adicional (por ejemplo, #raw=-vf transpose=1
)
Puede usar el parámetro input
para anular la plantilla de entrada predeterminada (por ejemplo, #input=rtsp/udp
cambiará el transporte RTSP de TCP a UDP+TCP)
Puede utilizar un valor de entrada sin formato (por ejemplo, #input=-timeout 5000000 -i {input}
)
Puedes agregar tus propias plantillas de entrada
Lea más sobre la aceleración de hardware.
PD. Se recomienda verificar el hardware disponible en la página de adición de WebUI.
Puede obtener vídeo desde cualquier cámara USB o cámara web como transmisión RTSP o WebRTC. Esto es parte de la integración de FFmpeg.
comprobar los dispositivos disponibles en la interfaz web
video_size
y framerate
deben ser compatibles con tu cámara!
para Linux solo admite video por ahora
¡Para macOS puedes transmitir desde la cámara Facetime o desde el escritorio completo!
para macOS es importante establecer la velocidad de fotogramas correcta
Formato: ffmpeg:device?{input-params}#{param1}#{param2}#{param3}
transmisiones: linux_usbcam: ffmpeg:device?video=0&video_size=1280x720#video=h264 windows_webcam: ffmpeg:dispositivo?video=0#video=h264 macos_facetime: ffmpeg:device?video=0&audio=1&video_size=1280x720&framerate=30#video=h264#audio=pcma
PD. Se recomienda verificar los dispositivos disponibles en la página de agregar de WebUI.
La fuente ejecutiva puede ejecutar cualquier aplicación externa y esperar datos de ella. Se admiten dos transportes: pipe ( desde v1.5.0 ) y RTSP .
Si desea utilizar el transporte RTSP , el comando debe contener el argumento {output}
en cualquier lugar. Al iniciarse, será reemplazada por la dirección local del servidor RTSP.
pipe lee datos de la salida estándar de la aplicación en diferentes formatos: MJPEG , H.264/H.265 bitstream , MPEG-TS . Además, Pipe puede escribir datos en la entrada estándar de la aplicación en dos formatos: PCMA y PCM/48000 .
La fuente se puede utilizar con:
FFmpeg - fuente go2rtc ffmpeg solo un acceso directo a la fuente ejecutiva
FFplay: reproduce audio en tu servidor
GStreamer
Cámaras Raspberry Pi
cualquier software propio
Los comandos de canalización admiten parámetros (formato: exec:{command}#{param1}#{param2}
):
killsignal
: señal que se enviará para detener el proceso (forma numérica)
killtimeout
: tiempo en segundos para la terminación forzada con sigkill
backchannel
: habilita el canal trasero para audio bidireccional
transmisiones: transmisión: exec:ffmpeg -re -i /media/BigBuckBunny.mp4 -c copy -rtsp_transport tcp -f rtsp {salida} picam_h264: ejecutivo:libcamera-vid -t 0 --inline -o - picam_mjpeg: exec:libcamera-vid -t 0 --codec mjpeg -o - pi5cam_h264: ejecutivo:libcamera-vid -t 0 --libav-format h264 -o - canon: ejecutivo: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
Algunas fuentes pueden tener un enlace dinámico. Y necesitarás obtenerlo usando un script bash o python. Su secuencia de comandos debe hacer eco de un enlace a la fuente. RTSP, FFmpeg o cualquiera de las fuentes compatibles.
Los usuarios de Docker y Hass Add-on tienen python3
, curl
y jq
preinstalados.
Consulte ejemplos en wiki.
transmisiones: apple_hls: echo:python3 hls.py https://developer.apple.com/streaming/examples/basic-stream-osx-ios5.html
Nuevo en v1.8.2
Como echo
source, pero utiliza el lenguaje de expresión expr incorporado (leer más).
Importante:
Puedes usar cámaras HomeKit sin dispositivos Apple (iPhone, iPad, etc.), es solo un protocolo más
El dispositivo HomeKit se puede emparejar con un solo ecosistema. Por lo tanto, si lo ha emparejado con un iPhone (Apple Home), no podrá emparejarlo con Home Assistant o go2rtc. O si lo ha vinculado con go2rtc, no puede vincularlo con el iPhone
El dispositivo HomeKit debe estar en la misma red con mDNS funcionando entre el dispositivo y go2rtc
go2rtc admite la importación de dispositivos HomeKit emparejados desde Home Assistant. Así podrás utilizar la cámara HomeKit con Hass y go2rtc simultáneamente. Si usas Hass, te recomiendo emparejar dispositivos con él, te dará más opciones.
Puede emparejar el dispositivo con go2rtc en la página de HomeKit. Si no puede ver sus dispositivos, vuelva a cargar la página. También intente reiniciar su dispositivo HomeKit (apagado). Si aún no puedes verlo, tienes problemas con mDNS.
Si ve un dispositivo pero no tiene un botón de emparejamiento, está emparejado con algún ecosistema (Apple Home, Home Assistant, HomeBridge, etc.). Debe eliminar el dispositivo de ese ecosistema y estará disponible para emparejarse. Si no puede desvincular el dispositivo, deberá restablecerlo.
Importante:
El audio de HomeKit utiliza un códec AAC-ELD muy no estándar con parámetros y violaciones de especificaciones muy no estándar
El audio no se puede reproducir en VLC
y probablemente en ningún otro reproductor.
El audio debe transcodificarse para usarlo con MSE, WebRTC, etc.
Configuraciones recomendadas para usar la cámara HomeKit con WebRTC, MSE, MP4, RTSP:
streams: aqara_g3: - hass:Camera-Hub-G3-AB12 - ffmpeg:aqara_g3#audio=aac#audio=opus
Enlace RTSP con audio "normal" para cualquier reproductor: rtsp://192.168.1.123:8554/aqara_g3?video&audio=aac
¡Esta fuente está en desarrollo activo! Probado solo con Aqara Camera Hub G3 (ambas versiones EU y CN).
Nuevo en v1.6.1
Otros nombres: ESeeCloud, dvr163.
Puedes omitir username
, password
, port
, ch
y stream
si están predeterminados.
configurar transmisiones separadas para diferentes canales y transmisiones
transmisiones: cámara1: burbuja://nombre de usuario:contraseñ[email protected]:34567/bubble/live?ch=0&stream=0
Nuevo en v1.2.0
Otros nombres: DVR-IP, NetSurveillance, protocolo Sofia (complemento NETsurveillance ActiveX XMeye SDK).
puede omitir username
, password
, port
, channel
y subtype
si son predeterminados
configurar transmisiones separadas para diferentes canales
use subtype=0
para la transmisión principal y subtype=1
para la transmisión Extra1
sólo se admite el protocolo TCP
transmisiones: only_stream: dvrip://nombre de usuario:contraseñ[email protected]:34567?channel=0&subtype=0 only_tts: dvrip://nombre de usuario:contraseñ[email protected]:34567?backchannel=1 audio_bidireccional: - dvrip://nombre de usuario:contraseñ[email protected]:34567?channel=0&subtype=0- dvrip://nombre de usuario:contraseñ[email protected]:34567?backchannel=1
Nuevo en v1.2.0
Protocolo de cámara patentado TP-Link Tapo con soporte de audio bidireccional .
La calidad de la transmisión es la misma que la del protocolo RTSP.
use la contraseña de la nube , ¡esta no es la contraseña RTSP! ¡No es necesario agregar un inicio de sesión!
También puede usar el hash MD5 en MAYÚSCULAS de su contraseña en la nube con el nombre de usuario admin
.
algunos firmwares de cámaras nuevos requieren SHA256 en lugar de MD5
transmisiones: # contraseña de la nube sin nombre de usuario cámara1: tapo://[email protected] # nombre de usuario de administrador y hash de contraseña de nube MD5 en MAYÚSCULAS cámara2: tapo://admin:MAYÚ[email protected] # nombre de usuario de administrador y hash de contraseña de nube SHA256 en MAYÚSCULAS cámara3: tapo://admin:MAYÚ[email protected]
echo -n "contraseña de la nube" | md5 | awk '{print toupper($0)}'echo -n "contraseña de la nube" | shasum -a 256 | awk '{imprimir toupper ($0)}'
Nuevo en v1.7.0
Protocolo no estándar TP-Link Kasa más información.
username
- correo electrónico urlsafe, [email protected]
-> alex%40gmail.com
password
- contraseña base64, secret1
-> c2VjcmV0MQ==
transmisiones: kc401: kasa://nombre de usuario:contraseñ[email protected]:19443/https/stream/mixed
Probado: KD110, KC200, KC401, KC420WS, EC71.
Nuevo en v1.8.3
Admite transmisión desde cámaras GoPro, conectadas mediante USB o Wi-Fi a Linux, Mac, Windows. Leer más.
Soporte de cámaras públicas del servicio Ivideon.
transmisiones: quailcam: ivideon:100-tu5dkUPct39cTp9oNEN2B6/0
Admite la importación de enlaces de cámaras desde archivos de configuración de Home Assistant:
Cámara genérica, configuración mediante GUI
Cámara HomeKit
ONVIF
Aspiradoras Roborock con cámara
hass: config: "/config" # omite esta configuración si utilizas el complemento Hass userstreams: generic_camera: hass:Camera1 # Configuración > Integraciones > Nombre de integración aqara_g3: hass:Camera-Hub-G3-AB12
Cámaras WebRTC ( desde v1.6.0 )
Se admiten todas las cámaras en formato WebRTC. Pero por el momento Home Assistant solo admite algunas cámaras Nest en este formato.
Importante. La API de Nest solo te permite obtener un enlace a una transmisión durante 5 minutos. ¡No uses esto con Fragate! Si la transmisión caduca, Frigate consumirá toda la memoria RAM disponible en su máquina en cuestión de segundos. Se recomienda utilizar la fuente Nest, ya que permite ampliar la transmisión.
transmisiones: # enlace a Home Assistant supervisado hass-webrtc1: hass://supervisor?entity_id=camera.nest_doorbell # enlace a Hass externo con tokens de acceso de larga duración hass-webrtc2: hass://192.168.1.123:8123?entity_id=camera.nest_doorbell&token=eyXYZ...
Cámaras RTSP
De forma predeterminada, la API de Home Assistant no le permite obtener un enlace RTSP dinámico a una transmisión de cámara. Por lo tanto, también se pueden importar más cámaras, como Tuya, y posiblemente otras, utilizando este método.
Nuevo en v1.3.0
Este tipo de fuente solo admite audio de canal trasero para el protocolo ISAPI de Hikvision. Por lo tanto, debería utilizarse como segunda fuente además del protocolo RTSP.
transmisiones: hikvision1: - rtsp://admin:contraseñ[email protected]:554/Streaming/Channels/101- isapi://admin:contraseñ[email protected]:80/
Nuevo en v1.6.0
Actualmente solo se admiten cámaras WebRTC.
Para simplificar, se recomienda conectar la cámara Nest/WebRTC al Home Assistant. Pero si de alguna manera puede obtener los siguientes parámetros, la fuente Nest/WebRTC funcionará sin Hass.
transmisiones: nest-doorbell: nest:?client_id=***&client_secret=***&refresh_token=***&project_id=***&device_id=***
Nuevo en v1.3.0
Este tipo de fuente admite aspiradoras Roborock con cámaras. Modelos de trabajo conocidos:
Roborock S6 MaxV: solo video (la aspiradora no tiene micrófono)
Roborock S7 MaxV - vídeo y audio bidireccional
Roborock Qrevo MaxV - vídeo y audio bidireccional
El soporte de origen carga las credenciales de Roborock desde la integración personalizada de Home Assistant o la integración principal. De lo contrario, deberá iniciar sesión en su cuenta Roborock (la cuenta MiHome no es compatible). Vaya a: go2rtc WebUI > Agregar página web. Copie la fuente roborock://...
para su aspiradora y péguela en la configuración de go2rtc.yaml
.
Si tiene un pin gráfico para su aspiradora, agréguelo como pin numérico (líneas: 123, 456, 789) al final del enlace roborock.
Nuevo en v1.3.0
Este tipo de fuente admite cuatro formatos de conexión.
azotar
WebRTC/WHEP: se reemplaza por el estándar WebRTC/WISH para visores de video/audio WebRTC. Pero es posible que ya sea compatible con algún software de terceros. Está soportado en go2rtc.
go2rtc
Este formato sólo es compatible con go2rtc. A diferencia de WHEP, admite conexión WebRTC asíncrona y audio bidireccional.
openipc ( desde v1.7.0 )
Admite conexión a cámaras OpenIPC.
Wyze ( desde v1.6.1 )
Admite conexión a cámaras Wyze, mediante protocolo WebRTC. Puede utilizar el proyecto docker-wyze-bridge para obtener credenciales de conexión.
cinesis ( desde v1.6.1 )
Admite Amazon Kinesis Video Streams, utilizando el protocolo WebRTC. Debe especificar la URL de WebSocket de señalización con todas las credenciales en los parámetros de consulta, la lista client_id
y ice_servers
en formato JSON.
transmisiones: 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=[{...},{...}]
PD. Para fuentes kinesis
puede usar echo para obtener parámetros de conexión usando bash
/ python
o cualquier otro lenguaje de secuencia de comandos.
Nuevo en v1.3.0
Esta fuente puede obtener una transmisión de otro go2rtc a través del protocolo WebTorrent.
transmisiones: webtorrent1: webtorrent:?share=huofssuxaty00izc&pwd=k3l2j9djeg8v8r7e
De forma predeterminada, go2rtc establece una conexión con la fuente cuando cualquier cliente lo solicita. Go2rtc interrumpe la conexión a la fuente cuando ya no le quedan clientes.
Go2rtc también acepta fuentes entrantes en formatos RTSP, RTMP, HTTP y WebRTC/WHIP.
Go2rtc no detendrá dicha fuente si no tiene clientes
Puede enviar datos solo a una secuencia existente (crear una secuencia con una fuente vacía en la configuración)
Puede enviar varias fuentes entrantes a la misma transmisión
Puede enviar datos a una secuencia que no esté vacía, por lo que tendrá códecs adicionales dentro
Ejemplos
RTSP con cualquier códec
ffmpeg -re -i BigBuckBunny.mp4 -c copia -rtsp_transport tcp -f rtsp rtsp://localhost:8554/camera1
HTTP-MJPEG con códec MJPEG
ffmpeg -re -i BigBuckBunny.mp4 -c mjpeg -f mpjpeg http://localhost:1984/api/stream.mjpeg?dst=camera1
HTTP-FLV con códecs H264 y AAC
ffmpeg -re -i BigBuckBunny.mp4 -c copiar -f flv http://localhost:1984/api/stream.flv?dst=camera1
MPEG-TS con códec H264
ffmpeg -re -i BigBuckBunny.mp4 -c copiar -f mpegts http://localhost:1984/api/stream.ts?dst=camera1
Nuevo en v1.3.0
Puedes convertir el navegador de cualquier PC o móvil en una cámara IP con soporte de vídeo y audio bidireccional. O incluso transmitir la pantalla de tu PC:
Crear flujo vacío en go2rtc.yaml
Ir a la interfaz web de go2rtc
Abrir página links
para tu transmisión
Seleccione la opción camera+microphone
o display+speaker
Abra la página local webrtc
(¡su go2rtc debería funcionar a través de HTTPS! ) o share link
a través de la tecnología WebTorrent (funcione a través de HTTPS de forma predeterminada)
Nuevo en v1.3.0
Puede utilizar OBS Studio o cualquier otro software de transmisión compatible con el protocolo WHIP. Esta norma aún no ha sido aprobada. Pero puedes descargar la versión de desarrollo de OBS Studio:
Configuración > Transmisión > Servicio: WHIP > http://192.168.1.123:1984/api/webrtc?dst=camera1
Nuevo en v1.3.0
go2rtc admite la reproducción de archivos de audio (por ejemplo, música o TTS) y transmisiones en vivo (por ejemplo, radio) en cámaras con soporte de audio bidireccional (cámaras RTSP/ONVIF, TP-Link Tapo, Hikvision ISAPI, aspiradoras Roborock, cualquier navegador).
Ejemplo de API:
POST http://localhost:1984/api/streams?dst=camera1&src=ffmpeg:http://example.com/song.mp3#audio=pcma#input=file
puede transmitir: archivos locales, archivos web, transmisiones en vivo o cualquier formato, compatible con FFmpeg
debe usar la fuente ffmpeg para transcodificar audio a códec, que su cámara admita
Puede verificar los códecs de la cámara en la página de información de la WebUI de go2rtc cuando la transmisión está activa.
algunas cámaras solo admiten el códec PCMA/8000
de baja calidad (por ejemplo, Tapo)
Se recomienda elegir formatos de mayor calidad si su cámara los admite (por ejemplo, PCMA/48000
para algunas cámaras Dahua)
Si reproduce archivos a través del enlace http, debe agregar #input=file
parámetros para la transcodificación, de modo que el archivo se transcodifique y se reproduzca en tiempo real.
Si reproduces transmisiones en vivo, debes omitir #input
param, porque ya está en tiempo real.
puede detener la reproducción activa llamando a la API con el parámetro src
vacío
Verá un productor activo y un consumidor activo en la página de información de la WebUI de go2rtc durante la transmisión.
Nuevo en v1.8.0
Puede publicar cualquier transmisión en servicios de transmisión (YouTube, Telegram, etc.) a través de RTMP/RTMPS. Importante:
Códecs compatibles: H264 para vídeo y AAC para audio
Se requiere audio AAC para YouTube, los videos sin audio no funcionarán
No es necesario habilitar la escucha del módulo RTMP para esta tarea
Puedes usar API:
POST http://localhost:1984/api/streams?src=camera1&dst=rtmps://...
O archivo de configuración:
publicar: # publicar la transmisión "video_audio_transcode" en Telegram video_audio_transcode: - rtmps://xxx-x.rtmp.t.me/s/xxxxxxxxxx:xxxxxxxxxxxxxxxxxxxxxx # publicar la transmisión "audio_transcode" en Telegram y YouTube transcodificación_audio: - 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://usuario:[email protected]/stream1#video=h264#hardware#audio=aac transcodificación_audio: - ffmpeg:rtsp://usuario:[email protected]/stream1#video=copy#audio=aac
Aplicación de escritorio Telegram > Cualquier canal o grupo público o privado (donde usted sea administrador) > Transmisión en vivo > Comenzar con... > Iniciar transmisión.
YouTube > Crear > Transmitir en vivo > Latencia de transmisión: latencia ultrabaja > Copiar: URL de transmisión + clave de transmisión.
La API HTTP es la parte principal para interactuar con la aplicación. Dirección predeterminada: http://localhost:1984/
.
¡Importante! go2rtc pasa solicitudes desde localhost y desde socket Unix sin autorización HTTP, ¡incluso si lo tiene configurado! Es su responsabilidad configurar un acceso externo seguro a la API. Si no se configura correctamente, un atacante puede obtener acceso a sus cámaras e incluso a su servidor.
Descripción de la API.
Configuración del módulo
puede deshabilitar la API HTTP con listen: ""
y usar, por ejemplo, solo el protocolo cliente/servidor RTSP
puede habilitar la API HTTP solo en localhost con la configuración listen: "127.0.0.1:1984"
puede cambiar API base_path
y alojar go2rtc en la suburl del servidor web de su aplicación principal
todos los archivos de static_dir
alojados en la ruta raíz: /
puede utilizar el contenido clave/certificado TLS sin procesar o la ruta a los archivos
api: escucha: ":1984" # predeterminado ":1984", puerto API HTTP ("" - deshabilitado) nombre de usuario: "admin" # predeterminado "", autenticación básica para WebUI contraseña: "pass" # default "", autenticación básica para WebUI base_path: "/rtc" # default "", prefijo API para servir en suburl (/api => /rtc/api) static_dir: "www" # default "", carpeta para archivos estáticos (interfaz web personalizada) origen: "*" # predeterminado "", permite solicitudes CORS (solo * compatible) tls_listen: ":443" # predeterminado "", habilitar el servidor HTTPS tls_cert: | # predeterminado "", certificado de cadena completa codificado en PEM para HTTPS -----BEGIN CERTIFICATE----- ... -----END CERTIFICATE----- tls_key: | # predeterminado "", clave privada codificada en PEM para HTTPS -----BEGIN PRIVATE KEY----- ... -----END PRIVATE KEY----- unix_listen: "/tmp/go2rtc.sock " # default "", escucha de socket Unix para API
PD:
MJPEG sobre WebSocket se reproduce mejor que el MJPEG nativo debido a un error de Chrome
MP4 sobre WebSocket se creó solo para Apple iOS porque no es compatible con MSE ni MP4 nativo
Puede obtener cualquier transmisión como transmisión RTSP: rtsp://192.168.1.123:8554/{stream_name}
Puede habilitar la protección con contraseña externa para sus transmisiones RTSP. La protección con contraseña siempre está deshabilitada para llamadas de host local (por ejemplo, FFmpeg o Hass en el mismo servidor).
rtsp: escucha: ":8554" # Puerto TCP del servidor RTSP, predeterminado - 8554 nombre de usuario: "admin" # opcional, predeterminado - deshabilitado contraseña: "contraseña" # opcional, predeterminada - deshabilitada default_query: "vídeo y audio" <sp