Публикация потока на Wowza сервер по протоколу SRT

2020-05-30 20:34:00

В последнее время все большую популярность приобретает технология потоковой передачи видеопотока по протоколу SRT. В данной статье мы не будем вдаваться в особенности самого протокола, а тем более сравнивать его с протоколом RTMP. Заметим только, что изначально SRT позиционировался прежде всего как альтернатива сервисам (весьма недешевым) типа Zixi , позволяющим передать Mpeg2 транспортный поток через открытый Интернет, с минимальной потерей качества и минимально возможной задержкой (с учетом того факта , что повторная передача потерянных пакетов - это всегда дополнительная задержка). Соответственно и предлагался он к использованию там, где исходным сигналом был транспортный поток, от профессионального ТВ оборудования прежде всего. В дальнейшем, очень часто, протокол SRT стал рассматриваться как некая революционная замена брошенного Adobe протокола RTMP для всех случаев стриминга в Интернет. Хотя на потоке с маленьким битрейтом и стримером расположенным в одном географическом регионе с принимающим сервером, никаких различий в качестве трансляции при использовании одного или другого протокола никто не заметит.

Остановимся на поддержке SRT в Wowza Streaming Engine. Медиасервер Wowza может выступать как передающее SRT устройство так и как приминающее его оконечное оборудование. Наибольший интерес для широкого круга пользователей представляет собой как раз второй сценарий и настроить его в Wowza чрезвычайно просто:

1. На сервер с установленной Wowza сетевой экран должен быть настроен таким образом , что бы разрешать входящий UDP трафик. Сетевой экран сети тоже должен пропускать входящий UDP.

2. Добавить стрим файл используя Wowza Streaming Engine Manager. В нашем примере файл будет называться srt.stream. URI указать в виде srt://0.0.0.0:10000 , что говорит Wowza слушать поток на локальном сетевом интерфейсе , порт UDP 10000. Наш энкодер будет направлять SRT поток на Wowza сервер (push). В случае когда Wowza сервер должен тянуть поток c энкодера ( pull) в URI указывается IP и порт на энкодере.

3. Стартовать прием потока указав приложение для приема потока live и тип MediaCaster srt.


4. Запустить энкодер. В нашем случае ffmpeg для трансляции файла «по кругу» : ffmpeg -re -stream_loop -1 -i sample.mp4 -pix_fmt yuv420p -deinterlace -vf "scale=640:360" -vsync 1 -threads 0 -vcodec libx264 -r 29.970 -g 60 -sc_threshold 0 -b:v 1024k -bufsize 1216k -maxrate 1280k -preset medium -profile: v main -tune film -acodec aac -b:a 128k -ac 2 -ar 48000 -af "aresample=async=1:min_hard_comp=0.100000:first_pts=0" -vbsf h264_mp4toannexb -f mpegts srt://xxx.xxx.xxx.xxx:10000 Для публикации по SRT можно использовать энкодеры OBS broadcaster или vMix.

5. Проверить наличие входящего потока

6. Проиграть поток с Wowza по протоколу HLS: ffplay http://xxx.xxx.xxx.xxx:1935/live/srt.stream/playlist.m3u8

7. Добавить поток в список автостарта (Startup Streams), иначе после рестарта сервиса Wowza он не будет подключен автоматически.

Важное отличие процесса публикации по протоколу SRT от RTMP заключается в том, что поток нужно предварительно создать в интерфейсе управления Wowza Manager ( stream файл ) и запустить его. В то время как для RTMP публикации ничего создавать не нужно. Поток на Wowza сервере создается по факту публикации энкодером.