FAQ¶
SRT и авторизация по логину и паролю в стороннем софте¶
Авторизация по логину и паролю в SRT между Perfect Streamer — Perfect Streamer поддерживается изначально и настраивается через соответствующие поля в output и input, но работа с другим ПО не гарантируется. Данный функционал не стандартизирован и в различном ПО реализован по-разному.
Для универсальности работы между Perfect Streamer и другим ПО реализован механизм авторизации через создание пира, где имя пира будет равным значению stream ID. Например при ссылке:
srt://Stream_IP:port?streamid=!#::u=1234567890,password=1234567890
Имя пира:
!#::u=1234567890,password=1234567890
Синтаксис написания stream ID для Perfect Streamer не важен, поддерживаются любые значения до 511 символов.
Разное ПО, принимающее SRT, может передавать stream ID также по своему формату, поэтому если у вас не работает приём по ссылке одного вида со stream ID, то вы можете включить в выходе SRT у Perfect Streamer опцию трассировки и в логе приёма у потока посмотреть ошибку и какой stream ID выдаёт стороннее ПО по факту. Тем самым можно скорректировать stream ID, например убрав лишние символы в начале строки stream ID, мешающие передаче значения stream ID у стороннего ПО.
Работа с RTSP и RTMP в Perfect Streamer с использованием FFmpeg¶
Для RTMP и других транспортных протоколов, для которых в Perfect Streamer нет встроенного input, можно использовать STD input тип у стрима (stdin). Этот же способ подходит как обходной путь для нестандартных RTSP-источников — для штатных RTSP в Perfect Streamer есть встроенный RTSP input. Возможно использовать FFmpeg, GStreamer и любые другие приложения, поддерживающие stdout.
Рассмотрим настройку на примере FFmpeg:
Выбираем тип input — std.
Указываем путь к FFmpeg в поле Cmd — /usr/bin/ffmpeg.
В поле Args вводим команду для приёма стрима:
-loglevel error -i rtmp://192.168.1.29/channelTV/chanelSD -c copy -f mpegts -
или
-loglevel error -i rtsp://viewer:viewer200@172.31.91.197:554/play1.sdp -c copy -f mpegts -
Если у видео с камеры нет звука, то будут появляться ошибки на странице стрима. Чтобы их не было, в настройках типа стрима следует указать — Only Video.
Описание в документации по подключению сторонних приложений.
Работа RTSP, RTMP в Perfect Streamer с использованием GStreamer¶
Для транспортных протоколов без встроенной поддержки в Perfect Streamer (например, RTMP), а также как обходной путь для нестандартных RTSP-источников, можно использовать STD input тип у стрима (stdin). Возможно использовать FFmpeg, GStreamer и любые другие приложения, поддерживающие stdout.
Рассмотрим настройку с использованием GStreamer.
Выбираем тип input — std.
Указываем путь к командному интерпретатору в поле Cmd — /bin/bash.
В поле Args вводим путь к скрипту генератора стрима и другие аргументы:
/opt/conf/pss/scripts/rtmp.sh rtmp://192.168.1.2/live/mmtv2025air
или
/opt/conf/pss/scripts/rtsp.sh rtsp://viewer1:viewer300@172.34.95.198:553/play1.sdp
Полная инструкция доступна на форуме.
Скрипты: scripts_gstreamer.zip.
Рекомендации по работе с UDP-мультикаст¶
Задача:
Стабильно принять UDP-мультикаст несколько сотен Мбит/с (1 Гбит/с и более) на одном сервере.
Проблема:
Приём на сетевые карты под интерфейс подключения RJ-45 с увеличением трафика выше нескольких сотен мегабит — начинаются потери пакетов мультикаста по нарастающей. Тонкая настройка сетевой карты не помогает (было актуально в старых версиях операционных систем, в современных уже используются оптимальные настройки). На любой сетевой карте с лучшими чипами (Intel, Broadcom и др.) проблема не уходит, особенно после превышения 500 Мбит/с трафика. Бондинг из 2-х сетевых карт не помогает.
Решение:
Для приёма и передачи UDP-мультикаст рекомендуем использовать сетевые карты под интерфейс SFP+, т.к. в них используются более мощные чипы. Достаточно бюджетной сетевой карты уровня Intel X520-DA1/2 (Intel 82599ES), её использование полностью снимает проблему потери пакетов в трафике UDP-мультикаст свыше 1 Гбит/с.
Дополнительно происходит заметное снижение нагрузки на ЦП и видеокарты в случае использования транскодера.
Рекомендации по настройке сети для мультикаста¶
Настраиваем параметры сети в /etc/sysctl.conf:
net.core.rmem_default=8388608
net.core.rmem_max=16777216
Применить:
sudo sysctl --system
Flussonic и SRT¶
Пример ссылки SRT для приёма на ПО «Flussonic»:
srt://Stream_IP:port?streamid=flussonic
Где streamid — это логин клиента на ПО «Flussonic», который задаётся в разделе «Конфигурация — Настройка пиров».
При добавлении нового пира достаточно указать только логин, в тестовой ссылке указан — «flussonic». ПО «Flussonic» при работе с SRT автоматически генерирует streamID и если не указать в ссылке логин streamID на приёме, то приниматься поток не будет, а «Perfect Streamer» его не сможет отдать.
Аналогичным образом можно задать streamID в формате логина и пароля, создав пира в «Perfect Streamer» со значением в поле Login or IP:
!#::u=1234567890,password=1234567890
и прописав во «Flussonic» ссылку:
srt://Stream_IP:port?streamid=!#::u=1234567890,password=1234567890
Возможно указать streamid/логин в формате IP-адреса у «Perfect Streamer»:
192.168.1.1 (единичный IP)
192.168.1.1-192.168.1.254 (диапазон IP, у пира необходимо обязательно активировать опцию Login is IP)
В обоих случаях ссылка для приёма по IP во «Flussonic» будет выглядеть так:
srt://Stream_IP:port?streamid=*
Будет осуществлена привязка к IP-адресу клиента и будет возможно получение по этой ссылке только с конкретного IP-адреса (диапазона IP-адресов).