Рестрим
В качестве софта был взят vlc под linux, экспериментальным путем запущенный вот с такими параметрами:vlc -vvv rtsp://codian_server/conf_h264_g711u_256000__Supaconf \ --sout "#transcode{\ threads=6,\ vcodec=h264,\ vb=1024,\ scale=0,\ acodec=mp4a,\ ab=64,\ channels=2,\ samplerate=44100,\ venc=x264{preset=ultrafast,aud,profile=baseline,level=30,keyint=30,ref=1}\ }:http{mux=flv,dst=:8080/stream}" --sout-keepДанный вариант запускает на рестрим, доступный по адресу: http://рестримилка:8080/stream. Стрим вещается с кодеками h264/aac в контейнере flv и понимается онлайн-плеером Video.js (http://www.videojs.com/), который можно поставить прямо на рестримящий сервер. Для воспроизведения потребуется IE не менее 9го или любой другой современный браузер. Ну или можно использовать тот же самый VLC на клиентских компах, а лучше - портабельный (полностью распакованный) vlc на сетевой шаре с ярлыком, в котором прописан путь к рестриму.
Такой вариант рестримилки в моем случае при шести ядрах тянул 300 подключений не напрягаясь - загрузка процессора не превышала 20%. Однако трафик, поэтому...
Балансировка нагрузки
Еще более наколеночное и тупое решение - поднять пару серверов, которые будут захватывать стрим с основного рестримящего сервера и отдавать его без перекодировки.
!#/bin/sh while true; do /usr/bin/vlc --play-and-exit \ -vvv http://restream-root-server:8080/stream \ --sout "#standard{access=http,mux=flv,dst=:8080/stream}" sleep 2 done
Этот скрипт будет пытаться достучаться до рестримящего сервера и подхватить поток. Когда поток подхватится - vlc начнет его рестрим (тот же адрес - :8080/stream) В случае прерывания потока vlc схлопнется и продолжатся попытки нащупать поток.
Подняв 2 или сколько потребуется серверов, добавляем все их в DNS с одним именем, получив примитивную Round Robin балансировку. Также для каждой такой DNS-записи следует указать небольшое время кэширования на клиентах - TTL (в Windows для этого нужно включить Advanced-режим отображения: View - Advanced).
После этого настраиваем клиентский плеер на адрес http://общий_адрес:8080/stream
После этого настраиваем клиентский плеер на адрес http://общий_адрес:8080/stream
Комментариев нет:
Отправить комментарий