Идеальное приложение для потоковой передачи видео с камеры с поддержкой RTSP, WebRTC, HomeKit, FFmpeg, RTMP и т. д.
Небольшое приложение с нулевой зависимостью и нулевой настройкой для всех ОС (Windows, macOS, Linux, ARM)
нулевая задержка для многих поддерживаемых протоколов (минимально возможная задержка потоковой передачи)
потоковая передача с RTSP, RTMP, DVRIP, HTTP (FLV/MJPEG/JPEG/TS), USB-камер и других источников
потоковая передача из любых источников, поддерживаемая FFmpeg
потоковая передача в RTSP, WebRTC, MSE/MP4, HomeKit HLS или MJPEG
опубликовать любой исходник на популярных стриминговых сервисах (YouTube, Telegram и т. д.)
первый проект в мире с поддержкой потоковой передачи с камер HomeKit
поддержка H265 для WebRTC в браузере (только Safari, подробнее)
перекодирование на лету для неподдерживаемых кодеков через FFmpeg
воспроизводить аудиофайлы и прямые трансляции на некоторых камерах с помощью динамика
Согласование двухсторонних кодеков с несколькими источниками
микширование треков из разных источников в один поток
кодеки, поддерживаемые клиентом автоматического сопоставления
Двусторонняя аудиосвязь для некоторых камер
потоковая передача из частных сетей через ngrok
может быть интегрирован в любую платформу умного дома или использоваться как отдельное приложение
Вдохновлено:
серия стриминговых проектов от @deepch
библиотека webrtc go и вся команда @pion
Идея rtsp-simple-server от @aler9
Идея конвейера инфраструктуры GStreamer
Идея маршрутизации в рамках MediaSoup
Протокол аксессуаров HomeKit от @brutella
создатель логотипа проекта @v_novoseltsev
Быстрый старт
go2rtc: двоичный
go2rtc: Докер
go2rtc: дополнение «Домашний помощник»
go2rtc: интеграция домашнего помощника
go2rtc: версия для разработчиков
Конфигурация
Двустороннее аудио
Источник: РТСП
Источник: РТМП
Источник: HTTP
Источник: ОНВИФ
Источник: FFmpeg
Источник: Устройство FFmpeg.
Источник: Исполнительный директор
Источник: Эхо
Источник: Экспр.
Источник: ХоумКит
Источник: Пузырь
Источник: ДВРИП
Источник: Тапо
Источник: Каса
Источник: ГоПро
Источник: Ивидеон
Источник: Хасс
Источник: ИСАПИ
Источник: Нест
Источник: Роборок
Источник: ВебРТЦ
Источник: ВебТоррент
Входящие источники
Поток на камеру
Опубликовать поток
Модуль: Потоки
Модуль: API
Модуль: РТСП
Модуль: RTMP
Модуль: WebRTC
Модуль: ХоумКит
Модуль: ВебТоррент
Модуль: нгрок
Модуль: Хасс
Модуль: MP4
Модуль: ЗОЖ
Модуль: MJPEG
Модуль: Журнал
Безопасность
Фильтры кодеков
Кодеки безумие
Согласование кодеков
Проекты с использованием go2rtc
Опыт работы с камерой
СОВЕТЫ
Часто задаваемые вопросы
Загрузите двоичный файл или используйте надстройку или интеграцию Docker или Home Assistant.
Открыть веб-интерфейс: http://localhost:1984/
Необязательно:
добавьте свои потоки в файл конфигурации
настроить внешний доступ к webrtc
Разработчики:
написать свой собственный веб-интерфейс
интегрируйте веб-API в платформу вашего умного дома
Загрузите бинарный файл для вашей ОС из последней версии:
go2rtc_win64.zip
— Windows 10+ 64-разрядная версия
go2rtc_win32.zip
— Windows 7+ 32-разрядная версия
go2rtc_win_arm64.zip
— 64-разрядная версия Windows ARM
go2rtc_linux_amd64
— 64-разрядная версия Linux
go2rtc_linux_i386
— 32-разрядная версия Linux
go2rtc_linux_arm64
— 64-разрядная версия Linux ARM (например, 64-разрядная ОС Raspberry)
go2rtc_linux_arm
— 32-разрядная версия Linux ARM (например, 32-разрядная ОС Raspberry)
go2rtc_linux_armv6
— Linux ARMv6 (для старых Raspberry 1 и Zero)
go2rtc_linux_mipsel
— Linux MIPS (например, Xiaomi Gateway 3, камеры Wyze)
go2rtc_mac_amd64.zip
— macOS 10.13+ Intel 64-разрядная версия
go2rtc_mac_arm64.zip
— 64-разрядная версия macOS ARM
Не забудьте исправить права chmod +x go2rtc_xxx_xxx
на Linux и Mac.
Контейнер Docker alexxit/go2rtc
поддерживает несколько архитектур, включая amd64
, 386
, arm64
и arm
. Этот контейнер предлагает те же функции, что и надстройка Home Assistant, но предназначен для работы независимо от Home Assistant. Он поставляется с предустановленными FFmpeg, ngrok и Python.
Установить дополнение:
Настройки > Дополнения > Плюс > Репозитории > Добавить https://github.com/AlexxIT/hassio-addons
go2rtc > Установить > Пуск
Настройка интеграции
Пользовательский компонент WebRTC Camera можно использовать в любой установке Home Assistant, включая HassWP в Windows. Он может автоматически загружать и использовать последнюю версию go2rtc. Или он может подключиться к существующей версии go2rtc. Установка аддона в этом случае необязательна.
Последняя, но, возможно, нестабильная версия:
Бинарный: последний ночной выпуск
Докер: версии alexxit/go2rtc:master
или alexxit/go2rtc:master-hardware
Надстройка Hass: go2rtc master hardware
версии go2rtc master
или go2rtc master.
по умолчанию go2rtc будет искать go2rtc.yaml
в текущем рабочем каталоге.
api
сервер запустится на порту 1984 по умолчанию (TCP)
rtsp
сервер запустится на порту 8554 по умолчанию (TCP).
webrtc
будет использовать порт 8555 (TCP/UDP) для подключений.
ffmpeg
будет использовать параметры транскодирования по умолчанию
Варианты конфигурации и полный список настроек можно найти в вики.
Доступные модули:
ручьи
api — HTTP API (важно для поддержки WebRTC)
rtsp — RTSP-сервер (важно для поддержки FFmpeg)
webrtc — WebRTC-сервер
mp4 — MSE, поток MP4 и сервер снимков MP4
hls — потоковый сервер HLS TS или fMP4.
mjpeg — MJPEG-сервер
ffmpeg — интеграция FFmpeg
ngrok — интеграция ngrok (внешний доступ к частной сети)
hass - интеграция с домашним помощником
log — конфигурация журналов
go2rtc поддерживает различные типы источников потока. Вы можете настроить одну или несколько ссылок любого типа в качестве источника потока.
Доступные типы источников:
rtsp — камеры RTSP
и RTSPS
с поддержкой двустороннего звука.
rtmp — RTMP
потоки
http — HTTP-FLV
, MPEG-TS
, JPEG
(снимки), потоки MJPEG
onvif — получить ссылку RTSP
камеры и ссылку на снимок с использованием протокола ONVIF
ffmpeg — интеграция FFmpeg ( HLS
, files
и многие другие)
ffmpeg:device — локальная USB-камера или веб-камера
exec — получить медиафайлы из вывода внешнего приложения
echo — получить ссылку на поток из bash или python
expr — получить ссылку на поток через встроенный язык выражений
homekit — потоковая передача с камеры HomeKit
пузырь — потоковая передача с ESeeCloud/dvr163 NVR
dvrip — потоковая передача с DVR-IP NVR
Tapo — камеры TP-Link Tapo с поддержкой двусторонней аудиосвязи
kasa - Камеры TP-Link Kasa
gopro - Камеры GoPro
ivideon - публичные камеры от сервиса Ivideon
hass - интеграция с домашним помощником
isapi — двустороннее аудио для камер Hikvision (ISAPI)
roborock - пылесосы Roborock с камерами
webrtc — исходники WebRTC/WHEP
webtorrent — источник WebTorrent от другого go2rtc
Подробнее о входящих источниках
Поддерживается для источников:
Камеры RTSP с профилем ONVIF T (подключение по заднему каналу)
ДВРИП камеры
Камеры TP-Link Tapo
Камеры Hikvision ISAPI
Модели пылесосов Roborock с камерами
Exec аудио на сервере
Любой браузер как IP-камера
Двустороннее аудио можно использовать в браузере с технологией WebRTC. Браузер предоставит доступ к микрофону только для HTTPS-сайтов (подробнее).
go2rtc также поддерживает воспроизведение аудиофайлов и прямые трансляции на этих камерах.
потоки: sonoff_camera: rtsp://rtsp:[email protected]/av_stream/ch0 dahua_camera: - rtsp://admin:[email protected]/cam/realmonitor?channel=1&subtype=0&unicast=true&proto=Onvift- rtsp://admin:[email protected]/cam/realmonitor?channel=1&subtype=1 amcrest_doorbell: - rtsp://имя пользователя:пароль@192.168.1.123:554/cam/realmonitor?channel=1&subtype=0#backchannel=0 unifi_camera: rtspx://192.168.1.123:7441/fD6ouM72bWoFijxK glichy_camera: ffmpeg:rtsp://имя пользователя:пароль@192.168.1.123/live/ch00_1
Рекомендации
Пользователи Amcrest Doorbell могут захотеть отключить двустороннюю аудиосвязь, потому что при активном потоке у вас не будет работать кнопка вызова. Вам необходимо добавить #backchannel=0
в конец ссылки RTSP в файле конфигурации YAML.
Пользователи Dahua Doorbell могут захотеть изменить аудиокодек обратного канала
Пользователи Reolink могут вообще НЕ использовать протокол RTSP, некоторые модели камер имеют очень ужасную и непригодную для использования реализацию потока.
Пользователи Ubiquiti UniFi могут захотеть отключить проверку HTTPS. Используйте префикс rtspx://
вместо rtsps://
. И не используйте суффикс ?enableSrtp
Пользователи TP-Link Tapo могут пропустить логин и пароль, поскольку go2rtc поддерживает вход без них.
Если ваша камера имеет два канала RTSP — вы можете добавить их оба в качестве источников. Это полезно, когда потоки имеют разные кодеки, например звук AAC с основным потоком и звук PCMU/PCMA со вторым потоком.
Если поток с вашей камеры прерывается, попробуйте использовать источник ffmpeg. Это не добавит нагрузку на процессор, если вы не будете использовать транскодирование.
Если поток с вашей камеры очень глючный, попробуйте использовать перекодирование с исходником ffmpeg.
Другие варианты
Формат: rtsp...#{param1}#{param2}#{param3}
Добавить собственный тайм-аут #timeout=30
(в секундах)
Игнорировать аудио — #media=video
или игнорировать видео — #media=audio
Игнорировать API двустороннего аудио #backchannel=0
— важно для некоторых камер, которые работают с ошибками.
Использовать транспорт WebSocket #transport=ws...
RTSP через WebSocket
потоки: # WebSocket с авторизацией, RTSP — без ось-rtsp-ws: rtsp://192.168.1.123:4567/axis-media/media.amp?overview=0&camera=1&solved=1280x720&videoframeskipmode=empty&Axis-Orig-Sw=true#transport=ws://user:[email protected]:4567/ rtsp-over-websocket # WebSocket без авторизации, RTSP - с dahua-rtsp-ws: rtsp://user:[email protected]/cam/realmonitor?channel=1&subtype=1&proto=Private3#transport=ws://192.168.1.123/rtspoverwebsocket
Вы можете получить поток с RTMP-сервера, например Nginx, с помощью модуля nginx-rtmp.
потоки: rtmp_stream: rtmp://192.168.1.123/live/camera1
Поддержка типа контента:
HTTP-FLV ( video/x-flv
) — то же, что и RTMP, но через HTTP.
HTTP-JPEG ( image/jpeg
) — ссылка на снимок камеры, может быть преобразована с помощью go2rtc в поток MJPEG.
HTTP-MJPEG ( multipart/x
) — простой поток MJPEG через HTTP.
MPEG-TS ( video/mpeg
) — устаревший формат потоковой передачи.
Source также поддерживает потоки HTTP и TCP с автоматическим определением различных форматов: MJPEG , битовый поток H.264/H.265 , MPEG-TS .
потоки: # [HTTP-FLV] поток в формате video/x-flv http_flv: http://192.168.1.123:20880/api/camera/stream/780900131155/657617 # Снимки [JPEG] с камеры Dahua будут преобразованы в поток MJPEG. dahua_snap: http://admin:пароль@192.168.1.123/cgi-bin/snapshot.cgi?channel=1 # Поток [MJPEG] будет проксироваться без изменений http_mjpeg: https://mjpeg.sanford.io/count.mjpeg # [MJPEG или битовый поток H.264/H.265 или MPEG-TS] tcp_magic: tcp://192.168.1.123:12345 # Добавляем собственный заголовок custom_header: "https://mjpeg.sanford.io/count.mjpeg#header=Авторизация: Носитель XXX"
ПС. В камере Dahua есть ошибка: если для второго потока RTSP выбрать кодек MJPEG, снимок не получится.
Новое в версии 1.5.0
Источник не очень полезен, если вы уже знаете RTSP и ссылки на снимки для вашей камеры. Но это может быть полезно, если вы этого не сделаете.
WebUI > Добавить поддержку автообнаружения веб-страницы ONVIF. Ваш сервер должен находиться в той же подсети, что и камера. Если вы используете докер, вы должны использовать «сетевой хост».
потоки: dahua1: onvif://admin:[email protected] reolink1: onvif://admin:пароль@192.168.1.123:8000 тапо1: onvif://admin:пароль@192.168.1.123:2020
Вы можете получить любой поток, файл или устройство через FFmpeg и отправить его в go2rtc. Приложение автоматически запустит FFmpeg с соответствующими аргументами, когда кто-то начнет смотреть поток.
FFmpeg предварительно установлен для пользователей Docker и Hass Add-on.
Пользователи дополнений Hass могут выбирать файлы из папки /media.
Формат ffmpeg:{input}#{param1}#{param2}#{param3}
. Примеры:
потоки: # [ФАЙЛ] все треки будут скопированы без кодеков перекодирования файл1: ffmpeg:/media/BigBuckBunny.mp4 # [ФАЙЛ] видео будет перекодировано в H264, звук будет пропущен файл2: ffmpeg:/media/BigBuckBunny.mp4#video=h264 # [ФАЙЛ] видео будет скопировано, аудио будет перекодировано в pcmu file3: ffmpeg:/media/BigBuckBunny.mp4#video=copy#audio=pcmu # [HLS] видео будет скопировано, звук будет пропущен hls: ffmpeg: https://devstreaming-cdn.apple.com/videos/streaming/examples/bipbop_16x9/gear5/prog_index.m3u8#video=copy # Видео [MJPEG] будет перекодировано в H264 mjpeg: ffmpeg:http://185.97.122.128/cgi-bin/faststream.jpg#video=h264 # [RTSP] видео с поворотом, должно быть перекодировано, поэтому выберите H264 вращать: ffmpeg:rtsp://rtsp:[email protected]/av_stream/ch0#video=h264#rotate=90
Все форматы транскодирования имеют встроенные шаблоны: h264
, h265
, opus
, pcmu
, pcmu/16000
, pcmu/48000
, pcma
, pcma/16000
, pcma/48000
, aac
, aac/16000
.
Но вы можете переопределить их через конфигурацию YAML. Вы также можете добавить свои собственные форматы в конфигурацию и использовать их с исходными параметрами.
ffmpeg: bin: ffmpeg # путь к двоичному файлу ffmpeg h264: "-codec:v libx264 -g:v 30 -preset:v superfast -tune:v нулевая задержка -profile:v main -level:v 4.1" mycodec: "-любые аргументы, поддерживаемые ffmpeg..." myinput: "-fflags nobuffer -flags low_delay -timeout 5000000 -i {input}" myraw: "-сс 00:00:20"
Вы можете использовать имя потока go2rtc в качестве входных данных ffmpeg (например, ffmpeg:camera1#video=h264
).
Вы можете использовать параметры video
и audio
несколько раз (например, #video=copy#audio=copy#audio=pcmu
).
Вы можете использовать параметр rotate
со значениями 90
, 180
, 270
или -90
, что важно при транскодировании (например, #video=h264#rotate=90
).
Вы можете использовать параметры width
и/или height
, важные при транскодировании (например, #video=h264#width=1280
).
Вы можете использовать drawtext
для добавления отметки времени (например, drawtext=x=2:y=2:fontsize=12:fontcolor=white:box=1:boxcolor=black
)
Это значительно увеличит загрузку ЦП сервера даже с аппаратным ускорением.
Вы можете использовать raw
параметр для любых дополнительных аргументов FFmpeg (например, #raw=-vf transpose=1
).
Вы можете использовать input
параметр, чтобы переопределить шаблон ввода по умолчанию (например, #input=rtsp/udp
изменит транспорт RTSP с TCP на UDP+TCP).
Вы можете использовать необработанное входное значение (например, #input=-timeout 5000000 -i {input}
).
Вы можете добавить свои собственные шаблоны ввода.
Узнайте больше об аппаратном ускорении.
ПС. Рекомендуется проверить доступное оборудование на странице добавления WebUI.
Вы можете получить видео с любой USB-камеры или веб-камеры в виде потока RTSP или WebRTC. Это часть интеграции FFmpeg.
проверить доступные устройства в веб-интерфейсе
video_size
и framerate
должны поддерживаться вашей камерой!
для Linux пока поддерживается только видео
для macOS вы можете транслировать камеру Facetime или весь рабочий стол!
для macOS важно установить правильную частоту кадров
Формат: ffmpeg:device?{input-params}#{param1}#{param2}#{param3}
потоки: 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
ПС. Рекомендуется проверить доступные устройства на странице добавления WebUI.
Источник Exec может запускать любое внешнее приложение и ожидать от него данных. Поддерживаются два транспорта — Pipe ( начиная с v1.5.0 ) и RTSP .
Если вы хотите использовать RTSP- транспорт — команда должна содержать аргумент {output}
в любом месте. При запуске он будет заменен локальным адресом RTSP-сервера.
Pipe считывает данные из стандартного вывода приложения в разных форматах: MJPEG , битовый поток H.264/H.265 , MPEG-TS . Также канал может записывать данные в стандартный ввод приложения в двух форматах: PCMA и PCM/48000 .
Источник можно использовать с:
FFmpeg — исходный код go2rtc ffmpeg просто ярлык для источника exec
FFplay — воспроизводить аудио на вашем сервере
GStreamer
Камеры Raspberry Pi
любое ваше собственное программное обеспечение
Команды канала поддерживают параметры (формат: exec:{command}#{param1}#{param2}
):
killsignal
- сигнал, который будет отправлен для остановки процесса (числовая форма)
killtimeout
- время в секундах для принудительного завершения с помощью sigkill
backchannel
- включить обратный канал для двустороннего звука
потоки: поток: exec:ffmpeg -re -i /media/BigBuckBunny.mp4 -c copy -rtsp_transport tcp -f rtsp {выходной} 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 - канон: 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
Некоторые источники могут иметь динамическую ссылку. И вам нужно будет получить его с помощью скрипта bash или python. Ваш скрипт должен содержать ссылку на источник. RTSP, FFmpeg или любой из поддерживаемых источников.
Пользователи дополнений Docker и Hass предустановили python3
, curl
, jq
.
Посмотрите примеры в вики.
потоки: apple_hls: echo:python3 hls.py https://developer.apple.com/streaming/examples/basic-stream-osx-ios5.html
Новое в версии 1.8.2
Подобен источнику echo
, но использует встроенный язык выражений expr (подробнее).
Важный:
Вы можете использовать камеры HomeKit без устройств Apple (iPhone, iPad и т. д.), это просто еще один протокол.
Устройство HomeKit можно подключить только к одной экосистеме. Итак, если вы подключили его к iPhone (Apple Home), вы не сможете подключить его к Home Assistant или go2rtc. Или, если вы подключили его к go2rtc, вы не сможете подключить его к iPhone.
Устройство HomeKit должно находиться в одной сети с работающим mDNS между устройством и go2rtc.
go2rtc поддерживает импорт сопряженных устройств HomeKit из Home Assistant. Таким образом, вы можете использовать камеру HomeKit с Hass и go2rtc одновременно. Если вы используете Hass, я рекомендую выполнить сопряжение с ним устройств, это даст вам больше возможностей.
Вы можете выполнить сопряжение устройства с go2rtc на странице HomeKit. Если вы не видите свои устройства – перезагрузите страницу. Также попробуйте перезагрузить устройство HomeKit (выключить). Если вы по-прежнему его не видите, значит, у вас проблемы с mDNS.
Если вы видите устройство, но на нем нет кнопки сопряжения, значит, оно подключено к какой-либо экосистеме (Apple Home, Home Assistant, HomeBridge и т. д.). Вам необходимо удалить устройство из этой экосистемы, и оно будет доступно для сопряжения. Если вы не можете отсоединить устройство, вам придется перезагрузить его.
Важный:
Аудио HomeKit использует очень нестандартный кодек AAC-ELD с очень нестандартными параметрами и нарушением спецификации.
Аудио невозможно воспроизвести в VLC
и, возможно, в любом другом проигрывателе.
Аудио должно быть перекодировано для использования с MSE, WebRTC и т. д.
Рекомендуемые настройки для использования камеры HomeKit с WebRTC, MSE, MP4, RTSP:
streams: aqara_g3: - hass:Camera-Hub-G3-AB12 - ffmpeg:aqara_g3#audio=aac#audio=opus
RTSP-ссылка с «нормальным» звуком для любого плеера: rtsp://192.168.1.123:8554/aqara_g3?video&audio=aac
Этот источник находится в активной разработке! Протестировано только с Aqara Camera Hub G3 (версии для ЕС и Китая).
Новое в версии 1.6.1
Другие названия: ESeeCloud, dvr163.
вы можете пропустить username
, password
, port
, ch
и stream
если они установлены по умолчанию.
настроить отдельные потоки для разных каналов и потоков
потоки: camera1: bubble://имя пользователя:пароль@192.168.1.123:34567/bubble/live?ch=0&stream=0
Новое в версии 1.2.0
Другие названия: DVR-IP, NetSurveillance, протокол Sofia (плагин NETsurveillance ActiveX XMeye SDK).
вы можете пропустить username
, password
, port
, channel
и subtype
если они установлены по умолчанию.
настроить отдельные потоки для разных каналов
используйте subtype=0
для основного потока и subtype=1
для потока Extra1.
поддерживается только протокол TCP
потоки: only_stream: dvrip://имя пользователя:пароль@192.168.1.123:34567?channel=0&subtype=0 only_tts: dvrip://имя пользователя:пароль@192.168.1.123:34567?backchannel=1 two_way_audio: - dvrip://имя пользователя:пароль@192.168.1.123:34567?channel=0&subtype=0- dvrip://имя пользователя:пароль@192.168.1.123:34567?backchannel=1
Новое в версии 1.2.0
Собственный протокол камеры TP-Link Tapo с поддержкой двусторонней передачи звука .
качество потока такое же, как у протокола RTSP
используйте облачный пароль , это не пароль RTSP! логин добавлять не нужно!
вы также можете использовать хэш MD5 в ЗАГЛАВНОМ регистре из своего облачного пароля с именем admin
.
некоторые новые прошивки камер требуют SHA256 вместо MD5
потоки: # пароль облака без имени пользователя камера1: тапо://[email protected] # имя пользователя администратора и хэш облачного пароля MD5 в ЗАГЛАВНОМ регистре камера2: тапо://admin:[email protected] # имя пользователя администратора и хэш облачного пароля SHA256 в ЗАГЛАВНОМ регистре камера3: тапо://админ:ПРОПИСНЫЕ[email protected]
echo -n "пароль облака" | мд5 | awk '{print toupper($0)}'echo -n "пароль облака" | шасум -а 256 | awk '{print toupper($0)}'
Новое в версии 1.7.0
Нестандартный протокол TP-Link Kasa подробнее.
username
— адрес электронной почты, безопасный для URL, [email protected]
-> alex%40gmail.com
password
- base64password, secret1
-> c2VjcmV0MQ==
потоки: kc401: kasa://имя пользователя:пароль@192.168.1.123:19443/https/stream/mixed
Протестировано: КД110, КС200, КС401, КС420WS, EC71.
Новое в версии 1.8.3
Поддержка потоковой передачи с камер GoPro, подключенных через USB или Wi-Fi к Linux, Mac, Windows. Читать далее.
Поддержка публичных камер от сервиса Ivideon.
потоки: quailcam: ivideon:100-tu5dkUPct39cTp9oNEN2B6/0
Поддержка импорта ссылок на камеры из файлов конфигурации Home Assistant:
Общая камера, настройка через графический интерфейс
ГлавнаяKit Камера
ОНВИФ
Пылесосы Roborock с камерой.
hass: config: "/config" # пропустите этот параметр, если у вас есть дополнительные пользовательские потоки Hass: generic_camera: hass:Camera1 # Настройки > Интеграции > Имя интеграции aqara_g3: hass:Camera-Hub-G3-AB12
Камеры WebRTC ( начиная с версии 1.6.0 )
Поддерживаются любые камеры в формате WebRTC. Но на данный момент Home Assistant поддерживает только некоторые камеры Nest в этом формате.
Важный. Nest API позволяет получить ссылку на поток только на 5 минут. Не используйте это с Фрегатом! Если срок действия потока истечет, Frigate за считанные секунды израсходует всю доступную оперативную память вашего компьютера. Рекомендуется использовать исходный код Nest — он поддерживает расширение потока.
потоки: # ссылка на Home Assistant Supervised hass-webrtc1: hass://supervisor?entity_id=camera.nest_doorbell # ссылка на внешний Hass с долгоживущими токенами доступа hass-webrtc2: hass://192.168.1.123:8123?entity_id=camera.nest_doorbell&token=eyXYZ...
RTSP-камеры
По умолчанию API Home Assistant не позволяет получать динамическую ссылку RTSP на поток камеры. Таким образом, с помощью этого метода можно импортировать больше камер, таких как Tuya и, возможно, другие.
Новое в версии 1.3.0
Этот тип источника поддерживает только звук обратного канала для протокола Hikvision ISAPI. Поэтому его следует использовать в качестве второго источника в дополнение к протоколу RTSP.
потоки: hikvision1: - rtsp://admin:[email protected]:554/Streaming/Channels/101- isapi://admin:[email protected]:80/
Новое в версии 1.6.0
В настоящее время поддерживаются только камеры WebRTC.
Для простоты рекомендуется подключить камеру Nest/WebRTC к Home Assistant. Но если вы каким-то образом сможете получить указанные ниже параметры — источник Nest/WebRTC будет работать без Hass.
потоки: гнездо-дверный звонок: гнездо:?client_id=***&client_secret=***&refresh_token=***&project_id=***&device_id=***
Новое в версии 1.3.0
Этот тип источника поддерживает пылесосы Roborock с камерами. Известные рабочие модели:
Roborock S6 MaxV — только видео (микрофона у пылесоса нет)
Roborock S7 MaxV — видео и двустороннее аудио
Roborock Qrevo MaxV — видео и двустороннее аудио
Поддержка исходной загрузки учетных данных Roborock из пользовательской или базовой интеграции Home Assistant. В противном случае вам необходимо войти в свою учетную запись Roborock (учетная запись MiHome не поддерживается). Перейдите к: go2rtc WebUI > Добавить веб-страницу. Скопируйте исходный roborock://...
для вашего пылесоса и вставьте его в конфигурацию go2rtc.yaml
.
Если у вас есть графический пин-код для вашего пылесоса — добавьте его как числовой пин-код (строки: 123, 456, 789) в конец ссылки roborock.
Новое в версии 1.3.0
Этот тип источника поддерживает четыре формата подключения.
черт возьми
WebRTC/WHEP — заменен стандартом WebRTC/WISH для средств просмотра видео/аудио WebRTC. Но возможно, он уже поддерживается в каком-то стороннем программном обеспечении. Это поддерживается в go2rtc.
go2rtc
Этот формат поддерживается только в go2rtc. В отличие от WHEP он поддерживает асинхронное соединение WebRTC и двустороннюю аудиосвязь.
openipc ( из версии 1.7.0 )
Поддержка подключения к камерам OpenIPC.
wyze ( из версии 1.6.1 )
Поддерживает подключение к камерам Wyze по протоколу WebRTC. Вы можете использовать проект docker-wyze-bridge для получения учетных данных для подключения.
кинезис ( из версии 1.6.1 )
Поддерживает видеопотоки Amazon Kinesis с использованием протокола WebRTC. Вам необходимо указать URL-адрес сигнального WebSocket со всеми учетными данными в параметрах запроса, списке client_id
и ice_servers
в формате JSON.
потоки: 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=[{...},{...}]
ПС. Для источников kinesis
вы можете использовать echo для получения параметров соединения с помощью bash
/ python
или любого другого языка сценариев.
Новое в версии 1.3.0
Этот источник может получить поток от другого go2rtc по протоколу WebTorrent.
потоки: webtorrent1: webtorrent:?share=huofssuxaty00izc&pwd=k3l2j9djeg8v8r7e
По умолчанию go2rtc устанавливает соединение с источником, когда его запрашивает любой клиент. Go2rtc разрывает соединение с источником, когда у него не осталось клиентов.
Go2rtc также может принимать входящие источники в форматах RTSP, RTMP, HTTP и WebRTC/WHIP.
Go2rtc не остановит такой источник, если у него нет клиентов.
Вы можете отправлять данные только в существующий поток (создать поток с пустым источником в конфигурации)
Вы можете поместить несколько входящих источников в один поток.
Вы можете отправить данные в непустой поток, чтобы внутри него были дополнительные кодеки.
Примеры
RTSP с любым кодеком
ffmpeg -re -i BigBuckBunny.mp4 -c copy -rtsp_transport tcp -f rtsp rtsp://localhost:8554/camera1
HTTP-MJPEG с кодеком MJPEG
ffmpeg -re -i BigBuckBunny.mp4 -c mjpeg -f mpjpeg http://localhost:1984/api/stream.mjpeg?dst=camera1
HTTP-FLV с кодеками H264, AAC
ffmpeg -re -i BigBuckBunny.mp4 -c copy -f flv http://localhost:1984/api/stream.flv?dst=camera1
MPEG-TS с кодеком H264
ffmpeg -re -i BigBuckBunny.mp4 -c copy -f mpegts http://localhost:1984/api/stream.ts?dst=camera1
Новое в версии 1.3.0
Вы можете превратить браузер любого ПК или мобильного телефона в IP-камеру с поддержкой видео и двустороннего звука. Или даже транслируйте экран вашего ПК:
Создайте пустой поток в go2rtc.yaml
Перейти к веб-интерфейсу go2rtc
Открыть страницу links
для вашего потока
Выберите вариант camera+microphone
или display+speaker
Откройте локальную страницу webrtc
(ваш go2rtc должен работать через HTTPS! ) или share link
через технологию WebTorrent (по умолчанию работает через HTTPS).
Новое в версии 1.3.0
Вы можете использовать OBS Studio или любое другое программное обеспечение для вещания с поддержкой протокола WHIP. Этот стандарт еще не утвержден. Но вы можете скачать дев-версию OBS Studio:
Настройки > Поток > Сервис: WHIP > http://192.168.1.123:1984/api/webrtc?dst=camera1
Новое в версии 1.3.0
Поддержка go2rtc позволяет воспроизводить аудиофайлы (например, музыку или TTS) и прямые трансляции (например, радио) на камерах с поддержкой двусторонней аудиосвязи (камеры RTSP/ONVIF, TP-Link Tapo, Hikvision ISAPI, пылесосы Roborock, любой браузер).
Пример API:
POST http://localhost:1984/api/streams?dst=camera1&src=ffmpeg:http://example.com/song.mp3#audio=pcma#input=file
вы можете транслировать: локальные файлы, веб-файлы, прямые трансляции или любой формат, поддерживаемый FFmpeg.
вам следует использовать источник ffmpeg для перекодирования звука в кодек, который поддерживает ваша камера.
вы можете проверить кодеки камеры на информационной странице веб-интерфейса go2rtc, когда поток активен.
некоторые камеры поддерживают только кодек PCMA/8000
низкого качества (например, Tapo)
рекомендуется выбирать форматы более высокого качества, если ваша камера их поддерживает (например, PCMA/48000
для некоторых камер Dahua).
если вы воспроизводите файлы по http-ссылке, вам необходимо добавить параметры #input=file
для перекодирования, чтобы файл перекодировался и воспроизводился в реальном времени.
если вы воспроизводите прямые трансляции, вам следует пропустить параметр #input
, поскольку он уже идет в режиме реального времени.
остановить активное воспроизведение можно, вызвав API с пустым параметром src
вы увидите одного активного производителя и одного активного потребителя на информационной странице веб-интерфейса go2rtc во время потоковой передачи.
Новое в версии 1.8.0
Вы можете опубликовать любой поток на стриминговых сервисах (YouTube, Telegram и т. д.) по RTMP/RTMPS. Важный:
Поддерживаемые кодеки: H264 для видео и AAC для аудио.
Для YouTube требуется звук AAC, видео без звука не будет работать.
Для этой задачи вам не нужно включать прослушивание модуля RTMP.
Вы можете использовать API:
POST http://localhost:1984/api/streams?src=camera1&dst=rtmps://...
Или файл конфигурации:
Publish: # опубликовать поток "video_audio_transcode" в Telegram видео_аудио_транскод: - rtmps://xxx-x.rtmp.t.me/s/xxxxxxxxxx:xxxxxxxxxxxxxxxxxxxxxxxx # опубликовать поток «audio_transcode» в Telegram и YouTube аудио_транскод: - rtmps://xxx-x.rtmp.t.me/s/xxxxxxxxxx:xxxxxxxxxxxxxxxxxxxxxxxx- 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 аудио_транскод: - ffmpeg:rtsp://user:[email protected]/stream1#video=copy#audio=aac
Приложение Telegram для ПК > Любой общедоступный или частный канал или группа (где вы являетесь администратором) > Прямая трансляция > Начать с... > Начать трансляцию.
YouTube > Создать > Запустить трансляцию > Задержка трансляции: сверхнизкая задержка > Копировать: URL-адрес трансляции + ключ трансляции.
HTTP API — основная часть взаимодействия с приложением. Адрес по умолчанию: http://localhost:1984/
.
Важный! go2rtc передает запросы с локального хоста и сокета unix без авторизации HTTP, даже если она у вас настроена! Вы несете ответственность за настройку безопасного внешнего доступа к API. При неправильной настройке злоумышленник может получить доступ к вашим камерам и даже вашему серверу.
Описание API.
Конфигурация модуля
вы можете отключить HTTP API с помощью listen: ""
и использовать, например, только протокол клиент/сервер RTSP.
вы можете включить HTTP API только на локальном хосте с настройкой listen: "127.0.0.1:1984"
вы можете изменить API base_path
и разместить go2rtc на субурле основного веб-сервера приложения.
все файлы из static_dir
размещенные по корневому пути: /
вы можете использовать необработанное содержимое сертификата/ключа TLS или путь к файлам
api: Listen: ":1984" # default ":1984", порт HTTP API ("" - отключено) имя пользователя: "admin" # default "", Базовая аутентификация для WebUI пароль: «pass» # default «», Базовая аутентификация для WebUI base_path: "/rtc" # default "", префикс API для подачи по субurl (/api => /rtc/api) static_dir: "www" # default "", папка для статических файлов (пользовательский веб-интерфейс) origin: "*" # default "", разрешить запросы CORS (поддерживается только *) tls_listen: ":443" # default "", включить HTTPS-сервер tls_cert: | # по умолчанию "", сертификат полной цепочки PEM-кодирования для HTTPS -----НАЧАТЬ СЕРТИФИКАТ ----- ... ----- КОНЕЦ СЕРТИФИКАТА ----- tls_key: | # по умолчанию "", закрытый ключ в кодировке PEM для HTTPS -----BEGIN PRIVATE KEY ----- ... -----END PRIVATE KEY ----- unix_listen: "/tmp/go2rtc.sock " # default "", прослушиватель сокетов Unix для API
ПС:
MJPEG через WebSocket воспроизводится лучше, чем собственный MJPEG, из-за ошибки Chrome
MP4 через WebSocket был создан только для Apple iOS, поскольку он не поддерживает MSE и собственный MP4.
Вы можете получить любой поток как RTSP-поток: rtsp://192.168.1.123:8554/{stream_name}
Вы можете включить внешнюю защиту паролем для ваших потоков RTSP. Защита паролем всегда отключена для вызовов локального хоста (например, FFmpeg или Hass на том же сервере).
rtsp: Listen: ":8554" # TCP-порт RTSP-сервера, по умолчанию - 8554 имя пользователя: "admin" # необязательно, по умолчанию - отключено пароль: "pass" # необязательно, по умолчанию - отключено default_query: "видео и аудио" <sp