Jump to content
Калькуляторы

multicast в unicast какие есть варианты

Как есть варианты по преобразованию multicast трафика в unicast по http?

 

Пробовал vlc все хорошо, но иногда притормаживает картинка на клиенте от 1 до 10 сек. Не очень удобно.

 

Пробовал еще udpxy, клевая вещь но не держит больше 15ти клиентов.

 

Нужно решение на 150 клиентов (подключений).

 

К сожалению коммерческие варианты расмотреть не могу :(

 

 

Пожалуйста подскажите!

Share this post


Link to post
Share on other sites

Ну собственно варианты вы озвучиди сами первоначальные.

vlc

udpxy

 

vlc можно пересобрать с только вам нужными фичами.

Но в любом случае, например каналов так 40, и двупроцесорник начинает напрягаться по крайней мере у нас на тестах, плюс утечки памяти хоть ты тресни на разных версиях вето 08 и 09, через скажем неделю работы сервер просто уходит в аут. На версии собраной только с нужными фичами - всё в целом работает наааамного дольше, а момент нагибания растянут и его лехко заметить.

 

udpxy - в файле начинающемся с uopt найдите цифру 16 (она там одна и прям видно что это макс клиентов число) и попробуйте поменять на 150 и потом соберите.

Токо просьюа расказать как получилось и как стабильность работы.

 

Ещё можно их тупо назапускать 10 штук на разных портах, а в плейлист просто на каждый канал добалять значения с разными портами, плеер обычно сам перескочит дальше если один из них заполнен.

Ещё веселее можно навешать на сервер с десяток ипшников и понавесить их на ипшники разные, в плейлисте указывать имя сервера днс, в которм указать все 10, и народ будет равномерно разбрасываться средствами днс в теории.

 

В нём ещё кстати смущает невозможность отключить веб интерфейс который доступен по вебу через /status.

Edited by MESB

Share this post


Link to post
Share on other sites

под Debian 5.0 пробовал собрать vlc 0.9 собралось но мочему отсуствовал mux ts, поэтому пользуюсь стандартным из репозитария пакетов.

Возможно криво собирал, буду благодарен за помощь в конфигурационой строке (какие опции включить/выключить при сборке).

Каналов пока 30, мегастабильность не требуется (если ребут раз в сутки будет спасать ситуацию).

 

udpxy пробовал собирать с кол-во клиентов больше 15, но все равно подключения больше 15ти не дает устанавливать, странно, но факт.

/status убрать не проблема, достаточно закомментировать соотвествующие строки в коде =)

 

Железо использую 4xXeon, 4Gb ram. Думаю на моих 150 подключений хватит.

Share this post


Link to post
Share on other sites

Если не получится, могу предложит софт под винду, умеет мультикаст\юникаст в rtsp (unicast)

Share this post


Link to post
Share on other sites

У меня 40 каналов, из мультикаста в юникаст передаются с помощью VLC 0.9.9. Загрузка сервера на базе единственного Core 2 Quad с 4 гб ОЗУ - минимальная. Каждый процесс жрет где-то 0,1% от проца. Зрителей правда поменьше, до 80 одновременных подключений. Перезапускаю конструкцию два раза в сутки, утром и вечером. Впринципе бы хватало одного раза, но есть риск что сервак завалится из-за нехватки оперативы в случае особенно сильной утечки. Нужно добавлять еще 4 гига.

 

В качестве ОС - Gentoo на ядре 2.6.29. Конечному потребителю VLC отдает поток с помощью HTTP. Плюс висит icecast, apache+mysql+php для нескольких сайтов и ведется постоянный мониторинг подключенных клиентов для статистики.

Share this post


Link to post
Share on other sites

vlc сам собирал? или готовый пакет взял?

Share this post


Link to post
Share on other sites

Сам, разумеется. В Gentoo практически всё собирается вручную. Начиная от компилятора и заканчивая самой мелкой утилиткой. Местеми правда бывают грабли, но по моему опыту - их гораааздо меньше чем в какой-нибудь Fedora или Ubuntu.

Edited by Neko-san

Share this post


Link to post
Share on other sites

