Mediamtx: различия между версиями

Материал из ALT Linux Wiki
Строка 102: Строка 102:
Для трансляции видео с камеры смартфона можно использовать протокол rtmp. Для этого необходимо скачать приложение, поддерживающее эту функцию и добавить в него url следующего вида:
Для трансляции видео с камеры смартфона можно использовать протокол rtmp. Для этого необходимо скачать приложение, поддерживающее эту функцию и добавить в него url следующего вида:
<syntaxhighlight>
<syntaxhighlight>
rtmp://192.168.1.55:1935/video
rtmp://192.168.1.55:1935/smartphone
</syntaxhighlight>
</syntaxhighlight>
* rtmp:// - протокол передачи видеопотока
* rtmp:// - протокол передачи видеопотока
* 192.168.1.55 - ip адрес сервера mediamtx  
* 192.168.1.55 - ip адрес сервера mediamtx  
* 1935 - порт, на котором mediamtx принимает соединения по rtmp
* 1935 - порт, на котором mediamtx принимает соединения по rtmp
* video -  название видеопотока.
* smartphone -  название видеопотока.
* Порт для подключения можно узнать из конфигурационного файла или следующей строки, которую mediamtx выводит в стандартный вывод в первые секунды запуска:<syntaxhighlight> INF [RTMP] listener opened on :1935</syntaxhighlight>
* Порт для подключения можно узнать из конфигурационного файла или следующей строки, которую mediamtx выводит в стандартный вывод в первые секунды запуска:<syntaxhighlight> INF [RTMP] listener opened on :1935</syntaxhighlight>
В случае успешного подключения видеопоток можно будет посмотреть в браузере по следующему адресу:
<syntaxhighlight>
http://<ip адрес>:PORT/smartphone
</syntaxhighlight>
* В качестве ip-адреса укажите адрес, на котором запущен mediamtx.
* Название трансляции smartphone замените на своё
* Порт для просмотра видеопотока по HTTP можно узнать из конфигурационного файла или следующей строки, которую mediamtx выводит в стандартный вывод в первые секунды запуска:<syntaxhighlight>INF [WebRTC] listener opened on :8889 (HTTP)</syntaxhighlight>

Версия от 15:05, 17 октября 2024

Введение

MediaMTX — это простой сервер потокового видео, который поддерживает работу с камерами и другими источниками видео. В этом руководстве мы рассмотрим, как установить MediaMTX на Linux и подключить камеры.

Установка MediaMTX

# apt-get update
# apt-get install mediamtx

Запуск MediaMTX

$ mediamtx <путь к конфигурационному файлу>

Если путь к конфигурационному файлу не указан, mediamtx будет искать в следующих путяхL:

  • ./rtsp-simple-server.yml (в текущем каталоге)
  • ./mediamtx.yml (в текущем каталоге)
  • /usr/local/etc/mediamtx.yml
  • /usr/etc/mediamtx.yml
  • /etc/mediamtx/mediamtx.yml

Пример готового конфигурационного файла можно взять из репозитория: https://git.altlinux.org/gears/m/mediamtx.git?p=mediamtx.git;a=summary

Основные параметры meediaMTX

Примеры использования

Трансляция с IP-камеры

Для подключения IP-камеры с RTSP-потоком необходимо добавить в секцию paths следующие строки

my_camera:
  source: rtsp://login:password@92.168.10.44:554
  • my_camera: Это имя вашей трансляции. Его можно использовать в конфигурации MediaMTX для идентификации источника.
  • source: URL потока, указывающий на вашу IP-камеру. В данном случае:
  • rtsp:// – протокол передачи данных для потокового видео.
  • login:password – учетные данные (логин и пароль) для доступа к камере.
  • 192.168.10.44:554 – IP-адрес камеры и порт (обычно 554 для RTSP).

В случае успешного подключения видеопоток можно будет посмотреть в браузере по следующему адресу:

http://<ip адрес>:PORT/my_camera
  • В качестве ip-адреса укажите адрес, на котором запущен mediamtx.
  • Название трансляции my_camera замените на своё
  • Порт для просмотра видеопотока по HTTP можно узнать из конфигурационного файла или следующей строки, которую mediamtx выводит в стандартный вывод в первые секунды запуска:
    INF [WebRTC] listener opened on :8889 (HTTP)

Трансляцияя с квадрокоптера

Для примера возьмем квадрокоптер Parrot AR.Drone 2.0. Штатным способом получения видеопотока является ffplay:

ffplay tcp://192.168.1.1:5555

Для трансляции через mediamtx нам необходимо перекодировать видео с другими кодеками. Для этого нужно выполнить следующую команду на компьютере, находящимся в одной сети с дроном:

