Вы когда-нибудь хотели просматривать живое видео с охранных камер или IoT-устройств прямо в веб-браузере? Кажется просто, но на практике это довольно хлопотно.
В чем проблема
IP-камеры транслируют видео по RTSP (Real Time Streaming Protocol), но браузеры RTSP не поддерживают. С 2010-х годов браузеры убрали поддержку RTSP по соображениям безопасности. То есть, камера и браузер говорят на разных языках.
Для решения этой проблемы есть два отличных инструмента:
FFmpeg — бог обработки видео. Универсальный инструмент, который используют даже VLC и видеопотоковые сервисы типа Netflix.
MediaMTX — легковесный стриминговый сервер. Может, например, преобразовывать RTSP в WebRTC.
Откройте в браузере http://localhost:8889/ — RTSP автоматически преобразуется в WebRTC и воспроизводится в браузере. Всё!
Как проходит поток данных
Камера → сырые кадры
FFmpeg → H.264 кодирование → RTSP трансляция
MediaMTX → принимает RTSP
Браузер → запрашивает WebRTC
MediaMTX → автоматически преобразует → WebRTC стрим
Браузер → воспроизводит в реальном времени
Преобразование происходит без перекодирования — это эффективно. По такому же принципу работает масштабная система Netflix.
Что дальше?
Текущая настройка — уровень демо. Для продакшна не хватает:
Нет аутентификации
Только localhost
Нет поддержки реальных IP-камер
Нет обработки ошибок
В Part 2 добавим безопасность, подключим настоящие IP-камеры и подготовим к продакшену.
Посмотреть Оригинал
На этой странице может содержаться сторонний контент, который предоставляется исключительно в информационных целях (не в качестве заявлений/гарантий) и не должен рассматриваться как поддержка взглядов компании Gate или как финансовый или профессиональный совет. Подробности смотрите в разделе «Отказ от ответственности» .
Давайте создадим собственный конвейер для живого видеостриминга: о FFmpeg и MediaMTX
Вы когда-нибудь хотели просматривать живое видео с охранных камер или 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 и воспроизводится в браузере. Всё!
Как проходит поток данных
Преобразование происходит без перекодирования — это эффективно. По такому же принципу работает масштабная система Netflix.
Что дальше?
Текущая настройка — уровень демо. Для продакшна не хватает:
В Part 2 добавим безопасность, подключим настоящие IP-камеры и подготовим к продакшену.