Транслируем онлайн камеру в Ютуб на VPS

Нужно отдать RTSP-поток с IP-камеры в YouTube Live, не держа ffmpeg руками на хосте. Собран Docker-образ, который поднимает трансляцию на VPS и гонит поток в YouTube.

Образ

Репозиторий на Docker Hub: alekseykrivoshein/rtsptoyoutube. Внутри – ffmpeg (или обвязка вокруг него), на входе RTSP URL камеры, на выходе RTMP-ключ YouTube.

Что понадобится

  • VPS или хост с Docker (удобно, когда камера в локалке, а стрим уходит наружу с VPS, если есть маршрутизация/VPN; либо Docker рядом с камерой при белом IP);
  • камера с RTSP (логин/пароль в URL, если нужны);
  • канал YouTube с включённым Live и stream key из YouTube Studio.

Запуск

Типовой сценарий: передать переменные с URL камеры и ключом стрима, контейнер держит соединение и перезапускается при обрыве (зависит от restart-политики). Пример каркаса:

docker run -d --name rtsp2yt --restart unless-stopped \
  -e RTSP_URL="rtsp://user:pass@192.168.1.50:554/stream1" \
  -e YOUTUBE_KEY="xxxx-xxxx-xxxx-xxxx" \
  alekseykrivoshein/rtsptoyoutube

Имена переменных и точный API образа смотрите в описании на Docker Hub: у разных сборок могут отличаться STREAM_KEY, RTMP_URL и флаги ffmpeg. Ключ YouTube не коммитьте в git и не светите в публичных логах.

Пример в бою

Рабочий пример трансляции: bolotnaya.online/online-camera. Там же можно глянуть, как выглядит выходной поток с камеры.

Docker у Beget

Образ прогонялся на Docker-окружении Beget. Краткая шпаргалка по Docker у провайдера: domaintools.site/begetdocker. На любом VPS логика та же: Docker + доступ к RTSP + исходящий 1935/443 к YouTube RTMP.

На что смотреть при сбоях

  • камера отвечает по RTSP с хоста контейнера (ffprobe / vlc с того же сервера);
  • правильный path потока (main/substream), иначе чёрный экран или обрыв;
  • YouTube: стрим «жив» в Studio, ключ не сброшен, нет блокировки Live у канала;
  • битрейт и разрешение камеры не выше лимитов Live для вашего типа трансляции;
  • NAT/firewall: исходящий RTMP не режется.

Источники и ссылки


Комментарии загружаются…