подскажите плиз с какими параметрами vlc собирали. Как я уже писал выше у меня почему без mux = ts собирается :(

Share this post


Link to post
Share on other sites

Вот вывод emerge vlc -pv:

 

[ebuild   R   ] media-video/vlc-0.9.9a-r1  USE="ffmpeg httpd libgcrypt mmx mp3 mpeg ncurses sse stream x264 xml -X -a52 -aac -aalib -alsa (-altivec) -arts -atmo -avahi -bidi -cdda -cddax -cddb -cdio -dbus -dc1394 -debug -dirac -directfb -dts -dvb -dvd -esd -fbcon -flac -fluidsynth -fontconfig -ggi -gnome -gnutls -hal -id3tag -jack -kate -libass -libcaca -libnotify -libsysfs -libv4l2 -lirc -live -lua -matroska -modplug -musepack -nsplugin -ogg -opengl -optimisememory -oss -pda -pulseaudio -pvr -qt4 -remoteosd -rtsp -run-as-root -samba -schroedinger -sdl -sdl-image -seamonkey -shout -skins -speex -svg (-svga) -taglib -theora -twolame -upnp -v4l -v4l2 -vcdinfo -vcdx -vlm -vorbis (-win32codecs) -xinerama -xosd -xv -zvbi"

 

Ничего особенного на счет mux ts - нет. Если вы хотите добиться результата именно под Debian - может быть поискать сторонний репозитария? Некоторое время назад именно таким способом мне удалось установить VLC 0.9.8 под Ubuntu 8.04. С родного репозитария тянулся VLC 0.8.6 версии. А с http://ppa.launchpad.net/c-korn/ppa/ubuntu поставился свежий. Правда я не знаю подходят ли пакеты для Убунты к Дебиану.

 

Впрочем не факт, что сборка VLC вручную или установка его из какого-то стороннего репозитария вам поможет. Возможно дело в общей унифицированности системы. Компилятор не идеально оптимизированный под вашу конфигурацию, куча лишнего в ядре и т.п.

 

P.S.

 

А запускаете VLC точно правильно? Запускаю VLC 0.9.9 так:

vlc udp://@192.168.0.1:10000 --sout '#std{access=http,mux=ts,dst=10.10.10.10:30100}' --daemon

Вместо 10.10.10.10 соответственно указан внешний IP сервера, к которому конектятся зрители. VLC принимает udp-поток от DVB-IP стримера из отдельного VLAN'a и тупо отдает наружу, но уже по HTTP.

Edited by Neko-san

Share this post


Link to post
Share on other sites
под Debian 5.0 пробовал собрать vlc 0.9 собралось но мочему отсуствовал mux ts, поэтому пользуюсь стандартным из репозитария пакетов.

Возможно криво собирал, буду благодарен за помощь в конфигурационой строке (какие опции включить/выключить при сборке).

Каналов пока 30, мегастабильность не требуется (если ребут раз в сутки будет спасать ситуацию).

 

udpxy пробовал собирать с кол-во клиентов больше 15, но все равно подключения больше 15ти не дает устанавливать, странно, но факт.

/status убрать не проблема, достаточно закомментировать соотвествующие строки в коде =)

 

Железо использую 4xXeon, 4Gb ram. Думаю на моих 150 подключений хватит.

Постараюсь взглянуть с какими ключами оно собрано как доберусь до машины тестовой.

По версиям помню что на тот момент пробовали 085 086 и 09 вроде ещё первые выпуски.

В итоге остановились на 085.

 

Касательно udpxy. А что где коментили чтоб статусную страничку с ключами управления удалить?

И щас вот теста ради запустил 20 мплееров на разные каналы, всё нормально работает, дальше у моей машины ресурсов не хватило мплееры крутить.

 

UPD:

 

P.S.

 

А запускаете VLC точно правильно? Запускаю VLC 0.9.9 так:

vlc udp://@192.168.0.1:10000 --sout '#std{access=http,mux=ts,dst=10.10.10.10:30100}' --daemon

Вместо 10.10.10.10 соответственно указан внешний IP сервера, к которому конектятся зрители. VLC принимает udp-поток от DVB-IP стримера из отдельного VLAN'a и тупо отдает наружу, но уже по HTTP.

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

Туда ещё нужно добавить --sout-all (но нагрузки добавляет конечно).

Сам просто наткнулся когда стал влезать в это, ладно если у ретранслируемого канала первой идёт русская дорожка, но если там дорожки три и русская например где-нибудь в середине или конце, то будет не очень интересно, либо для каждого канала отдельно прописывать какую аудиодорожку к примеру ретранслировать.

Edited by MESB

Share this post


Link to post
Share on other sites
Добавлю, вот этой строкой, если мне не изменяет память, вы себе автоматически отрезаете как минимум другие аудиодороги.

Туда ещё нужно добавить --sout-all (но нагрузки добавляет конечно).

Да, тут вы правы. Хорошо что напомнили про этот момент. Второй день бьюсь - не могу вытащить радио из второй аудио-дорожки. И совешенно забыл про то, что сам отрезаю все лишние дорожки подобной ретрансляцией. Ради интереса перезапустил все свои VLC с таким параметром (42 процесса) - нагрузка на ЦПУ выросла всего на 1 процент.

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

В моем случае многодорожечных каналов около 15 штук. Впринципе, даже если бы на всех 40 каналах поток шел с несколькими дорожками - разницы в нагрузке особой бы не было. Плюс или минус 3-4 процента нагрузки на ЦП - совершенно не критичны.

 

Скажите, а что вы имели ввиду под потреблением трафика VLC? То, что он без подключенных клиентов постоянно подключен к серверу с которого идет поток и создает тем самым нагрузку на линию связи между ними? Или что-то еще?

Share this post


Link to post
Share on other sites
Скажите, а что вы имели ввиду под потреблением трафика VLC? То, что он без подключенных клиентов постоянно подключен к серверу с которого идет поток и создает тем самым нагрузку на линию связи между ними?
Угу. Именно это.

Да и в итоге на проц тоже нагрузка присуствует даже в отсуствии клиентов.

Edited by MESB

Share this post


Link to post
Share on other sites

Скажи плиз, а зачем юникаст?

У меня была та же самая проблема, потому как раньше стоимость коммутаторов с igmp snooping-ом и multicast filtering-ом была нереально высока для малобюджетных решений (типа гостиница или еще чего-нить в это роде).

Сейчас все тот же dlink предлагает за 4т.р. - 24 + 2 порта 10/100 мегабит.

 

PS: прошлый раз точно так же решал проблему с помощью vlc. Все работает как часы.

Edited by toropovsn

Share this post


Link to post
Share on other sites

toropovsn

Например иногда может сложиться так что не возможно по каким-то причинам сделать так чтобы до абонента дошёл мультикаст.

Это один из вариантов обхода такой проблемы. Те единицы что имеют траблы - могут просто воспользоваться юникастовым вариантом.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this