FAQ

SRT и авторизация по логину и паролю в стороннем софте

Авторизация по логину и паролю в SRT между Perfect Streamer - Perfect Streamer поддерживается штатно и настраивается через соответствующие поля в output и input, но работа с другим ПО не гарантируется. Данный функционал не стандартизирован и в различном ПО реализован по разному.

Для универсальности работы между Perfect Streamer и другим ПО реализован механизм авторизации через создание пира, где имя пира будет равным значению stream ID. Например при ссылке:

srt://Stream_IP:Your_IP?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

Для поддержки RTSP, RTMP и любых других не поддерживаемых транспортных протоколов штатно в Perfect Streamer, можно использовать STD input тип у стрима (stdin). Возможно использовать FFmpeg, GStreamer и любые другие приложения, поддерживающие stdout.

Рассмотрим настройку на примере FFmpeg:

  1. Выбираем тип input - std.

  2. Указываем путь к FFmpeg в поле Cmd - /usr/bin/ffmpeg.

  3. В поле 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 и генератора настроечной таблицы (SMPTE) в Perfect Streamer с использованием GStreamer

Для поддержки любых не поддерживаемых транспортных протоколов штатно в Perfect Streamer, можно использовать STD input тип у стрима (stdin). Возможно использовать FFmpeg, GStreamer и любые другие приложения, поддерживающие stdout.

Рассмотрим настройку с использованием GStreamer.

  1. Выбираем тип input - std.

  2. Указываем путь к командному интерпретатору в поле Cmd - /bin/bash.

  3. В поле 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

или

/opt/conf/pss/scripts/smpte.sh

Пример скрипта генератора настроечной таблицы (SMPTE) с использованием GStreamer:

#!/bin/bash

# Wide SD
WIDTH=720
HEIGHT=576
PAR="64/45"

VIDIO_TYPE="smpte"
AUDIO_TYPE="silence"
TEXT="*** NO SIGNAL ***  UTC"

ENC_OPT='key-int-max=25 speed-preset=veryfast option-string="min-keyint=25:no-scenecut"'

/usr/bin/gst-launch-1.0 -q  \
    videotestsrc is-live=true pattern="${VIDIO_TYPE}" ! \
    video/x-raw,framerate=25/1,width=$WIDTH,height=$HEIGHT,pixel-aspect-ratio=$PAR ! \
    clockoverlay halignment=left valignment=bottom text="${TEXT}" shaded-background=true ! \
    x264enc bitrate=1300 $ENC_OPT ! \
    mpegtsmux alignment=7 name="mux" ! fdsink sync=true \
    audiotestsrc wave=$AUDIO_TYPE ! audio/x-raw,rate=48000,channels=1 ! avenc_aac bitrate=24000 ! aacparse ! mux.

Полная инструкция доступна на форуме.

Скрипты: scripts_gstreamer.zip.

Flussonic и SRT

Пример ссылки SRT для приёма на ПО «Flussonic»:

srt://Stream_IP:port?streamid=flussonic

Где streamid - это логин клиента на ПО «Flussonic», который задаётся в разделе «Конфигурация - Настройка пиров».

При добавление нового пира достаточно указать только логин, в тестовой ссылке указан - «flussonic». ПО «Flussonic» при работе с SRT автоматически генерирует stream ID и если не указать в ссылке логин stream ID на приёме, то приниматься поток не будет, а «Perfect Streamer» его не сможет отдать.

Возможно указать streamid/логин в формате IP-адреса:

srt://Stream_IP:port?streamid=Your_IP

В таком случае будет привязка к IP-адресу клиента и будет возможно получение по этой ссылке только с конкретного IP-адреса.