Спробуйте створити власний пайплайн для прямої відеотрансляції: FFmpeg та MediaMTX

robot
Генерація анотацій у процесі

Хотіли коли-небудь подивитися live-відео з камер спостереження чи IoT-пристроїв у веб-браузері? Здається, це просто, але на практиці все набагато складніше.

У чому проблема

IP-камери транслюють через RTSP (Real Time Streaming Protocol), але браузери не підтримують RTSP. Ще з 2010-х років браузери виключили RTSP з міркувань безпеки. Іншими словами, камера і браузер «говорять різними мовами».

Для вирішення цієї проблеми є 2 топових інструменти:

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 працюють за тією ж схемою.

Які наступні кроки?

Поточна збірка — це демо. Для production-оточення не вистачає:

  • Відсутня автентифікація
  • Працює лише на localhost
  • Не підтримуються реальні IP-камери
  • Немає обробки помилок

У Part 2 додамо безпеку, підключення до реальних IP-камер, підготуємо до продакшену.

Переглянути оригінал
Ця сторінка може містити контент третіх осіб, який надається виключно в інформаційних цілях (не в якості запевнень/гарантій) і не повинен розглядатися як схвалення його поглядів компанією Gate, а також як фінансова або професійна консультація. Див. Застереження для отримання детальної інформації.
  • Нагородити
  • Прокоментувати
  • Репост
  • Поділіться
Прокоментувати
0/400
Немає коментарів
  • Закріпити