В рамках разработки нашего iptv-решения (которое близко к публичному релизу, и это радует), родилась небольшая утилита под рабочим названием relaying, пардон мой французский. Эта утилита может получает поток (mpeg2, mpeg4 – не столь важно), поступающий на multicast-группу или запрошенный по http с удаленного вэбсервера и может:
- отдать его по http любому количеству клиентов, корректно отрабатывая передачу данных низкоскоростным потребителям (т.е. не распухая в памяти) и/или
- отдать поток в определенную multicast-группу и в определенный интерфейс.
При этом relay получает только одну копию исходного потока и этим отличается от массы других подобных утилит. Еще стоит заметить, что relay может обслуживать сотни и сотни http-клиентов, не требуя при этом дорогостоящего оборудования и мощного сервера. Так, прямо сейчас на соседнем сервере на базе старенького Xeon X3065 под управлением FreeBSD relaying отдает по http около 500Мбит/с, при этом load averages: 0,91 0,67 0,54!
Примеры вызова:
# ./relaying --outhttp=x.y.z.x:port --inudp=233.61.10.203:1234 --inudpif=a.b.c.d
Клиент может получить содержимое multicast-группы 233.61.10.203:1234 (доступной на локальном интерфейса a.b.c.d) по http с адреса: http://x.y.z.x:port/
# ./relaying --outhttp=x.y.z.x:port --inhttp=a.b.c.d:8080/iptv/channel
Получаем поток с адреса http://a.b.c.d:8080/iptv/channel и отдаем его по http нашим зрителям.
Пока мы еще не определились, стоит ли делать код этой утилиты open-source, но сделать ее freeware я бы хотел. Поэтому, если есть интерес поэкспериментировать, свяжитесь со мной, у меня есть красивый профайл с контактной информацией на about.me/deineka.
p.s. Версии win32 нет, только FreeBSD и Linux.
dr_zoid
декабря 7, 2010 at 09:57
Есть пару вопросов:
-Почему сейчас используется MPEG2, а не MPEG4? Нет мощностей для конвертации?
-А 720p будет?
Дмитрий
декабря 7, 2010 at 14:04
Самому relaying – все равно. Если речь идет о том, что сейчас берется с DVB и отправляется в KH-IX – да, там mpeg2. Не вижу необходимости конвертировать, да и качественно это сделать достаточно дорого. 720p – будет, для наших приставок уже есть
Валерий
декабря 12, 2010 at 10:41
Как заюзать тулзу?)
Дмитрий
декабря 12, 2010 at 12:20
мы в понедельник-вторник выложим версию с последними багфиксами.
Валерий
декабря 18, 2010 at 15:20
получится заюзать?
Дмитрий
декабря 18, 2010 at 16:42
Сорри за задержку. Бета-версия под FreeBSD 7.x-8.x лежит тут, собственно она у нас сейчас работает на трех тазиках. На скоростях раздачи до 600Мбит/с дополнительно тюнить ОС не требуется.
Sergey Korotonozhkin
декабря 10, 2011 at 14:55
Дмитрий, а можно-ли версию relaying for linux ? дайте ссылку плиз .
Alexsey
декабря 27, 2010 at 15:28
а под Linux будет?
Дмитрий
декабря 27, 2010 at 15:34
там же лежит более старая версия под линукс 64bit. Попрошу разработчика порадовать более свежей. Но, честно говоря, рекомендую использовать под FreeBSD, так как в ряде вопросов оптимизировали именно под эту ОС.
Андрей
декабря 31, 2010 at 09:45
А чем Ваша разработка лучше udpxy ? sourceforge.net/projects/udpxy/
в udpxy есть много параметров, включая размер кеша и т.д. и своя страничка с статистикой
Дмитрий
декабря 31, 2010 at 09:50
Размер буфера у нас тоже настраивается. А разница с udpxy очень проста – попробуйте udpxy нагрузить, скажем, сотней-двумя клиентов и посмотрите, что будет
udpxy – отличное решение для дома. Наш же софт – для более промышленных применений. Кроме того, мы планируем реализовать поддержку rtsp.
Exercise Balls
января 21, 2011 at 08:55
Nice site, nice and easy on the eyes and great content too.
Вячеслав
февраля 17, 2011 at 12:59
Есть ли возможность одним глазком глянуть исходный код? :))
Дмитрий
марта 7, 2011 at 15:32
Разве что в таком виде:
# more Relaying.hs | head -300 | tail -10
h <- socketToHandle ssock ReadWriteMode
forkIO $ catch (do
atomicModifyIORef clientCount (\x -> (1+x, 0))
hGetLine h
hdrs <- parseHeaders <$> readHeaders h []
pid <- getProcessID
sockName <- getSocketName ssock
putStrLn $ "HTTP_CLIENT\t" ++ (show pid) ++ "\t" ++ (show sockName) ++ "\t" ++ (show addr)++"\t" ++ (show $ lookup "User-Agent" hdrs)
showDebug $ "client headers: "++(show hdrs)
hFlush stdout
Сергей
марта 24, 2011 at 08:19
Напишите пример конфига как будет выглядеть если прием идет например с udp адресов 224.12.0.1, 224.12.0.2 и так далее.
Дмитрий
марта 30, 2011 at 14:05
см. http://deineka.net/2011/03/07/nastrojka-freebsd-d…, пятый пункт.
@sha90w
марта 30, 2011 at 09:31
А что может быть ? VLC играет несколько минут – потом теряет поток – на стороне сервера:
2011-03-30 10:29:39.738454 relaying(94393) WARN: http broadcaser client exception: <socket: 4>: hPutBuf: resource vanished (Broken pipe)
с udpxy примерно то же….
Дмитрий
марта 30, 2011 at 14:04
похоже, что не хватает полосы между сервером и VLC. Еще могу порекомендовать поставить больше буфер (ключ –bs). Можно не жадничать у увеличить до 10-20мбит.
через время выложу новую версию с вкусняшками:
– опция для перманентного чтения Multicast (даже если нет http-клиентов)
– конфигурируемый размер начального буфера, который отсылается клиенту на полной скорости
– оптимизированный (надеюсь :)) код отдачи по http
Александр
марта 31, 2011 at 00:22
А утилита должна слать IGMP report или подразумевается что поток уже есть на интерфейсе?
Дмитрий
марта 31, 2011 at 09:09
утилита при возникновении первого клиента делает подключается в малтикаст-группу и начинает читать поток .
Артем
апреля 3, 2011 at 10:51
А есть официальный сайт и где можно скачать последнюю версию под FreeBSD
Я так понял одним процессом нельзя релеить больше одного потока?
Артем
апреля 16, 2011 at 20:32
А что обозначает?
2011-04-16 21:32:25.958674 relaying(48558) WARN: http broadcaser client exception: <socket: 5>: hPutBuf: resource vanished (Broken pipe)
Дмитрий
апреля 27, 2011 at 13:40
Артем,
это означает, что зритель закрыл соединение (как правило – переключил канал). Это информационное сообщение, не обращайте на него особого внимания.
Артем
апреля 27, 2011 at 19:32
Спасибо за ответ, а все таки… Где взять новую версия и если ли она вообще
Кстати наблюдается проблема, "временами" сыпится картинка или пропадает до 5 секунд, при этом возобновляется с того-же момента или еще иногда может пропадать звук на 0,5сек.
тазик (core 7i) загрузка в среднем 10% FreeBSD 8.0-RELEASE
При этом этих проблемы не наблюдаться в UDP потоке и связь от Relay сервера до клиента при этом нормальная без потерь средний пинг 1-2мсек.
Спасибо за ответ
Дмитрий
апреля 27, 2011 at 19:50
Артем,
Новая версия есть и она у меня используется. Компактный changelog:
+ начало отдачи потока с PAT, а не с любого места (для некоторых приставок – важно)
+ опция постоянного чтения потока, даже если нет клиентов
+ появилась возможность определенную часть буфера налить клиенту на максимально возможной скорости ("быстрое" включение канала)
и еще по мелочам.
Выложу на днях.
Дмитрий
апреля 27, 2011 at 19:56
Про обрывы – добавьте буфера побольше (ключ –bs, кажется). Также следите за нагрузкой на шину и ззернеты – если используете realtec и прочий low-end, будет грустно. Мы гоняем в препродакшне на Supermicro 5016 с минимальными процессорами, с парой гиг памяти на каждом, но немного подстроенными em(4).
на десктопных решениях – жизни особо не будет.
vlad
мая 1, 2011 at 19:20
Хорошая программа. Планируется ли возможность вещания нескольких потоков из одного процесса, на одном http-порту, как в udpxy?
Артем
мая 6, 2011 at 20:04
Ну где новая версия?
Дмитрий
мая 6, 2011 at 20:20
до конца не причесали, даю рабочую, которая у нас стоит. брать на нашем ftp.
–help работает. из важного:
–pj – читать входной поток, даже когда нет зрителей
–bs/–pf – циклический буфер/размер данных, который нужно отдать клиенту на максимальной скорости (а не на скорости получения потока).
Официальный релиз – чуть позже, дайте выдохнуть эту неделю
Артем
мая 10, 2011 at 19:42
% ./relaying-freebsd-20110505
ELF interpreter /libexec/ld-elf.so.1 not found
Abort
FreeBSD 8.0-RELEASE amd64
Предыдущий билд от 20101212 работает, новый нет.
server801
мая 17, 2011 at 15:32
Можно версию под linux?
Дмитрий
мая 23, 2011 at 12:50
будет, ожидайте. но производительность на FreeBSD выше.
Spinaker
мая 25, 2011 at 15:43
Ждемс версию для Linux x86…
Артем
июня 17, 2011 at 09:08
Кстати а когда уже будет поддержка RTP как писалось выше?
Дмитрий Дейнека
июня 19, 2011 at 20:44
Сейчас relaying делает все, что нам нужно. В ней будут новые фишки (статистика, ключи доступа). RTSP – будет видно, насколько это необходимо будет в нашей схеме.
Пока я смысла большого не вижу.
freedom
июля 3, 2011 at 10:23
Здравствуйте! Подскажите реализовать схему:
Сервер вещатель ( Linux Ubuntu ) c с адресом 192.168.1.2
auto eth0
iface eth0 inet static
address 192.168.1.2
netmask 255.255.255.0
gateway 192.168.1.1
up route add -net 224.0.0.0/8 dev eth0
вещает на сервер relaying ( FreeBSD 8.2) c с адресом 192.168.1. 1
ifconfig_em0="inet 10.0.10.10 netmask 255.255.0.0"
ifconfig_nfe0="inet 192.168.1.1 netmask 255.255.255.0"
gateway_enable="YES"
Поток с сервера (Linux) уходит, а на relay (FreeBSD) не приходит.
Вот что на вещателе происходит
tcp 0 48 192.168.1.2:ssh 192.168.1.1:51417
ESTABLISHED 5846/0
udp 0 0 192.168.1.2:44141 239.100.2.17:1234
ESTABLISHED 1496/getstream0
udp 0 0 192.168.1.2:33664 239.100.2.5:1234
ESTABLISHED 1496/getstream0
udp 0 0 192.168.1.2:35736 239.100.2.3:1234
ESTABLISHED 1496/getstream0
udp 0 0 192.168.1.2:59043 239.100.2.14:1234
ESTABLISHED 1496/getstream0
udp 0 0 192.168.1.2:50596 239.100.2.8:1234
ESTABLISHED 1496/getstream0
udp 0 0 192.168.1.2:35499 239.100.2.6:1234
ESTABLISHED 1496/getstream0
udp 0 0 192.168.1.2:39126 239.100.2.2:1234
ESTABLISHED 1496/getstream0
udp 0 0 192.168.1.2:42717 239.100.2.1:1234
ESTABLISHED 1496/getstream0
udp 0 0 192.168.1.2:52193 239.100.2.13:1234
ESTABLISHED 1496/getstream0
udp 0 0 192.168.1.2:46329 239.100.2.19:1234
ESTABLISHED 1496/getstream0
Как заставить фрю принимать мультикаст? Пакеты на интерфейсе 192.168.1.2 идут, а на релее уже нет
tipok
августа 7, 2011 at 14:24
Стыд! У такой утилитки – кода на 1000 строк, и вы жмётесь выложить исходники?
Дмитрий
октября 7, 2011 at 07:55
напишите сами, там всего 1000 строк
Dmitry
августа 8, 2011 at 18:43
Доброго времени суток! Хотелось бы проконсультироваться с Вами по поводу релея – запускаю свой проект tv.mozhay dot net – есть пару вопросов) Если не затруднит – отпишите мне на dimka.smith dot gmail.com
Gab
августа 27, 2011 at 20:31
Подскажите, большая нагрузка процессов релеинга:
PID USERNAME THR PRI NICE SIZE RES STATE C TIME WCPU COMMAND
6392 root 4 44 0 98M 86284K ucond 0 60:26 63.67% relaying-freebsd
6385 root 4 44 0 37700K 26756K ucond 0 12:02 18.26% relaying-freebsd
6443 root 4 44 0 25412K 18908K CPU0 1 15:21 12.55% relaying-freebsd
6434 root 4 44 0 29508K 21048K ucond 3 12:00 8.06% relaying-freebsd
6388 root 4 44 0 29508K 20712K ucond 1 9:48 7.23% relaying-freebsd
6484 root 4 44 0 27460K 19220K ucond 2 10:19 6.15% relaying-freebsd
6386 root 4 44 0 41796K 30676K ucond 1 13:45 5.76% relaying-freebsd
Хотя всего 16 конектов
root relaying-f 6392 5 tcp4 10.0.0.92:8010 *:*
root relaying-f 6392 6 tcp4 10.0.0.92:8010 10.42.0.21:55942
root relaying-f 6392 7 udp4 *:1234 *:*
root relaying-f 6392 8 tcp4 10.0.0.92:8010 10.111.40.51:64630
root relaying-f 6392 9 tcp4 10.0.0.92:8010 10.42.80.16:60474
root relaying-f 6392 10 tcp4 10.0.0.92:8010 10.21.0.13:43335
root relaying-f 6392 11 tcp4 10.0.0.92:8010 10.31.60.34:60053
root relaying-f 6392 12 tcp4 10.0.0.92:8010 10.41.50.10:1089
root relaying-f 6392 13 tcp4 10.0.0.92:8010 10.0.1.10:37644
root relaying-f 6392 14 tcp4 10.0.0.92:8010 10.61.110.25:1224
root relaying-f 6392 15 tcp4 10.0.0.92:8010 10.51.50.19:55268
root relaying-f 6392 16 tcp4 10.0.0.92:8010 10.111.70.5:1955
root relaying-f 6392 17 tcp4 10.0.0.92:8010 10.21.70.7:1294
root relaying-f 6392 18 tcp4 10.0.0.92:8010 10.51.90.20:54798
root relaying-f 6392 19 tcp4 10.0.0.92:8010 10.20.50.6:50182
root relaying-f 6392 20 tcp4 10.0.0.92:8010 10.61.50.28:1313
root relaying-f 6392 21 tcp4 10.0.0.92:8010 10.111.0.30:13326
root relaying-f 6392 22 tcp4 10.0.0.92:8010 10.31.90.47:1879
root relaying-f 6392 23 tcp4 10.0.0.92:8010 10.111.120.15:44431
Gab
августа 27, 2011 at 20:33
FreeBSD 8.2-RELEASE FreeBSD 8.2-RELEASE, Core Quad 2.83
Gab
августа 27, 2011 at 20:38
Сетевая Intel ET Dual Port, через pci-e.
Gab
августа 27, 2011 at 20:41
Запускаю relaying-freebsd –bs=300000 –outhttp =http://10.0.0.92:8000/udp/xxx –inudpif=xxx –inudp=xxxxx:1234 &
Трафика всего бежит ~300Мбит а загрузка почти 70%
Дмитрий
октября 7, 2011 at 07:57
Зрите в лог, разбрасывайте процессы по ядрам, добавляйте буферов драйверу ethernet.
У нас на G6950/2G памяти (Supermicro 5016) отдает полный гиг. Нагрузка есть, но не влияет на картинку. Процессоры они на то и есть, чтобы их грузить
Ashandy
октября 28, 2011 at 13:29
не получается настроить. имеется:
vlan3005 192.168.251.102/252 интерфейс на прием мультикаста
net1 195.54.xx.yy/28 интерфейс смотрит на абонентов
запускаю
./relaying –outhttp=195.54.xx.yy:1234 –inudp=239.0.1.10:1234 –inudpif=192.168.251.102
не работает, и не совсем вообще понятно – это нужно на каждый канал мультикаст группы запускать relaying ? а забирать по адресу 195.54.xx.yy:1234
а если через udpxy то
udpxy -a net1 -m vlan3005 -p 8888 -S -l /var/log/udpxy.log
работает отлично по адресам вида http://195.54.xx.yy:8888/udp/239.0.1.228:1234
ну и так дальше
я что то неправильно прописываю в ситуации с relaying?
Ashandy
октября 28, 2011 at 14:31
Все, внимательно прочитал комментарии, сделал как в конфигах в другой статье – работает.
Tygra
ноября 1, 2011 at 15:21
Очень занятная програмка , установил фряху подтюнил по вашим рекомендациям , на данный момент пытаюсь прогнать уникаст-уникаст , на выходе имею картинку с сильными артефактами и рваным звуком , так и должно быть в случае уникаст-уникаст релея ?
Ashandy
ноября 11, 2011 at 14:16
скажите как вы писали скрипт для схемы уникаст уникаст.. у меня почему то не выходит.. ((
Tygra
ноября 2, 2011 at 06:22
включил debug ("high mark:",54611,"low mark:",54598,"tailLength:",13)
("sent ",2444,"bytes")
2011-11-02 04:18:04.523079 relaying(3034) DEBUG: clentCount==2
("high mark:",54824,"low mark:",54611,"tailLength:",213)
("sent ",40044,"bytes")
("high mark:",54930,"low mark:",54824,"tailLength:",106)
("sent ",19928,"bytes")
2011-11-02 04:18:04.623606 relaying(3034) DEBUG: clentCount==2
("high mark:",55036,"low mark:",54930,"tailLength:",106)
("sent ",19928,"bytes")
2011-11-02 04:18:04.724142 relaying(3034) DEBUG: clentCount==2
("high mark:",55142,"low mark:",55036,"tailLength:",106)
("sent ",19928,"bytes")
("high mark:",55248,"low mark:",55142,"tailLength:",106)
("sent ",19928,"bytes")
2011-11-02 04:18:04.800474 relaying(3034) WARN: http broadcaser client exception: <socket: 7>: hPutBuf: resource vanished (Broken pipe)
2011-11-02 04:18:04.824675 relaying(3034) DEBUG: clentCount==1
2011-11-02 04:18:04.925488 relaying(3034) DEBUG: clentCount==1
2011-11-02 04:18:05.025736 relaying(3034) DEBUG: clentCount==1
2011-11-02 04:18:05.126563 relaying(3034) DEBUG: clentCount==1
2011-11-02 04:18:05.227299 relaying(3034) DEBUG: clentCount==1
2011-11-02 04:18:05.327855 relaying(3034) DEBUG: clentCount==1
2011-11-02 04:18:05.428685 relaying(3034) DEBUG: clentCount==1
2011-11-02 04:18:05.528937 relaying(3034) DEBUG: clentCount==1
2011-11-02 04:18:05.629469 relaying(3034) DEBUG: clentCount==1
2011-11-02 04:18:05.730301 relaying(3034) DEBUG: clentCount==1
2011-11-02 04:18:05.83055 relaying(3034) DEBUG: clentCount==1
2011-11-02 04:18:05.931372 relaying(3034) DEBUG: clentCount==1
2011-11-02 04:18:06.031623 relaying(3034) DEBUG: clentCount==1
2011-11-02 04:18:06.132449 relaying(3034) DEBUG: clentCount==1
ерроров не вижу , почему не адекватно работает уникаст-уникаст ? Хмм если и не должно то просто скажите что и не должно работать , я не буду мучаться и переведу в мультикаст .
Ashandy
ноября 11, 2011 at 14:18
подскажите для такой схемы скрипт, я тоже попробую скажу свое мнение..
мультикаст – уникаст у меня работает отлично – кеш поставил 4 метра.
для радио поставил 512к.
Илья
ноября 23, 2011 at 16:45
gentoo linux
./relaying_threaded –outhttp=10.24.1.200:7144 –inudp=239.10.20.11:1234 –inudpif=10.24.2.30
relaying_threaded: ../sysdeps/unix/sysv/linux/getpagesize.c:32: __getpagesize: Assertion `_rtld_global_ro._dl_pagesize != 0' failed.
Aborted
где зарыта собака?
Илья
ноября 23, 2011 at 16:48
uname -a
Linux tv.convex-tagil.ru 3.0.6-gentoo #1 SMP Fri Nov 18 23:06:13 YEKT 2011 x86_64
Илья
ноября 25, 2011 at 11:43
уже не актуально, поставил фрю 8.2, кстати на amd64 не запускалось пока не залил libiconv от i384
Tygra
ноября 28, 2011 at 14:04
Очень хороший сервачок , после кой какой обкатик нарисовалась проблема , не с первого раза включаются каналы , т.е. раз 5 ткнеш в один и тот же канал то приконнектится , если законнектился то уже держит и показывает стабильно . Сильнее сказывается сия проблема на каналах которые релеятся с мультикаст источника getstream , с аппаратного тюнера PBI 4000 , сия проблема не так выражена т.е. переключается в худшем случае с 3 его разу , а каналы что с гетсрима релеит могут переключится и с 15 ого разу или вообще не переключиться , тупо подождеш , ткнеш еще пару раз и коннектится . Я понимаю что каналы приходят мультикастом и какая разница от чаго приходят потоки вроде не должно быть разницы . Как сию проблему победить ? собирал систему по ману отсюда же , система фря , протюнена по рекомендациям с данного сайта , не перегружена , сервер выделенный ничаго кроме релея на нем не крутится . Тиспидумп грит что запросы от клиентов приходят , а демон релея их или не видит или тупо игнорирует . Сетевая двуголовая гигабитная интел (емка) , дрова яндекса .
Илья
декабря 7, 2011 at 06:22
а что мешает перманентно каналы вешать на твой сервак не по деманду? для этого есть спец опция
только это не спасает когда от стримера пропадает поток, приходится делать перезапуск
Дмитрий
декабря 15, 2011 at 14:37
в версии для линукс этого функционала нет, извините. Под линукс доступна только старая сборка.
Tygra
января 26, 2012 at 14:08
скачал новую версию , ту что за декабрь 2011 , в ней по запросу плеера видно что поток отсылает НО плеер не желает показывать , т.е. запросы с плеера получает стабильно , но показывает не с первого запроса , какието каналы сразу , какието хоть затыкайся , подождем с минуту другую , ткнеш и кажет , подбирать пытался и размер буфера , и размер отдаваемого на макс скорости , вплоть до 0 , всегда поток читать стоит флаг , плеера VLC и IPTV , может стриммер заточен под чтото другое ? могет эти плеера просто неадекватно обрабатывают начало потока . пробывал использовать –rawhttp , пофиг . Хмм может что с буферами в самих плеерах , уже не знаю что ковырять .
tygra
февраля 21, 2012 at 08:11
Проблема была решена с помощью форума наг.ру , дело было в EPG , отключил его везде и каналы стали переключаться с 1ого раза , пользователи очень довольны , а то было не понятно толи работает канал, просто включаться не хочет, то ли загнулся . Спасибо афтору за замечательную прогу . Давно искал не что подобное .
Александр
декабря 8, 2011 at 12:11
relaying: mkTextEncoding: invalid argument (Invalid argument)
uname -a
Linux pbx 2.6.23.17-88.fc7 #1 SMP Thu May 15 00:02:29 EDT 2008 x86_64 x86_64 x86_64 GNU/Linux
pronix
декабря 19, 2011 at 21:52
Подскажите как пользоваться параметрами
–auth=ITEM [none] evil auth server
–auths=ITEM [/etc/relaying.auth.sh] evil auth shell script
yuren
января 14, 2012 at 16:54
Планируется ли новая версия под лінукс?
MasterHome
февраля 8, 2012 at 18:58
При работе идёт утечка памяти. Процессы распухают, отжирая всю свободную память.
last pid: 19563; load averages: 1.01, 1.04, 1.01 up 0+09:15:47 22:46:53
573 processes: 3 running, 570 sleeping
CPU: 13.0% user, 0.0% nice, 23.1% system, 6.5% interrupt, 57.5% idle
Mem: 4350M Active, 21M Inact, 448M Wired, 364K Cache, 489M Buf, 3009M Free
Swap: 1024M Total, 1024M Free
PID USERNAME THR PRI NICE SIZE RES STATE C TIME WCPU COMMAND
5452 root 4 44 0 135M 126M ucond 0 9:34 6.74% relaying
5453 root 4 44 0 119M 110M ucond 0 9:41 2.73% relaying
5484 root 4 44 0 117M 108M ucond 0 6:24 0.78% relaying
5449 root 4 44 0 91364K 81920K ucond 3 6:05 2.83% relaying
mmikel
февраля 11, 2012 at 07:53
а где можно скачать данное чудо? интересует linux x64 версия, если такая есть в природе…
Илья
февраля 18, 2012 at 21:11
подтверждаю… аналогичная ситуация, ребут раз в пару дней помогает, на данный момент на серваке 12 гигабайт памяти, стример работает вторые сутки, схавал уже 10 гигов…
Pasha_49
марта 13, 2012 at 10:11
2.6.32-5-amd64 GNU/Linux, relaying для линукса. Дебиан 64 битный
Почему-то все каналы смешиваются в один поток. При открытии ссылки в плеере, постоянно открывается разный канал, и трафик на сетевуху идет равный сумме всех каналов. Порты прописаны разные, пробовал даже с разными ip.
#!/bin/sh
IF_HTTP=10.0.0.122
IF_UDP=10.0.0.122
killall relaying; sleep 1
/usr/local/bin/relaying –bs=10997936 –outhttp=$IF_HTTP:3001 –inudp=239.0.1.56:3000 –inudpif=$IF_UDP >> /dev/null &
/usr/local/bin/relaying –bs=10997936 –outhttp=$IF_HTTP:3002 –inudp=239.0.1.57:3000 –inudpif=$IF_UDP >> /dev/null &
/usr/local/bin/relaying –bs=10997936 –outhttp=$IF_HTTP:3003 –inudp=239.0.1.58:3000 –inudpif=$IF_UDP >> /dev/null &
Пробовал запустить на Убнту сервер 11,04 – 64: 2.6.38-13-generic x86_64 GNU/Linux
там вообще не хочет запускаться (# /usr/local/bin/relaying –outhttp=10.0.16.9:3000 –inudp=239.0.1.58:3000 –inudpif=10.0.16.9) , пишет "relaying: mkTextEncoding: invalid argument (Invalid argument)
"
MasterHome
марта 16, 2012 at 02:52
Разнесите входящий и отдаваемый трафф по разным интерфейсам. Чтобы мультикаст не шёл сразу весь на интерфейс включите на коммутаторе (если он есть) IGMP snooping.
Pasha_49
апреля 26, 2012 at 11:40
IGMP snooping включен, смешивала потоки сама программы. Проблему удалось решить, поменяв порты мультикастового потока. То есть если мультикастовые потоки все на одном порту, то relaying смешивает их, а если на разных – проблем нету.
pronix
апреля 6, 2012 at 15:51
Отличная программа! Работает неделями без сбоев. Есть ли в ближайших планах добавить к http еще и раздачу по rtsp?
Гость
апреля 10, 2012 at 22:17
./relaying –outhttp=127.0.0.1:8000 –inhttp =http://x.y.z.w/udp/239.1.2.2/5566
Пробовaл так, не идёт. Пишет,нужен порт.
relaying: fromJustX: Nothing, label=http port not specifieduried for receiver
Возможно ли запустить?
Артем
мая 9, 2012 at 08:58
Не работают ссылки для скачивания возможно перезалить – нужна версия дли линукс ну или на почту плиз…..
220B
июня 14, 2012 at 11:37
При схеме юникаст-юникаст иногда с первого обращения зритель получает вместо нормального потока серую картинку с артефактми(при этом скорость отрелеенного потока явно в 1/2 от нормальной)
В чем причина и как это победить?
220B
июня 14, 2012 at 11:38
При реализации схемы мультикаст-юникаст релей в дэбаге сыпет сообщениями: ("delay (no data in buffer to send to client: receiver stopped working?)…",0,0)ж Хотя vlc принимает поток нормально.
С чем может быть связана эта проблемас незамечанием потока в мультикасте?
220B
июня 15, 2012 at 15:20
Разобрался, это происходит потому что relaying-freebsd понимает только RAW UDP и не понимает RTP
pronix
июня 22, 2012 at 09:54
1. Планируется ли добавить поддержку выдачи потока в TS обертке (аналогично mux=ts в VLC)? Это необходимо для приема мкаста такими приставками, как DIB120, понимающие только TS. Если в ближайших планах нет, то будет ли данная программа выложена в open source?
2. Следующую проблему пока не могу точно сформулировать, опишу как есть.
FreeBSD 9.0, relaying version 0.2e-235. Схема mcast-udpxy-relaying. Если не доступен udpxy или источник мкаста для него, то relaying не "отпускает" клиентские соединения:
$ ./relaying –debug –outhttp=0.0.0.0:22222 –inhttp =http://1.1.1.1:8085/udp/224.130.100.100:1234/ –rawhttp
подключаюсь клиентом vlc и отключаю его. Соединение переходит в состояние CLOSE_WAIT
# netstat -an | grep 22222
tcp4 0 0 127.0.0.1.22222 127.0.0.1.16622 CLOSE_WAIT
relaying периодически пытается подключиться к 1.1.1.1:8085
в дебаг сыпет сообщениями
2012-06-22 10:09:15.378275 relaying(84263) DEBUG: clentCount==1
("delay (no data in buffer to send to client: receiver stopped working?)…",0,0)
("delay (no data in buffer to send to client: receiver stopped working?)…",0,0)
Сколько в состоянии CLOSE_WAIT будет висеть соединение не проверял, но полчаса висит и этого достаточно, чтобы проверяющая программа насоздавала таких соединений.
Такие соединения не отстреливаются:
# tcpdrop 127.0.0.1 22222 127.0.0.1 16622
соединение переходит в состояние CLOSED, продолжая висеть, и сбрасываются только рестартом утилиты.
Возможно выходом из данной ситуации может послужить установка SO_KEEPALIVE, TCP_KEEPIDLE, TCP_KEEPINTVL, TCP_KEEPCNT, тк на уровне ОС это подтюнить не получилось.
Дмитрий
января 14, 2011 at 10:01
uname -a ? dmesg (или просто описание платформы) ? md5 бинарника, который запускается ?
Дмитрий
марта 30, 2011 at 14:04
ОС (uname -a) ?