Jump to content

Recommended Posts

Posted (edited)

Добрый день!

Подскажите как выйти из "положения":

 

Имеем входной поток IPTV около 130 каналов, поступает по rtp.

В связи с тем, что сеть на данный момент полностью не позволяет перейти на вещание по multicast, выкручиваюсь перегоном rtp в http.

 

screen -dmS vlc sudo -u xxx cvlc rtp://@230.3.3.84:5678 --sout-all --sout='#std{access=http,mux=ts,dst=10.1.255.100:8081}'

screen -dmS vlc sudo -u xxx cvlc rtp://@230.3.3.32:5678 --sout-all --sout='#std{access=http,mux=ts,dst=10.1.255.100:8082}'

и т.д.

Таким образом постоянно принимаются и перегоняются в http все каналы, что генерит достаточно большой трафик.

Можно ли сделать, чтобы vlc начинал перегонять нужный поток только когда есть "потребность" (т.е. когда абонент включает канал) и прекращалось когда нет "потребности".

Или может есть другой выход из ситуации?

Заранее благодарен за любые мысли.

Edited by kirush
  • Replies 56
  • Created
  • Last Reply

Top Posters In This Topic

Posted (edited)

kirush

Можно так:

 

udpxy -a SERVER_IP -p HTTP_PORT -M 60

 

После этого, ссылка будет иметь вид http://SERVER_IP:HTTP_PORT/udp/MCAST_GROUP_IP:MCAST_PORT

 

Сервер будет подписываться на мулькаст-группу только по мере необходимости

Edited by s.lobanov
  • 3 weeks later...
Posted

Похожая ситуация.

С IP-стримера IPS-01 идёт мультикаст поток (239.255.2.0/24:1234) на сервер.

В этом сервере установлена вторая гигабитная сетувуха с IP 192.168.1.12, именно в эту сетевуху подключен кабель с ИП-стримера.

Для ретрансляции мультикаста в юникаст установил udpxy и запустил его с настройкой на 4022 порт.

Команда route add 239.255.2.0/24 192.168.1.12 позволила настроить роутинг потока.

По ссылке http://server:4022/udp/239.255.2.11:1234 теперь можно посмотреть канал.

Но картинка очень сильно рассыпается, а звук только иногда прорывается. Не хватает потока.

Статистика VLC показывает, что поток около 1 Мегабита/сек, а trafshow показывает около 130 килобайт/сек, что одно и тоже.

А для нормального качества поток одного канала должен быть около 4 Мегабит/сек.

Вопрос: почему и где зажимается поток?

Posted
kirush

Можно так:

 

udpxy -a SERVER_IP -p HTTP_PORT -M 60

 

После этого, ссылка будет иметь вид http://SERVER_IP:HTTP_PORT/udp/MCAST_GROUP_IP:MCAST_PORT

 

Сервер будет подписываться на мулькаст-группу только по мере необходимости

Спасибо. Схема работает. Попробую в "боевых" условиях. Для ноутов с Ви-Фи должно быть самое оно...

  • 1 year later...
  • 3 weeks later...
Posted (edited)

У меня наоборот другая проблема - vlc пытаюсь перегнать 60 потоков multicast в unicast, но vlc больше 20 потоков одновременно не поднимает (Linux)

пример конфига vlm:

 

#Multicast to Unicast
new channel1 broadcast enabled
setup channel1 input udp://@234.5.2.1:20000
setup channel1 output #standard{access=http,mux=ts,dst=10.128.255.6:10001}
control channel1 play

new channel2 broadcast enabled
setup channel2 input udp://@234.5.2.2:20000
setup channel2 output #standard{access=http,mux=ts,dst=10.128.255.6:10002}
control channel2 play

new channel3 broadcast enabled
setup channel3 input udp://@234.5.2.3:20000
setup channel3 output #standard{access=http,mux=ts,dst=10.128.255.6:10003}
control channel3 play

udpxy не предлагать, нужны активные 60 потоков для мониторинга дропов mpeg2-ts