ffmpeg -i tcp://192.168.1.1:5555 -c:v libx264 -bf 0 -c:a libopus -f flv rtmp://10.64.128.195/drone
  • ffmpeg: Команда для запуска программы обработки мультимедиа.
  • -i tcp://192.168.1.1:5555: Указывает исходный поток. Здесь используется TCP-поток с IP квадрокоптера.
  • -c:v libx264: Задает кодек для видео, в данном случае используется H.264, который обеспечивает хорошую сжатие и качество.
  • -bf 0: Указывает, что не нужно использовать предсказания кадров (B-frames), что может снизить задержку.
  • -c:a libopus: Указывает кодек для аудио (Opus), который подходит для передачи звука.
  • -f flv: Указывает формат вывода (FLV), используемый для RTMP.
  • rtmp://192.168.1.50/drone: URL, по которому будет отправляться поток. Этот адрес указывает на сервер RTMP, который будет обрабатывать и передавать поток. drone -имя трансляции.
  • Порт для подключения можно узнать из конфигурационного файла или следующей строки, которую mediamtx выводит в стандартный вывод в первые секунды запуска:
     INF [RTMP] listener opened on :1935

В случае успешного подключения видеопоток можно будет посмотреть в браузере по следующему адресу:

http://<ip адрес>:PORT/drone
  • В качестве ip-адреса укажите адрес, на котором запущен mediamtx.
  • Название трансляции drone замените на своё
  • Порт для просмотра видеопотока по HTTP можно узнать из конфигурационного файла или следующей строки, которую mediamtx выводит в стандартный вывод в первые секунды запуска:
    INF [WebRTC] listener opened on :8889 (HTTP)

Трансляция рабочего стола

Для трансляции рабочего стола используется команда, аналогичная предыдущему пункту.

ffmpeg -f x11grab -s 1366x768 -i :0.0 -c:v libx264 -bf 0 -f rtsp rtsp://10.64.128.195:8554/screen
  • ffmpeg: Команда для запуска программы обработки мультимедиа.
  • -f x11grab: Указывает, что будет использоваться захват экрана из X11 (системы окон Unix).
  • -s 1366x768: Устанавливает разрешение захвата экрана; в данном случае 1366x768 пикселей.
  • -i :0.0: Указывает дисплей, с которого будет осуществляться захват (обычно это :0.0 для первого дисплея).
  • -c:v libx264: Использует кодек H.264 для сжатия видео.
  • -bf 0: Отключает использование B-frames.
  • -f rtsp: Задает формат вывода (RTSP).
  • rtsp://10.64.128.195:8554/screen: URL, по которому будет доступна трансляция рабочего стола.
  • Порт для подключения можно узнать из конфигурационного файла или следующей строки, которую mediamtx выводит в стандартный вывод в первые секунды запуска:
     INF [RTMP] listener opened on :1935

В случае успешного подключения видеопоток можно будет посмотреть в браузере по следующему адресу:

http://<ip адрес>:PORT/screen
  • В качестве ip-адреса укажите адрес, на котором запущен mediamtx.
  • Название трансляции screen замените на своё
  • Порт для просмотра видеопотока по HTTP можно узнать из конфигурационного файла или следующей строки, которую mediamtx выводит в стандартный вывод в первые секунды запуска:
    INF [WebRTC] listener opened on :8889 (HTTP)

Трансляция с телефона

Для трансляции видео с камеры смартфона можно использовать протокол rtmp. Для этого необходимо скачать приложение, поддерживающее эту функцию и добавить в него url следующего вида:

rtmp://192.168.1.55:1935/smartphone
  • rtmp:// - протокол передачи видеопотока
  • 192.168.1.55 - ip адрес сервера mediamtx
  • 1935 - порт, на котором mediamtx принимает соединения по rtmp
  • smartphone - название видеопотока.
  • Порт для подключения можно узнать из конфигурационного файла или следующей строки, которую mediamtx выводит в стандартный вывод в первые секунды запуска:
     INF [RTMP] listener opened on :1935

В случае успешного подключения видеопоток можно будет посмотреть в браузере по следующему адресу:

http://<ip адрес>:PORT/smartphone
  • В качестве ip-адреса укажите адрес, на котором запущен mediamtx.
  • Название трансляции smartphone замените на своё
  • Порт для просмотра видеопотока по HTTP можно узнать из конфигурационного файла или следующей строки, которую mediamtx выводит в стандартный вывод в первые секунды запуска:
    INF [WebRTC] listener opened on :8889 (HTTP)