Побудова власного каналу для трансляції живого відео: практичний посібник з FFmpeg та MediaMTX

Проблема: Камера говорить через RTSP, але браузер не може почути

Уявімо, що ми хочемо відобразити живе відео з камер безпеки та IoT-пристроїв у веб-додатку. Більшість камер транслюють через RTSP (Протокол реального часу). Але браузери з 2010-х років припинили підтримувати RTSP. Іншими словами, основна проблема полягає в тому, що “мова, якою говорить камера”, і “мова, яку розуміє браузер”, відрізняються.

Цей переклад виконується за допомогою FFmpeg (універсальний ніж для обробки відео) та MediaMTX (сервер перетворення протоколів). Об'єднавши ці два інструменти, ви зможете створити професійний стрімінговий пайплайн з низькою затримкою.

Опис інструментів

FFmpeg: магічна паличка для конвертації будь-яких відеоформатів

Процес обробки FFmpeg:

  • Демультиплексор: відокремлення відео і звуку з контейнера
  • Декодування: перетворення стиснених даних у сирі кадри
  • Фільтрування: застосування масштабування, корекції кольору тощо
  • Кодування: стиснення H.264 або VP9
  • Мультіплекс: упакування в контейнер виходу

Для потокового використання FFmpeg працює як вхідний двигун. Він захоплює відео з веб-камери або файлів, ефективно кодує його та передає на сервер через RTSP або RTMP.

MediaMTX: протокольний хаб для роботи з кількома клієнтами

FFmpeg є одноразовим виходом, але MediaMTX може одночасно транслювати кільком клієнтам. Крім того:

  • Отримання через RTSP/RTMP/WebRTC/HLS
  • Перепакування для різних клієнтів
  • Перетворення RTSP в WebRTC (для відтворення в браузері)
  • Аутентифікація, балансування навантаження, управління клієнтами

Одним бінарним файлом і файлом налаштувань YAML можна впоратися з складними сценаріями, для яких раніше були потрібні кілька спеціалізованих серверів.

Кроки реалізації

Крок 1: Встановіть інструмент

Ubuntu/Debian:

sudo apt update sudo apt install autoconf automake build-essential pkg-config libx264-dev libvpx-dev libfdk-aac-dev git clone ffmpeg CD ffmpeg ./configure --enable-gpl --enable-libx264 --enable-nonfree зробити -j$(nproc) sudo make install

macOS:

brew install ffmpeg

Вікна: завантажити з gydan.dev → розпакувати в C:\ffmpeg → додати до системного PATH

Також встановіть MediaMTX v1.15.0 (легко в один бінарний файл).

Крок 2: Потокове відео

створення mediamtx.yml:

шляхи: test_video: джерело: видавництво

Запуск MediaMTX:

MediaMTX mediamtx.yml

Відправка відео через RTSP за допомогою FFmpeg:

ffmpeg -re -i video.mp4 -c:v libx264 -preset fast -c:a aac -f rtsp rtsp://localhost:8554/test_video

-re: збереження частоти кадрів (обов'язково для живого трансляції) -preset fast:баланс швидкості кодування

Перевірте у VLC Media Player: Media → Відкрити мережевий потік → rtsp://localhost:8554/test_video

Крок 3: Проведіть пряму трансляцію за допомогою веб-камери

Вікна:

ffmpeg -f dshow -rtbufsize 100M -i video=“Інтегрована веб-камера” -c:v libx264 -preset ultrafast -tune zerolatency -f rtsp rtsp://localhost:8554/webcam

macOS:

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

Linux:

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

-tune zerolatency є ключовим моментом. Оптимізація для реального часу потокового відео.

Крок 4: Відтворення в браузері (WebRTC)

оновлення mediamtx.yml:

WebRTC: Так webrtcАдреса: :8889 webrtcEncryption: ні webrtcAllowOrigin: '*'

шляхи: вебкамера: джерело: видавець

Перезапустіть MediaMTX і відкрийте http://localhost:8889 у браузері → живе відео відображається у браузері.

Потік даних

  1. Веб-камера → Генерація живих кадрів
  2. FFmpeg → Кодування в H.264 та відправка RTSP
  3. MediaMTX → отримання RTSP та перетворення WebRTC
  4. Браузер → Реальний програвання через WebRTC

MediaMTX не перекодує. Він просто упаковує H.264 потік у контейнери різних протоколів. Тому забезпечується низька затримка.

Підсумок цього разу

Основний конвеєр завершено:

  • FFmpeg та MediaMTX встановлені
  • Перевірка потокового відео файлів та веб-камери
  • Успішне відтворення через браузер за допомогою WebRTC

Тільки в експлуатації є проблеми:

  • Без аутентифікації та безпеки
  • працює тільки на localhost
  • Підтримка реальних IP-камер
  • Без обробки помилок

У частині 2 будуть додані аутентифікація, підключення IP-камери та підтримка Інтернету.

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