ещё пробовал Relaying (http://deineka.net/2010/12/06/relaying-multicast-v-http-i-obratno/) но у него другая проблема, один поток поднимается нормально, а когда поднимаешь два и более - начинаются mpeg2-ts больше 1к

Edited by KL!M
Posted

на чем пробовали relaying ? на freebsd прекрасно работает.

relaying пробовал на Linux, на FreeBSD тоже пробовал - работало отлично, но проблема в том что IPTV-Analyzer только под Linux...

Posted

вам шашечки или ехать? не пойму - чем вам софт не устраивает?

Софт устраивает, но мне необходимо на Linux'е стримить 60 каналов и на нем же мониторить их с помощью IPTV-Analyzer (без поднятых потоков зонду анализировать будет нечего), как я уже писал выше - VLC отказывается стримить больше 20 каналов, собственно в этом главный вопрос и заключается - как заставить VLC стримить все 60 каналов.

я бы и рад использовать Relaying (больше нравится чем vlc) но на Linux'e он некорректно работает.

Posted

Софт устраивает, но мне необходимо на Linux'е стримить 60 каналов и на нем же мониторить их с помощью IPTV-Analyzer (без поднятых потоков зонду анализировать будет нечего)

 

Для того, чтобы получать на Linux железку multicast поток достаточно програмульки на перле

которая откроет "мультикаст" сокет, а потом из него будет читать данные. Уложится в 30-40

строчек кода (с хелпом, проверками и коментами - т.е. если писать "культурно").

Что на основе подобного кода.

 

my $sock = IO::Socket::Multicast->new(Proto=>'udp',LocalPort=>$mPort,Blocking=>1,ReuseAddr=>1);
$sock->mcast_add($mGroup) || die "Couldn't set group: $!\n";
while( 1==1 ) {
alarm $timeout;
if ( !defined($sock->recv($data,1316)) ) {
   #print "no data\n";
   $rcmd_res = "fail";
   } else {
   #print "exist stream\n";
   $rcmd_res = "ok";
}
alarm 0;
}

Posted

Софт устраивает, но мне необходимо на Linux'е стримить 60 каналов и на нем же мониторить их с помощью IPTV-Analyzer (без поднятых потоков зонду анализировать будет нечего)

 

Для того, чтобы получать на Linux железку multicast поток достаточно програмульки на перле

которая откроет "мультикаст" сокет, а потом из него будет читать данные. Уложится в 30-40

строчек кода (с хелпом, проверками и коментами - т.е. если писать "культурно").

Что на основе подобного кода.

 

my $sock = IO::Socket::Multicast->new(Proto=>'udp',LocalPort=>$mPort,Blocking=>1,ReuseAddr=>1);
$sock->mcast_add($mGroup) || die "Couldn't set group: $!\n";
while( 1==1 ) {
alarm $timeout;
if ( !defined($sock->recv($data,1316)) ) {
   #print "no data\n";
   $rcmd_res = "fail";
   } else {
   #print "exist stream\n";
   $rcmd_res = "ok";
}
alarm 0;
}

Сделал на perl'e, поднимает 80 потоков - 4 ядра ксеона уходят в полку с load average: 90.21, 86.14, 70.26

Интересно кто как мониторит дропы mpeg2-ts пакетов?

Posted

Вот расскажи - зачем тебе это?

Собственно для мониторинга качества транслируемого контента, регионов много, интересно знать что происходит в сотне-тысяче км. от тебя.
  • 8 months later...
  • 7 months later...
Posted

Лично меня интересует... Но пока руки не дошли... Да и временная техническая проблема прокинуть транспондеры в стойку... Тем более, что я хомячок... ;)

Просто 1:1 планирую делать на Астре4, которая пока глубокая опенбета... Если же применять транскодинг - думаю как лучше... Но ничего пока не придумывается...

Posted

у меня вариант простой и эффективный: gstreamer(с выхлопом по multifilesink) + чуть-чуть самописного на python.

 

работает на cpython и pypy, держит 100k коннектов и легко укладывает пару гигабит(sendfile же :))

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...
На сайте используются файлы cookie и сервисы аналитики для корректной работы форума и улучшения качества обслуживания. Продолжая использовать сайт, вы соглашаетесь с использованием файлов cookie и с Политикой конфиденциальности.