Jump to content

Recommended Posts

Posted

Чем можно нормально вещать http unicast (внутри mpeg ts со спутника), чтобы из одного потока сделать несколько?

 

Я пробовал nginx streaming module, но он неожиданно на каждый коннект открывает новый коннект к источнику, и в результате входящий трафик с каждым коннектом растет, хотя вещается всем клиентам один и тот же канал.

Он вообще такое может? Или какой софт может?

Условие-то только одно - вход и выход должны быть http mpeg-ts.

  • Replies 64
  • Created
  • Last Reply

Top Posters In This Topic

Posted

Форум астры почитал, говорят падает оно при http input, ибо поддержка в зачаточном состоянии.

Может подскажете конкретную версию, на которой у вас стабильно работает подобный конфиг?

Posted (edited)

обостайте своим опытом а не чужим, астра никогда на input не падала,

есть тестовые есть стабильные версии, есть бесплатные

сначала пробовать надо

ну либо покупайте вовзу, вдруг у вас денег много лишних и ресурсов

 

у меня https://github.com/marakew/AvProxy/ работает и не падает

Edited by paradox_
Posted

Собрал astra, работает, единственно, что смущает, url каждого канала надо забивать статически, хотя это же релей, какая ему вообще разница до этого, задача же передать на апстрим.

Может это как-то решается через lua? я в нем не силен.

Posted (edited)

опенсорс версия уже давно не обновлялась, по причине того что теперь астра полностью ушла в комерц

соответственно и багов в опенсорс давно не фиксилось

я не помню, там кажется даже http chunks не поддерживается

поэтому пробовать лучше платную тестовую, там плюшек больше и hls и http chunks, веб инферфейс итд

http://dev.cesbo.com/download/astra/

 

 

луа я тоже не знаю

как проксик там вроде на форуме кто то кидал какие то луа скрипты, и даже xproxy кажется называется версия скриптов для астры с проксированием

Edited by paradox_
Posted

Да, нашел этот скрипт, оставлю тут, вдруг кому пригодится:

 

master = "http://12.34.56.78"

function on_request_channel(server, client, request)
   local client_data = server:data(client)

   if not request then -- on_close
       kill_input(client_data.input)
       xproxy_kill_client(server, client)
       collectgarbage()
       return nil
   end

   local conf = parse_url(master .. request.path)
   if not conf then
       server:abort(client, 404)
       return nil
   end

   xproxy_init_client(server, client, request, request.path)

   conf.name = "Relay " .. client_data.client_id
   client_data.input = init_input(conf)
   server:send(client, {
       upstream = client_data.input.tail:stream(),
       buffer_size = relay_buffer_size,
       buffer_fill = relay_buffer_fill,
   })
end

 

запускать "astra --relay -p 8000 script.lua"

Posted
' timestamp='1480694365' post=1348718]

каждый коннект открывает новый коннект к источнику, и в результате входящий трафик с каждым коннектом растет, хотя вещается всем клиентам один и тот же канал.

а юникаст по любому открывает каждому подписчику свой канал, или я не прав?

Posted

а юникаст по любому открывает каждому подписчику свой канал, или я не прав?

Если мы говорим, о релее, то нет. Будет 1 коннект от релея к источнику, и по одному коннекту от клиента до релея.

Т.е. мы смещаем точку вещания кучи потоков ближе к абоненту.

 

 

p.s.

Astra (как минимум последняя 4 версии) все-таки не готова к http input. Можете попробовать взять поток из nginx'а или squid'a, и увидите кучу ошибок через '--analyze', или кашу на экране в режиме релея.

Хотя если напрямую плеером подключаться к nginx, то все ок. Astra и nginx даже на одной машине для теста запускал.

 

Т.е:

клиент -> astra relay -> источник http - работает без проблем

клиент -> nginx proxy -> источник http - без проблем

клиент -> astra relay -> любой прокси -> источник http - куча ошибок

Posted (edited)

к http input 4 версия готова, а вот http chunks она не поддерживает, это можно было в wireshark посмотреть или в tcpdump

 

все это поддерживает только коммерческая версия

Edited by paradox_
  • 2 weeks later...
Posted
' timestamp='1480696493' post='1348726']

Форум астры почитал, говорят падает оно при http input, ибо поддержка в зачаточном состоянии.

Может подскажете конкретную версию, на которой у вас стабильно работает подобный конфиг?

бвает

  • 2 weeks later...
Posted
почти полторы тысячи активных сессий на одном сервере и работает нормально.

Всё так же греет воздух копируя данные из юзерспейса каждому юзеру и в один поток?

Posted
О, начались опять камлания вокруг нахер ненужного ядерного zerocopy.

Так если он был не нужен то нетфликс его бы во фрю так старательно и целенаправленно не впиливал.

У тебя то тоже поди sendfile() юзается.

Posted

Всё так же греет воздух копируя данные из юзерспейса каждому юзеру и в один поток?

 

так где есть смысл использовать sendfile - оно используется. там где оно не надо - не используется. это называется здравый смысл :-)

Posted

да-да, я слышал про эти смешные игры с поллингом через madvice и последующим sendfile.

 

Нет, мы этой фигней не балуемся и 20 гигабит прекрасно обычными pread, write отдаются. Блокирующий тред 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 и с Политикой конфиденциальности.