Давайте создадим собственный конвейер для живого видеостриминга: о FFmpeg и MediaMTX

robot
Генерация тезисов в процессе

Вы когда-нибудь хотели просматривать живое видео с охранных камер или IoT-устройств прямо в веб-браузере? Кажется просто, но на практике это довольно хлопотно.

В чем проблема

IP-камеры транслируют видео по RTSP (Real Time Streaming Protocol), но браузеры RTSP не поддерживают. С 2010-х годов браузеры убрали поддержку RTSP по соображениям безопасности. То есть, камера и браузер говорят на разных языках.

Для решения этой проблемы есть два отличных инструмента:

FFmpeg — бог обработки видео. Универсальный инструмент, который используют даже VLC и видеопотоковые сервисы типа Netflix.

MediaMTX — легковесный стриминговый сервер. Может, например, преобразовывать RTSP в WebRTC.

Что нужно сделать — 3 шага

1. Стримим видеофайл

Создайте конфиг MediaMTX (mediamtx.yml): yaml paths: test_video: source: publisher

Транслируйте файл по RTSP: bash ffmpeg -re -i your_video.mp4 -c:v libx264 -preset fast -c:a aac -f rtsp rtsp://localhost:8554/test_video

Проверьте результат в VLC.

2. Вещаем с веб-камеры в реальном времени

Добавьте в конфиг MediaMTX: yaml paths: webcam: source: publisher

Windows: bash ffmpeg -f dshow -rtbufsize 100M -i video=“Integrated Webcam” -c:v libx264 -preset ultrafast -tune zerolatency -f rtsp rtsp://localhost:8554/webcam

Mac: bash ffmpeg -f avfoundation -framerate 30 -video_size 1280x720 -i “0” -c:v libx264 -preset ultrafast -tune zerolatency -f rtsp rtsp://localhost:8554/webcam

Linux: bash ffmpeg -f v4l2 -i /dev/video0 -c:v libx264 -preset ultrafast -tune zerolatency -c:a aac -f rtsp rtsp://localhost:8554/webcam

3. Делаем просмотр в браузере (магия WebRTC)

Вот где начинается самое интересное. Включаем поддержку WebRTC в MediaMTX:

yaml webrtc: yes webrtcAddress: :8889 webrtcEncryption: no webrtcAllowOrigin: ‘*’ webrtcLocalUDPAddress: :8189 webrtcIPsFromInterfaces: yes

paths: test_video: source: publisher webcam: source: publisher

Откройте в браузере http://localhost:8889/ — RTSP автоматически преобразуется в WebRTC и воспроизводится в браузере. Всё!

Как проходит поток данных

  1. Камера → сырые кадры
  2. FFmpeg → H.264 кодирование → RTSP трансляция
  3. MediaMTX → принимает RTSP
  4. Браузер → запрашивает WebRTC
  5. MediaMTX → автоматически преобразует → WebRTC стрим
  6. Браузер → воспроизводит в реальном времени

Преобразование происходит без перекодирования — это эффективно. По такому же принципу работает масштабная система Netflix.

Что дальше?

Текущая настройка — уровень демо. Для продакшна не хватает:

  • Нет аутентификации
  • Только localhost
  • Нет поддержки реальных IP-камер
  • Нет обработки ошибок

В Part 2 добавим безопасность, подключим настоящие IP-камеры и подготовим к продакшену.

Посмотреть Оригинал
На этой странице может содержаться сторонний контент, который предоставляется исключительно в информационных целях (не в качестве заявлений/гарантий) и не должен рассматриваться как поддержка взглядов компании Gate или как финансовый или профессиональный совет. Подробности смотрите в разделе «Отказ от ответственности» .
  • Награда
  • комментарий
  • Репост
  • Поделиться
комментарий
0/400
Нет комментариев
  • Закрепить