PDA

Bekijk de volledige versie : udpxy - udp->http IPTV прокси



Pages : [1] 2 3

_oz_
29-12-2007, 11:09
Счастливым клиентам провайдеров, вещающих IPTV.
Для тех, чьи железки-плееры не понимают мультикаст (xbox), а также для тех, кто хочет смотреть IPTV по Wi-Fi без задержек и артефактов.

Есть возможность потестировать собранный бинарник (исходники будут чуть позже).

При запуске без параметров - рассказывает какие параметры можно задать. -с clientsN <- ограничение на число одновременно обслуживаемых клиентов. -m ip.ad.dr.ess <- IP адрес интерфейса на который приходят мультикасты.
В фон уходит автоматически.

Пример запуска из post-mount
udpxy -p 81 -m 192.168.101.1 -c 3

Пример запроса
http://192.168.1.1:81/udp/233.233.233.233:5000
будет отдавать по http поток из udp://@233.233.233.233:5000

Кроме этого есть ещё два вида запросов
http://192.168.1.1:81/status - показывает какие потоки кому отдаются
http://192.168.1.1:81/shutdown - останавливает и выгружает прокси из памяти

Кстати, если плеер или медиасервер противится странным URLям и желает видеть .avi или .mpg в конце, то можно задать и http://192.168.1.1:81/udp/233.233.233.233:5000/1.mpg к примеру - прокси проигнорирует лишнее, а плеер успокоится (если сможет проиграть поток).

Если у кого какие вопросы/предложения/сообщения об ошибках - пишите!

Update: Выложил вариант, работающий со встроенной fs
(Большое спасибо Олегу за toolchain и подсказки :))

djet
29-12-2007, 19:43
Спасибо, работает!

Рассыпания по беспроводу полностью пропали, картинка идеальная.

Написал для себя скриптик для запуска:


[routah:root] cat /opt/etc/init.d/S91udpxy
#!/bin/sh

if [ -n "`pidof udpxy`" ]; then
killall udpxy 2>/dev/null

sleep 1

fi
ip=`ip -o -f inet addr show vlan1 | awk '{print $4;}' | sed 's|/.*||'`

udpxy -m $ip -p 81

И ещё странная вещь: после нескольких перезапусков таинственным образом умер процесс igmpproxy, пришлось перезапускать. udpxy его не трогает?

2) Ему чем-то не нравится ключ -a:
[routah:root] udpxy -a 192.168.1.1 -p 81 -c 3
udpxy: illegal option -- a

Oleg
29-12-2007, 20:51
Замечания:
1) Запускать лучше из post-firewall;
2) Желательно переделать так, чтобы можно было указывать upstream интерфейс, а не IP адрес (так работают большинство мультикастных прилад).

Gremlin
29-12-2007, 22:41
Тупой вопрос: хочу скопировать этот файлик непосредственно в память рутера и оттуда запускать (флэшку и внешний винт не подключал).
Удалось положить этот файл в /tmp, сделал ему chmod +x, но всё равно не запускается, пишет "-sh: udpxy: not found". Подскажите, пожалуйста, что я делаю не так.

lly
29-12-2007, 23:09
Утилита слинкована так, что библиотека uClibc берется из /opt/lib. Одно из двух - или требуется конкретная версия библиотеки, или автор забыл про тот факт, что не все запускаются с внешней флешки

Vitaly_k
29-12-2007, 23:48
Утилита слинкована так, что библиотека uClibc берется из /opt/lib. Одно из двух - или требуется конкретная версия библиотеки, или автор забыл про тот факт, что не все запускаются с внешней флешки

Не по этой ли причине програма не хочет стартовать?
Пишет -sh: путь not found
Программу положил в /tmp/local/opt, никаких дополнительных библиотек не ставил.
Где брать uCibc?

Vitaly_k
29-12-2007, 23:50
2) Желательно переделать так, чтобы можно было указывать upstream интерфейс, а не IP адрес (так работают большинство мультикастных прилад).

Может лучше сделать, чтобы интерфейс мультикаста определялся автоматичиски, как это сделано в Вашей прошивке для IGMP-Proxy?

Gremlin
30-12-2007, 00:01
Сделал ipkg install uclibc-opt, теперь ld-uClibc-0.9.28.so (это оно?) лежит в /opt/lib, но прога всё равно не запускается :(

Oleg
30-12-2007, 11:49
Ещё пожелания:
1) страница shutdown явно нам будет не нужна (ведь стартовать его будет некому) :)
2) страницу статус возможно стоит сделать прямо дефолтной и желательно на ней иметь краткую инструкцию по пользованию;

Что касается сборки: сейчас прямо на роутере собирается? Я могу выложить тулчейн, который позволяет собирать совсем нативную версию, т.е. такую, которая использует библиотеки из прошивки и не требует наличия пакетов. Либо воспользуйтесь кросс-компиляцией или я могу собрать.

_oz_
30-12-2007, 14:29
Ещё пожелания:
1) страница shutdown явно нам будет не нужна (ведь стартовать его будет некому) :)
2) страницу статус возможно стоит сделать прямо дефолтной и желательно на ней иметь краткую инструкцию по пользованию;

Что касается сборки: сейчас прямо на роутере собирается? Я могу выложить тулчейн, который позволяет собирать совсем нативную версию, т.е. такую, которая использует библиотеки из прошивки и не требует наличия пакетов. Либо воспользуйтесь кросс-компиляцией или я могу собрать.

Паша и я собираем у меня на рутере :) (с двух сторон атлантики ;-)). Числа 3-4 Паша обещал отпустить исходники "в народ" - как только, так сразу выложу. Собственно, какие-нибудь мелочи жизни вроде краткой инструкции на странице со статусом и я смогу после этого докрутить, чтобы Пашу зря не дёргать - и так ему большое спасибо, учитывая то, что у него на Сиэтлщине IPTV не вещают и все его труды - совершенно бескорыстный всем нам подарок. :)

http://habrastorage.org/storage/habraeffect/17/23/17233b4327ce9eb0a5c7a2a2b7f5ebd8.jpg

Пока я могу собрать на рутере "совсем нативно", если скажете где тулчейн взять :). Я-то даже не в курсе был того, что он uClib с /opt хочет, прошу прощения.

Oleg
30-12-2007, 16:15
http://oleg.wl500g.info/uClibc-0.9.19/native-toolchain.tar.gz

Вот он. Но он требует наличия нормальных компиляторов. И ещё он слегка кривоват из-за использования gcc-4.

Распаковать его нужно так:

tar -C / -xzf native-toolchain.tar.gz

он создаст /opt/brcm/...

Для компиляции

export PATH=$PATH:/opt/brcm/hndtools-mipsel-uclibc/bin
export CC=mipsel-uclibc-gcc

В общем, как при кросс-компиляции.

_oz_
31-12-2007, 10:43
Спасибо, Олег!

Со второй попытки (слишком умные make-файлы были ;-)) вроде бы собралось. У меня работает, но работало и до этого.

У кого не работал предыдущий вариант - просьба пробовать и отписываться, заработал ли этот :)

С Наступающим!

lly
31-12-2007, 13:00
Этот вариант работает со встроенной fs. Спасибо.

Vitaly_k
31-12-2007, 13:30
У кого не работал предыдущий вариант - просьба пробовать и отписываться, заработал ли этот :)


Теперь работает, спасибо!
Напрягает только необходимость указывать адрес при запуске т.к. он динамический (Корбина).
А в целом - супер, по wi-fi теперь никаких квардратов.

djet
31-12-2007, 13:54
Теперь работает, спасибо!
Напрягает только необходимость указывать адрес при запуске т.к. он динамический (Корбина).
А в целом - супер, по wi-fi теперь никаких квардратов.
Пользуйся моим скриптиком. Его запуск можно в post-firewall повесить.

Gremlin
31-12-2007, 15:30
Спасибо, теперь запустилось и заработало!
Только качество изображения не улучшилось, почти все кадры теряются.
Похоже, что-то ещё сильно грузит проц рутера. Буду разбираться дальше.

_oz_
31-12-2007, 16:13
Спасибо, теперь запустилось и заработало!
Только качество изображения не улучшилось, почти все кадры теряются.
Похоже, что-то ещё сильно грузит проц рутера. Буду разбираться дальше.

Странно... если картинка рыссыпается можно попробовать попереключать каналы (поостанавливать-позапускать). У меня иногда бывают сложнообъяснимые "плохие" коннекты.
Но может быть, конечно, и не в этом дело.

Vitaly_k
01-01-2008, 20:59
Интересно, а сложно проделать обратную операцию - преобразовать роутером юникаст в мультикаст?
Нужно это чтобы смотреть ТВ через приставку подключенную по wi-fi. Т.е. роутер будет использоваться как wi-fi клиент.

djet
01-01-2008, 23:52
_oz_, повысь, пожалуйста, приоритет процессов до максимального. Без renice'a при загрузке торрентом без выпадений смотреть невозможно, даже по проводу.

А какой по умолчанию размер буфера используется?

Exforest
03-01-2008, 08:57
Поставил последнюю прошивку. Роутер WL550ge,
в настройках wi-fi скорость мультикаста поставил на макс, но осталась проблемма с цифровым шумом,проскакивают лаги и подобные гадости.
Есть еще способ для решения данной проблеммы?

_oz_
03-01-2008, 10:03
_oz_, повысь, пожалуйста, приоритет процессов до максимального. Без renice'a при загрузке торрентом без выпадений смотреть невозможно, даже по проводу.

А какой по умолчанию размер буфера используется?

Паша зарегистрировался в форуме - читает и, надеюсь, сможет ответить точнее на вопросы (ник bsl45). У меня при просмотре исходников сложилось ощущение (скорее всего ошибочное), что буфера по умолчанию нет вообще. Приоритеты процессов ретрансляции, конечно, надо бы иметь возможность задавать в параметрах. Я как-то даже не подумал о том, что рутер может быть сильно загружен. (У меня торрентов столько запущено, что они работают на компьютере - на рутер даже не пробовал ставить - дохлый номер, если память не перепаивать ;-))

А так - классная штука получилась, открыл проксёвый порт наружу, смог смотреть TV из другой сетки, с другого конца города :) чуть-чуть скорости не хватает, нет постоянно 3.5MBps, колеблется от 2-х до 4-х - поэтому картинка рассыпается временами (тут как раз большой буфер помогает, но понятно, только до определённой степени).

Oleg
03-01-2008, 10:25
Да, когда большая нагрузка на процессор то он пропускает пакеты будь здоров. Даже если найс выкрутить полностью. У меня в первый раз проявилось, когда кто--то снаружи ломился на роутер по ssh, подбирая пароли. :)

SO_RCVBUF может нас спасти?

Vitaly_k
03-01-2008, 22:56
в настройках wi-fi скорость мультикаста поставил на макс, но осталась проблемма с цифровым шумом,проскакивают лаги и подобные гадости.
Есть еще способ для решения данной проблеммы?

При работе через этот прокси мультикаст не нужен.
По хорошему его нужно отключить чтобы не засорял wi-fi, если другое устройство смотрит ТВ по проводу без прокси.
Подскажите, мультикаст на wi-fi интерфейсе отулючаем через VLAN-ы или файрволом?

ega2002
04-01-2008, 11:52
Спасибо за программу, пригодилась мне в OpenWRT, где у меня не получалось наладить IPTV от Корбины без перекомпиляции ядра. Да и вообще, ИМХО, такой способ лучше именно из-за возможности не гонять мультикаст по внутренней сети и вайфаю.

Spacesoft
04-01-2008, 12:15
Что-то не хочет: смотрел тцпдампом - при подключении плеера по http ссылке на роутер начинают нормально жирным потоком сыпаться udp-пакеты, но с http сервера никаких данных кроме HTTP/1.0 200 OK не идёт.

ega2002
04-01-2008, 12:37
Что-то не хочет: смотрел тцпдампом - при подключении плеера по http ссылке на роутер начинают нормально жирным потоком сыпаться udp-пакеты, но с http сервера никаких данных кроме HTTP/1.0 200 OK не идёт.
ИМХО, надо смотреть в сторону настроек файрвола на роутере. Для начала можно попробовать его отключить совсем (знающие люди подскажут, как это проще сделать на прошивке Олега). Ну и отключить мультикаст роутинг.

ega2002
04-01-2008, 12:48
Что-то не хочет: смотрел тцпдампом - при подключении плеера по http ссылке на роутер начинают нормально жирным потоком сыпаться udp-пакеты, но с http сервера никаких данных кроме HTTP/1.0 200 OK не идёт.
Еще мысли : а что пишет /status ? И что в логах роутера?

Spacesoft
04-01-2008, 13:34
фиревал в вебморде отключен, правила iptables которые возможно могут помешать - сброшены, игмппроксь пришиблена,
в /статусе
HTTP/1.0 200 OK Content-type: text/html
Server process [1080] is listening on address [0.0.0.0:8080] Multicast interface [172.17._._] Active clients: 0
При старте без фона в кансоль пишет:
[admin@router /tmp]$ udpxy -v -T -m 172.17._._ -p 8080
Starting server [1081]; capacity=[1] clients
Setting up listener for [0.0.0.0:8080]
Server socket=[4] is set up
Entering server loop
Server socket=[4] is waiting.
Accepted socket=[5]
Reading command from socket [5]
Request=[udp/233.163.114.154:5308], length=[24]
Command [udp] with params [233.163.114.154:5308] read from socket=[5]
udp_relay : new_socket=[5] param=[233.163.114.154:5308]
Added client: pid=[1082], maddr=[233.163.114.154], mport=[5308], saddr=[10.156._._], sport=[2637]
Closed accepted socket [5]
Server socket=[4] is waiting.
Client process=[1082] started for socket=[5]
Setting up multicast listener
Mcast listener socket=[4] set up
Relaying traffic from socket[4] to socket[5], buffer size=[1800]
Sent HTTP response code=[200], reason=[OK] to socket=[5]
Receive on socket [4] timed out
relay_traffic - recv: Resource temporarily unavailable
Exited relay loop: received=[-1], sent=[0], quit=[0]
Mcast listener socket=[4] closed
Child process=[1082] exits with rc=[0]
*** Caught SIGCHLD in process=[1081] ***
Client [1082] has exited.
Deleted client: pid=[1082]
Server socket=[4] is waiting.
Пробовал на 2х 500гп с фирмварью 1.9.2.7-7g
При хттп запросе начинает валить udp траффик, но данных нет.

Oleg
04-01-2008, 13:37
А multicast routing разрешён? Возможно дело в фаерволе.

Spacesoft
04-01-2008, 13:52
А multicast routing разрешён? Возможно дело в фаерволе.в вебморде разрешён, в фаере правила есть.
cat /tmp/filter_rules

-A INPUT -p igmp -d 224.0.0.0/4 -j ACCEPT
-A INPUT -p udp -d 224.0.0.0/4 -j ACCEPT

даже роутинг попробовал прописать, хотя если udp-трафф начинает валить - то с этим всё норм...
15:39:11.829744 IP 77.246.96.66.4096 > 233.163.114.152.5304: UDP, length: 1316

ega2002
04-01-2008, 14:33
в вебморде разрешён, в фаере правила есть.
cat /tmp/filter_rules

-A INPUT -p igmp -d 224.0.0.0/4 -j ACCEPT
-A INPUT -p udp -d 224.0.0.0/4 -j ACCEPT

даже роутинг попробовал прописать, хотя если udp-трафф начинает валить - то с этим всё норм...
15:39:11.829744 IP 77.246.96.66.4096 > 233.163.114.152.5304: UDP, length: 1316
Выключи мультикаст роутинг, для udpxy он не нужен. И еще одно: попробуй добавить правило

-A INPUT -j ACCEPT

чтобы убедиться, что дело точно не в файрволе

Добавлено: или еще лучше

-I INPUT 1 -j ACCEPT

piezomotor
04-01-2008, 17:45
Вот у меня проблема с прокси-

http://wl500g.info/showthread.php?t=12214&highlight=WEB

Может кто знает как победить?

Spacesoft
04-01-2008, 20:30
У меня подозрение,(чиста шаманское) что дело в маске подсети, у нас она /16 , мб прога прицепляется к ифейсу "по привычке" как к /24 ибо 'у всех' /24 ?
1) Вроде-как мультикаст-девайс надо-бы слушать как iface (напр. eth0 или там vlan1) , a просят указать его IP.
2) ключ -а (куда биндить хттп сервак) прога вообще не обрабатывает.

slody
05-01-2008, 00:34
Огромное спасибо Олегу
+ огромное спасибо за udpxy

Прошивка стоит полследняя, мультикаст роутинг не выключал (для себя)
А для ноута запустил этот самый udpxy

Сеть корбина

Часть каналов работает на ура, а некоторые рассыпаются. Не знаю с чем связано.

П.С.: Господа напишите последовательность команд для того чтобы udpxy сохранилась в роутере + автоматом запускалась, если не юзать флешку.

Спасибо.

Spacesoft
05-01-2008, 04:21
Часть каналов работает на ура, а некоторые рассыпаются. Не знаю с чем связано.

П.С.: Господа напишите последовательность команд для того чтобы udpxy сохранилась в роутере + автоматом запускалась, если не юзать флешку.

Спасибо.
дык сыровата прога ещё, у меня вообще не работает.

1) файл udpxy закинуть в /usr/local/bin/
2) сделать ему chmod +x /usr/local/bin/udpxy
3) в /usr/local/sbin/ закинуть файл (или дописать к существующему там файлу) post-mount с содержымым:


#!/bin/sh
#
ip=`ip -o -f inet addr show vlan1 | awk '{print $4;}' | sed 's|/.*||'`
udpxy -m $ip -p 81
4) сделать ему chmod +x /usr/local/sbin/post-mount
flashfs save
flashfs commit
flashfs enable

ega2002
05-01-2008, 11:06
Часть каналов работает на ура, а некоторые рассыпаются. Не знаю с чем связано.

1. Связано может быть с битрейтом каналов, возможно он разный.
2. Смотришь по вайфаю?

slody
05-01-2008, 12:34
1. Связано может быть с битрейтом каналов, возможно он разный.
2. Смотришь по вайфаю?

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

кто из корбины - пример:

канал Россия 233.32.210.134:5050 рассыпается везде

канал Дискавери 233.32.210.181:5050 идет на ура

бит рейты не знаю где смотреть. юзаю IP-TV Плеер 0.27.1, тот что на LibVLC, думаю все с ним знакомы.


2 Spacesoft, большое спасибо!

ega2002
05-01-2008, 14:43
поразительно, но если канал сыпеться на вайфайе то и на проводе тоже рассыпается.
а те что нормально, то нормально везде

кто из корбины - пример:

канал Россия 233.32.210.134:5050 рассыпается везде

канал Дискавери 233.32.210.181:5050 идет на ура

бит рейты не знаю где смотреть. юзаю IP-TV Плеер 0.27.1, тот что на LibVLC, думаю все с ним знакомы.

2 Spacesoft, большое спасибо!
Я также пользуюсь Корбиной, но проверить не могу, т.к. сейчас не дома. В Вашем случае могу предположить проблемы на стороне провайдера, ибо их с введением IPTV стало особенно много - перегружены магистральные каналы (в зависимости от района). Проблема также может быть и на компе с плеером.
Чтобы разобраться, я бы порекоммендовал посмотреть трафик на самом роутере, причем отдельно входящий от провайдера (udp) и исходящий на комп с плеером (http). Для этого можно, например, использовать утилиту iftop, выдающую результат в реальном времени через телнет/ssh. Не знаю, есть ли она в Олеговой прошивке (у меня OpenWRT), но ее всегда можно установить дополнительно.

Добавлено: попробуйте в качестве плеера VLC, он менее ресурсоемок

_oz_
05-01-2008, 21:26
поразительно, но если канал сыпеться на вайфайе то и на проводе тоже рассыпается.
а те что нормально, то нормально везде

кто из корбины - пример:

канал Россия 233.32.210.134:5050 рассыпается везде

канал Дискавери 233.32.210.181:5050 идет на ура

бит рейты не знаю где смотреть. юзаю IP-TV Плеер 0.27.1, тот что на LibVLC, думаю все с ним знакомы.


2 Spacesoft, большое спасибо!

Странно, у меня это зависит не от канала, а от "попытки" :) Часто первая попытка после загрузки рутера _и_ vlc идёт с квадратами, следующие - без.

Битрейт можно посмотреть в VLC правая кнопка->Miscellaneous->Media Info... Закладка Statistics, Input Bitrate/Stream Bitrate
Удачные соединения происходят с битрейтом ~3100 kb/s
На неудачных битрейт скачет от 1500 до 2500

bsl45
08-01-2008, 09:11
Всех с наступившим Новым Годом и Рождеством!

Прилагаю исходный код программы udpxy (v. 0.1 Build 18) - внесены определённые поправки и дополнения (смотрите файл CHANGES): замечания и пожелания постараюсь учесть. Makefile-а для сборки на WL500G со встроенной c library здесь пока нет.

Всего наилучшего,
Павел

ega2002
08-01-2008, 21:16
Выложите кто-нибудь, пожалуйста, бинарник последней версии

Oleg
08-01-2008, 21:46
Всех с наступившим Новым Годом и Рождеством!

Прилагаю исходный код программы udpxy (v. 0.1 Build 18) - внесены определённые поправки и дополнения (смотрите файл CHANGES): замечания и пожелания постараюсь учесть. Makefile-а для сборки на WL500G со встроенной c library здесь пока нет.

Всего наилучшего,
Павел
Взаимно!

Павел, не могли бы Вы в будущих версиях добавить в gcc.mk цель all? И возможно переименовать gcc.mk в Makefile? :)

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

Собранную версию прикрепил к сообщению.

После скачивания развернуть с помощью gunzip udpxy.gz

bsl45
09-01-2008, 01:55
Олег,

Размер файла объясняется большим количеством включённой трассировочной информации, которую отображает режим -v. Я сделаю цель "lean" в makefile, при которой эта информация включаться не будет.

В дальнейшем сделаю пакет (архив) специально для wl500, где makefile по умолчанию будет использовать соответствующий gcc.

Павел

Vitaly_k
09-01-2008, 11:15
2 Oleg:
Может добавите udpxy в бету новой прошивки?
Так чтобы при запуске определялся и передавался в качестве параметра сетевой интерфейс, а номер порта брался из web-морды.

djet
09-01-2008, 12:15
2 Oleg:
Может добавите udpxy в бету новой прошивки?
Так чтобы при запуске определялся и передавался в качестве параметра сетевой интерфейс, а номер порта брался из web-морды.
Поддерживаю, программа must have и весит немного.

Oleg
09-01-2008, 12:49
Я добавлю обязательно, но чуть позже. :)

piezomotor
09-01-2008, 17:31
Счастливым клиентам провайдеров, вещающих IPTV.
Для тех, чьи железки-плееры не понимают мультикаст (xbox), а также для тех, кто хочет смотреть IPTV по Wi-Fi без задержек и артефактов.

А как я могу смотреть Карбину на xbox?

_oz_
09-01-2008, 17:45
А как я могу смотреть Карбину на xbox?

Если рутер с установленным прокси и XBOX с установленным XBMC (желательно версия из свежих) - очень просто.

1) Делается или берётся iptv.m3u со всеми каналами (который работает в VLC на PC).
2) В нём глобально заменяются все "udp://@" на "http://192.168.1.1:81/udp/" если порт прокси и/или IP рутера другой - надо заменить на актуальный.
3) Проверяется, что этот iptv.m3u продолжает работать в VLC на PC. Если нет - неправильно настроен либо не запущен прокси.

4) Получившийся iptv.m3u заливается на винт бокса по ftp, заносится в Favorites в XBMC - по вкусу.
5) При открывании его в XBMC видим список каналов - выбираем нужный.
6) При проигрывании можно выбирать аудиопоток (если для канала их вещается несколько) и способ Interlace Handling (у меня лучше всего результаты при Deinterlace либо None, при других методах подтормаживает). Для переключения каналов работают кнопки |<< >>|, как и в любом плей-листе.

piezomotor
09-01-2008, 18:45
берётся iptv.m3u со всеми каналами...

Спасибо _oz_, а где взять?

_oz_
09-01-2008, 18:52
2 Oleg:
Может добавите udpxy в бету новой прошивки?
Так чтобы при запуске определялся и передавался в качестве параметра сетевой интерфейс, а номер порта брался из web-морды.

Кстати говоря, по просьбам отозвавшихся в новой версии можно для -m вместо IP указывать интерфейс. Он, насколько я понял, vlan1 и не меняется от раза к разу :)
Попробовал - работает отлично.

_oz_
09-01-2008, 18:55
Спасибо _oz_, а где взять?

Ну а так-то Вы как корбину смотрите? Проще поискать готовый, наверное. Кто-то же наверняка корбину в VLC наблюдает. У меня провайдер, каналы и адреса (группы) другие, так бы своим поделился. :)

piezomotor
09-01-2008, 20:17
Ну а так-то Вы как корбину смотрите? Проще поискать готовый, наверное. Кто-то же наверняка корбину в VLC наблюдает. У меня провайдер, каналы и адреса (группы) другие, так бы своим поделился. :)

Я корбину смотрю тут- Трансляции эфирного телевидения
http://www.corbina.tv/transmission/

Дасс.. Открываю линки в VLC.

slody
09-01-2008, 20:19
вот корбиновские 79 каналов
переделай под себя

п.с. для iptv player

piezomotor
09-01-2008, 23:04
вот корбиновские 79 каналов
переделай под себя

п.с. для iptv player

А я не в Москве, адреса даже не пингуются....

Как смотреть каналы?

_oz_
09-01-2008, 23:19
А я не в Москве, адреса даже не пингуются....
Как смотреть каналы?

Они пинговаться и не будут. Это, строго говоря, и не адреса, а мультикаст группы. Открывать m3u в VLC (quick open file) и пытаться смотреть каналы в плейлисте.

Но если честно, то у меня есть сомнения в том, что мы тут сможем Вам помочь.

piezomotor
09-01-2008, 23:51
Они пинговаться и не будут. Это, строго говоря, и не адреса, а мультикаст группы. Открывать m3u в VLC (quick open file) и пытаться смотреть каналы в плейлисте.

Но если честно, то у меня есть сомнения в том, что мы тут сможем Вам помочь.

А как мне стать членом мультикаст группы?

Понятно что узел получателя (мой WL500gP) инициирует запрос на маршрутизатор IPTV сети и сетевой интерфейс узла-получателя настраивается на прием пакетов с этим групповым адресом.

_oz_
10-01-2008, 01:03
А как мне стать членом мультикаст группы?

Понятно что узел получателя (мой WL500gP) инициирует запрос на маршрутизатор IPTV сети и сетевой интерфейс узла-получателя настраивается на прием пакетов с этим групповым адресом.

В группу, наверное, всё же входят скорее пакеты, нежели подписчики, хотя это вопрос того, с какой стороны смотреть на процесс. :)

Вообще этим igmpproxy занимается. Включается он в веб-интерфейсе по Enable Multicast Routing. По идее, со стоящим udpxy этого не надо - подписываться будет udpxy когда сокет будет открывать.

Но начать стоит, наверное, с того, чтобы попробовать без udpxy, но со включённым igmpproxy при помощи VLC попробовать что-нибудь посмотреть из плей-листа по udp. При подписывании в лог рутер сыпет строки вида kernel: vlan1: add _MAC_ADDRESS_ mcast address to master interface

В общем и целом, в других темах (начиная с FAQ) это всё достаточно подробно разжевано больше одного раза. Я думаю, что здесь можно с этим завязывать.

Inconnu
12-01-2008, 17:46
Доброе время суток :)

udpxy великолепно справляется с ретрансляцией udp мультикастов, но наш провайдер ("Интерсвязь", Челябинск) большую часть каналов транслирует через udps. Можно ли использовать udpxy для релея udps-мультикастов? Или, может быть, можно добавить в udpxy этот функционал? :)

UPD. Порыл насчет того, что такое udps, и оказалось, что это написанный провайдером протокол, представляющий собой тот же udp, только зашифрованный xor'ом с маской, получаемой с https-сервера. Как бы то ни было, tcpdump показывает, что пакеты на бук пересылаются. Теперь проблема в том, чтобы сказать плейеру, что принимаемые уникаст-пакеты надо расшифровывать, так что просьба снимается :)

bsl45
17-01-2008, 02:41
Прилагаю обновление udpxy (исходный код). Изменения незначительные - подробности внутри архива в файле CHANGES.

Данный архив укомплектован специально для wl500: makefile использует компилятор mipsel-linux-uclibc-gcc, т.е. бинарник должен без проблем запускаться на встроенной файловой системе.

Замечания и пожелания - милости просим.

С уважением,
Павел

catmat
17-01-2008, 08:40
Прилагаю обновление udpxy (исходный код). Изменения незначительные - подробности внутри архива в файле CHANGES.
С уважением,
Павел
Павел, огромное спасибо за такую программу! Сейчас пользуюсь ей каждый день, работает идеально, так что эта программа для меня number one. Ей бы еще функцию принудительной отписки от лжеподписок на вещание (пардон за тавтологию) У моего провайдера (netbynet.ru) сейчас вещается около 100 каналов, и практически каждый вечер на порт сыпется какой-то поток, на который я не подписывался и не запрашивал его. Это, конечно, глюк провайдера, и я не уверен, что с этим можно что-то сделать, но вдруг :)
Но вне зависимости от этого программа замечательная!

P.S. Скомпилите кто-нибудь последнюю версию ?

Vitaly_k
17-01-2008, 09:34
Замечания и пожелания - милости просим.


Мне кажется, выше было правильно сказано - страничку status перенести в корень и добавить в нее короткий хелп по использованию.

gorbushka
17-01-2008, 11:14
Ребят, помогите установить данную программу в роутер. В линуксе я абсолютный ноль :( или может кто-то напишет подробный faq как с-нуля установить данную программу? Я буду премного благодарен

Oleg
17-01-2008, 16:05
Данный архив укомплектован специально для wl500: makefile использует компилятор mipsel-linux-uclibc-gcc, т.е. бинарник должен без проблем запускаться на встроенной файловой системе.

Это как раз неправильный компилятор. :) Правильный - mipsel-uclibc-gcc, в Makefile его лучше совсем не указывать. Переменная CC при сборке будет установлена автоматом.

А ещё strip надо заменить на STRIP, иначе при кросс-компиляции оно не понимает формата. :) Или вообще не стрипать, опять же при сборке прошивки оно стрипается во время install.


Build 15-18 (7-Jan-2008):
(*) interface names get translated into IPv4 addresses
(*) lock-enabled pidfile support added

Build 19 (9-Jan-2008):
(*) 'lean' target added to makefile
(*) -n (nice increment) option added

Build 20 (9-Jan-2008):
(*) default settings changed for various options

Build 21-22 (16-Jan-2008):
(*) Web GUI refinements (new design, 'restart' button added to status page)
(*) mipsel-linux-uclibc-gcc support added to wl500-specific makefile
(*) generation of wl500-specific source archive

bsl45
17-01-2008, 21:01
makefile я, разумеется, поправлю (компилятор, strip)

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

Вот варианты размещения руководства по пользованию: 1) страница статуса, 2) man page, 3) README.txt

Отдавайте ваши предпочтения - возможны и комбинации вариантов.

К вопросу о том, как устанавливать - сделаю цель 'install' с параметром пути для установки.

catmat
17-01-2008, 21:33
Уверен, что README.txt будет более чем достаточно. А вообще не очень понятно, что еще надо объяснять, и так, помоему, все предельно ясно из информации, выдаваемой программой при запуске без параметров.

djet
17-01-2008, 22:26
Может, в репозиторий ipkg стоит выложить? Имхо, продукт созрел.

Vitaly_k
17-01-2008, 22:28
краткое руководство по пользованию можно добавить в страницу статуса, правда оно уже выводится на экран при запуске без параметров. Или нужно нечто более, чем перечисление опций (краткое описание сути, примеры и т.п.)? Страница статуса, кроме того, недоступна, пока программа не запущена в режиме сервера.

Опции запуска пусть останутся как есть - при запуске без параметров. Вы верно заметили - если страница статуса стала доступна, то программу уже смогли запустить.
Нужна подсказка по использованию - к какому виду нужно преобразовать URL чтобы из мультикаста получить юникаст. Т.е. с реальным IP прокси и номером порта.
Можно добавить счетчики - сколько передано всего, сколько на текущем канале и битрейт. Сколько потеряно (если это можно посчитать).



Вот варианты размещения руководства по пользованию: 1) страница статуса, 2) man page, 3) README.txt


Запуск - readme, использование - статус.

Vitaly_k
17-01-2008, 22:30
Уверен, что README.txt будет более чем достаточно. А вообще не очень понятно, что еще надо объяснять, и так, помоему, все предельно ясно из информации, выдаваемой программой при запуске без параметров.

Не забываем, программа скоро попадет в базовую прошивку и ридми читать никто не будет.

catmat
17-01-2008, 22:35
Не забываем, программа скоро попадет в базовую прошивку и ридми читать никто не будет.
Ну так тогда может настройки программы вынести в веб ?
Типа вкл/выкл. Что бы тем, кому она нужна, но кто слаб в линуксе, мог настроить простые функции и так.

Vitaly_k
17-01-2008, 22:41
Ну так тогда может настройки программы вынести в веб ?
Типа вкл/выкл. Что бы тем, кому она нужна, но кто слаб в линуксе, мог настроить простые функции и так.

Естественно. Я думал Олег именно это имел в виду, когда обещал включить в прошивку. А настройка там, фактически одна - номер порта.

bsl45
18-01-2008, 00:02
Насколько критична настройка изнутри по веб-интерфейсу? Запуск программы из командной строки, насколько я понимаю, в любом случае ложится на плечи пользователя - т.е. запускать команды из Linux всё же придётся. Пусть выскажутся те, кто с Linux на "вы" - так ли это важно при готовых примерах на странице статуса? Пример того, как "добиться" запуска (чтобы добраться до статуса) я мог бы выводить при запуске без параметров.

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

Vitaly_k
18-01-2008, 09:47
Насколько критична настройка изнутри по веб-интерфейсу?

Мне кажется Вы не так поняли. Настройка через веб-интерфейс нужна на в Вашей программе, а в основной прошивке. Прошивка возьмет номер порта из NVRAM и передаст его в udpxy в командную строку.

Oleg
18-01-2008, 10:46
Насколько критична настройка изнутри по веб-интерфейсу? Запуск программы из командной строки, насколько я понимаю, в любом случае ложится на плечи пользователя - т.е. запускать команды из Linux всё же придётся. Пусть выскажутся те, кто с Linux на "вы" - так ли это важно при готовых примерах на странице статуса? Пример того, как "добиться" запуска (чтобы добраться до статуса) я мог бы выводить при запуске без параметров.

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

Vitaly_k
18-01-2008, 17:09
Предложение - давайте стандартизируем порт, на котором оно по умолчанию будет работать. Вещь новая, общепризнаных номеров портов как 3128=http-proxy, 1080=socks по ней нет.

bsl45
18-01-2008, 20:11
Своевременная идея, поскольку я как раз собирался добавить порт по умолчанию (но теперь не буду). Насколько я понимаю, это не требуется, поскольку веб-интерфейс сам определяет порт.

Павел

Oleg
18-01-2008, 20:50
4080 устроит? :)

Serge_K
18-01-2008, 21:02
4080 устроит? :)
А MLDonkey не его использует?

Vitaly_k
18-01-2008, 21:41
4080 устроит? :)

Корбина - порт IPTV 5050, Стрим 5500, но они заняты - http://www.iana.org/assignments/port-numbers
Вариант из свободных - 8580

Vitaly_k
18-01-2008, 21:49
Разумеется, при надобности, статистику вести отнюдь не проблема, была бы польза (а она есть?).

Битрейт был бы полезен. IP TV Player его не показывает, а бывает любопытно.

Oleg
19-01-2008, 20:45
Корбина - порт IPTV 5050, Стрим 5500, но они заняты - http://www.iana.org/assignments/port-numbers
Вариант из свободных - 8580
Я поступлю проще. Пусть это будет головной болью того, кто будет использовать. :) Сделаю на странице services поле с номером порта, где по умолчанию будет 0, т.е. disabled.

zingarini
24-01-2008, 10:37
Уважаемые Все!
Нужна помощь. Про линукс впервые узнал на этом форуме, поэтому пока я на уровне щели между полом и плинтусом
Но всё же. Выполняю действия по порядку:

1) файл udpxy закинуть в /usr/local/bin/
2) сделать ему chmod +x /usr/local/bin/udpxy
3) в /usr/local/sbin/ дописать к существующему там файлу post-mount "бла,бла,бла" (менял только порт)
4) сделать ему chmod +x /usr/local/sbin/post-mount
flashfs save
flashfs commit
flashfs enable
reboot
здесь все вроде без ошибок, далее:

запуск: udpxy -p 2002 -m "ip.кот.дает.корбина.моему.роутеру." -c 3
запрос из vlc: открыть url - http://192.168.1.1:2002/udp/233.32.210.181:5050

81 порт пробовал.
не работает. что не так?
Спасибо.

ega2002
24-01-2008, 12:00
/... что не так?
Спасибо.

Входящий мультикаст траффик в файерволе разрешен?

zingarini
24-01-2008, 12:29
Входящий мультикаст траффик в файерволе разрешен?

файервол роутера или компа? в роутере по умолчанию. в винде открыл на всякий и 81 и 2002 порты для tcp и udp...
скажите пожалуйста: как разрешить мультикаст на роутере?

_oz_
24-01-2008, 13:03
файервол роутера или компа? в роутере по умолчанию. в винде открыл на всякий и 81 и 2002 порты для tcp и udp...
скажите пожалуйста: как разрешить мультикаст на роутере?

IP Config - Route
Enable multicast routing? - Yes.

Сам не пробовал, но кто-то писал, что и без этого работает.
Тут, возможно, дело в другом - попробуйте в -m вместо IP написать vlan1
То есть _буквально_:
udpxy -p 2002 -m vlan1 -c 3

P.S. Кстати, работает ли хоть как-нибудь в vlc ссылка udp://@233.32.210.181:5050 ?

zingarini
24-01-2008, 13:56
IP Config - Route
Enable multicast routing? - Yes.

видимо неправильно задал вопрос. как разрешить мультикаст через файервол?
если я правильно понял суть проги udpxy, то роутинг мультикаста здесь не причем, хотя пробовал и так и этак.

zingarini
24-01-2008, 14:24
P.S. Кстати, работает ли хоть как-нибудь в vlc ссылка udp://@233.32.210.181:5050 ?

не работает никак. хотя все остальные каналы через udp:// по кабелю работают не плохо (enable multicast) . уж очень хочется смотреть по вифи.:rolleyes:

ega2002
24-01-2008, 14:29
видимо неправильно задал вопрос. как разрешить мультикаст через файервол?
если я правильно понял суть проги udpxy, то роутинг мультикаста здесь не причем, хотя пробовал и так и этак.
Мультикаст идет на роутер, поэтому там его и нужно разрешать. Например, командой:

iptables -A INPUT -i vlan1 -d 224.0.0.0/240.0.0.0 -j ACCEPT

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

Добавление: нет, для мультикаст-роутинга нужно другое правило, в цепочке FORWARD

slody
24-01-2008, 16:01
у меня без enable multicast не работает udpxy

zingarini
26-01-2008, 06:41
С новой 1927-8.12 IpTv смотрю по WiFi. Качество классное, хотя работает лишь часть каналов. Благодарю за 8.12, udpxy, и всех кто помогал:)
ура!

Alexey k
29-01-2008, 12:41
Спасибо, красивое решение. Новая прошивка - и все работает. Не с первого раза убрались кубики, пришлось поколдовать маленько.

Обязательно!!!

Enable WMM No-Acknowledgement - Disabled

иначе - квадратики.

Кстати, Multicast Rate 9 - достаточно.

Ну а что бы совсем малина была, нужно придумать как автоматом плейлист скачивать и заменять в нем ссылки с таких udp://@233.32.210.181:5050 на такие http://192.168.1.1:2002/udp/233.32.210.181:5050

bmv2007
30-01-2008, 12:02
Поставил 1.9.2.7-8.12 . Попробовал посмотреть через Wi-Fi. Часть каналов работает идеально, часть сплошная зеленая каша. Причем замечено, что работают каналы с
http://192.168.251.1:7777/udp/233.32.210.xxx:5050.
Сплошной мусор на адресах
http://192.168.251.1:7777/udp/233.32.240.xxx:5050
Это только у меня так?
При просмотре udp://@233.32.240.xxx:5050 напрямую без udpxy все более или менее нормально - иногда проскакивают артефакты, но такого сплошного мусора нет.

Oleg
30-01-2008, 14:17
Речь про Корбину? Чем 240 отличаются от 210? У меня сложилось впечатление, что это некая копия с другим кодированием. Каналы совпадают. Разве нет?

bmv2007
30-01-2008, 16:29
Да речь про Корбину. Вроде считается, что адреса с 240 останутся после введения платного IPTV, а 210 не будет. Насчет кодирования не в курсе, хотя было бы резонным предположить как раз кодирование в 233.32.210.xxx

Oleg
30-01-2008, 16:43
Вот ответ на ваш вопрос:
http://borpas.info/forum/topic.php?forum=1&topic=30

bmv2007
30-01-2008, 19:35
Ну про Корбину понятно, а про остальное - наверное неправильно спросил :)
Смотрю через IPTV плеер, VLC - не важно (WiFi).
Канал udp://@233.32.210.115:5050 (Первый канал в Корбине) - показывает хорошо. Тот же канал через UDP прокси
http://192.168.251.1:7777/udp/233.32.210.115:5050 - тоже хорошо.
Теперь другой канал udp://@233.32.240.134:5050 (Россия) - тоже хорошо,
а вот этот же канал через UDP прокси - http://192.168.251.1:7777/udp/233.32.240.134:5050 показывает сплошную зеленую кашу.
Причем для всех каналов у которых 210 в третьем байте показывает одинаково хорошо как через UDP прокси, так и без него, а вот у которых 240 в третьем байте без udpxy показывает хорошо, а с udpxy - каша из квадратов.

P.S. под хорошо имеется ввиду изредка проскакивающие квадраты.

Oleg
30-01-2008, 19:51
Вы по ссылке почитали? Надо включить кеш http в IPTV Player. Читать не только тему по ссылке, но и те, на которые ссылаются.

bmv2007
30-01-2008, 20:46
Включил кэш - не помогло :(

ega2002
30-01-2008, 21:12
Олег, я столкнулся с точно такой же проблемой, как и bmv2007. У меня тоже каналы 233.32.210.ХХХ показываются отлично (по вайфаю тоже), а с каналами 233.32.240.ХХХ проблемы. И дело, видимо, не в Вашей прошивке, а в udpxy или в самой Корбине, поскольку сейчас у меня в роутере стоит OpenWRT. Включение кеша в VLC не помогает, а только вредит.
Кстати, bmv2007, Вы случайно не в Нагорном районе живете?

bmv2007
30-01-2008, 21:44
Нет, Мещанский.

Vitaly_k
30-01-2008, 21:54
Действительно, кеширование при работе через прокси и 240-х каналов не помогает. Может нужно увеличить буфер в самом прокси?

ega2002
30-01-2008, 21:58
Кстати, в добавление к моему предыдущему посту: если во время показа проблемного канала посмотреть траффик на самом роутере, то входной мультикаст поток составляет около 5-5,5 Мбит, а выходной НТТP - только 3-4 Мбит с большими колебаниями. Может, это поможет разобраться в причинах.

P.S. Я пробовал поиграться с параметром -B для udpxy: на результат он никак не влияет.

Hlustov
01-02-2008, 21:12
http://borpas.info/index.php?go=dpr_util#prox

может у них можно что-то полезное подсмотреть???

Vitaly_k
02-02-2008, 12:26
http://borpas.info/index.php?go=dpr_util#prox

может у них можно что-то полезное подсмотреть???

Кто-нибудь пробовал смотреть через него проблемные 240-е каналы Корбины? Принцип работы там абсолютно такойже, если там все будет работать нормально, значит проблем в реализации под роутер.

djet
03-02-2008, 13:31
Возможно ли включить поддержку inetd?

Oleg
03-02-2008, 16:26
Возможно ли включить поддержку inetd?

А смысл какой?

djet
03-02-2008, 20:47
А смысл какой?

Память не резиновая. Я у себя насчитал порядочно сервисов, круглосуточный запуск которых мне не нужен:

httpd (3 штуки разных)
dropbear (зачем держать лишний форк?)
udpxy (чистый on-demand)
ftp (--''--)
tftp (--''--)
iperf (--''--)
сервисы печати (--''--)
samba (маловероятно, но хотелось бы)


Было бы замечательно, если бы всё это запускалось и работало исключительно по вызову.

bsl45
07-02-2008, 20:55
По проблеме с Корбиной пока сказать мне абсолютно нечего - нет возможности воспроизвести дефект. Попробую добавить некую (пока что пальцем в небо) отладочную информацию, по которой можно будет пролить свет на этот дефект. Версию с отладкой выложу на днях.

Поддержку inetd включу в дополнения.

Павел

bsl45
08-02-2008, 08:38
Итак, первая попытка заключается в том, что внутренний размер буфера данных udpxy делается теперь равным размеру multicast-буфера, т.е. регулируется параметром -B

<output>
Setting up multicast listener
multicast buffer size set to [64] Kb
Added client: pid=[30684], maddr=[224.0.12.26], mport=[5000], saddr=[127.0.0.1], sport=[33494]
............................... blah blah blah .....................
Relaying traffic from socket[4] to socket[7], buffer size=[65536]
</output>

Попробуйте, господа, и поделитесь опытом - есть ли какая польза.

udpxy.mipsel.gz - архив бинарника для mips, вроде бы и собран с правильными библиотеками:

$ ldd udpxy
libc.so.0 => /lib/libc.so.0 (0x0x2ab07000)
ld-uClibc.so.0 => /lib/ld-uClibc.so.0 (0x0x2aac0000)

ega2002
08-02-2008, 10:04
Павел, смогу попробовать только поздно вечером (обязательно отпишусь)

ega2002
08-02-2008, 20:42
Попробовал новую сборку (0.1-25), не заметил каких-либо изменений в поведении по сравнению с предыдущими сборками. По-прежнему 210-е каналы работают безупречно, а 240-е квадратят вовсю.
Запускал с ключем -B 1024 и без него. В логе каких-либо различий для хороших и проблемных каналов не обнаружено (см. прилагаемый фрагмент).
Если есть какие-либо предложения по дальнейшему тестированию, готов продолжать эксперименты.

bsl45
08-02-2008, 21:49
Похоже, буферизация не работает. Я повожусь ещё с параметрами и буферами - выложу новую версию, как только будут подвижки в тестировании или хотя бы намёк на оные. Благодарю за помощь.

Павел

bsl45
09-02-2008, 07:15
Добавил параметр -R {n=number_of_records} - в зависимости от значения n будет буферизироваться n пакетов на входе. Попробуйте поэкспериментировать с ним.

Добавил параметр -y - при указании буфер посылки расширяется (посредством SO_SNDBUF) до размера входного буфера (-B).

Есть также параметр вывода статистики по клиенту -S: при указании его и -v в журнал будут выводиться записи типа:

Sent TSTAT={ sender=[4546], bytes=[5264000.000000], seconds=[42.000000] }
Received TSTAT={ sender=[4546], bytes=[5264000.000000], seconds=[42.000000] }
client pid=[4546] context updated

По ним расчитывается пропускная способность.

Пример запуска:

./udpxy -p 4020 -v -S -R 4 -y

Будет буферизироваться 4 записи, установлен вывод статистики и расширенный буфер выхода.

Было бы интересно посмотреть на журнал при прогоне на проблемных каналах.

ega2002
09-02-2008, 17:52
Протестировал сборку 0.1-26, к сожалению, ничего не изменилось, по-прежнему квадратит на 240-х :confused:
Команда запуска:
udpxy -a 192.168.1.1 -p 50081 -l /tmp/udpxy.log -v -S -R 4 -B 512 -y
Лог прилагается.

bsl45
09-02-2008, 22:54
Попробуйте на разных значениях -R, хотя, особых надежд на это я не возлагаю. Мне интересно, нет ли потери пропускной способности при ретрансляции, т.е. насколько меняется пропускная способность на выходе. У себя я засекал и существенного изменения скорости не заметил.

Будем пытаться дальше (тестировочные версии я буду выкладывать сюда).

ega2002
10-02-2008, 12:15
Разумеется, я пробовал менять параметр -R, пробовал и -R 16, и -R 64, но это ни на что не влияло. Вот, например, лог с -R 16:

bsl45
11-02-2008, 06:52
Чтобы отмести уже насовсем версию о недостаточной пропускной способности, попробуйте значение -1 для -R в сочетании с различными значениями для -B (при включённом -y): это обеспечит наполнение буфера "до краёв", как, например при таком вызове:

./udpxy -p 4022 -v -S -y -R -1

Я попробовал на своей жуткой (медленной и глюковатой) беспроводной сети и добился значительного улучшения пропускной способности. Но, возможно, дело тут совсем и не в ней - однако, убедиться стоит. Скорость передачи теперь (напрямую) есть в журнале:

Updated context for pid=[10111]; [125.0] Kb/sec

Если будет что-то интересное - шлите журналы.

ega2002
11-02-2008, 10:50
Вдруг обнаружил особенность: на проблемном канале вид лога отличается от лога нормального канала. В логе проблемного канала наряду со статистикой изобилуют записи вида:

received new=[xxxx] bytes, last=[yyyy]
sent [xxxx] bytes out of [xxxx], last=[yyyy]

которых нет на нормальном канале. Хотелось бы некоторой информации о том, что означают эти записи. Полный лог для двух каналов, проблемного и нормального, как всегда, прилагаю.
А в целом нововведения сборки 0.1-27 действительно уменьшают рассыпания при плохом сигнале вайфая (рекомендую оставить эти возможности в финальном релизе), хотя проблем с 240-ми каналами не решают. Вариации параметра -B ни к чему не приводят. Дело тут, видимо, не в пропускной способности.

Oleg
11-02-2008, 12:05
Разница, которую я вижу:

В 210.1 все пакеты имею одинаковую длину:

13:33:36.228884 IP (tos 0x88, ttl 23, id 32937, offset 0, flags [DF], length: 1344) 85.21.91.195.32773 > 233.32.210.1.5050: UDP, length: 1316


В 240.1 (это тот же канал), длинные пакеты имеют переменную длину (но в основном 1328 байт). Новый пакет - примерно каждые 0.0016 секунд.

13:35:36.540831 IP (tos 0x88, ttl 23, id 33640, offset 0, flags [none], length: 1376) 172.16.16.70.2933 > 233.32.240.1.5050: UDP, length: 1348
13:35:36.542505 IP (tos 0x88, ttl 23, id 33643, offset 0, flags [none], length: 1356) 172.16.16.70.2933 > 233.32.240.1.5050: UDP, length: 1328
13:35:36.544416 IP (tos 0x88, ttl 23, id 33646, offset 0, flags [none], length: 1356) 172.16.16.70.2933 > 233.32.240.1.5050: UDP, length: 1328
13:35:36.546261 IP (tos 0x88, ttl 23, id 33648, offset 0, flags [none], length: 1356) 172.16.16.70.2933 > 233.32.240.1.5050: UDP, length: 1328

Но периодически проскакивают "обрубки"

13:38:10.369153 IP (tos 0x88, ttl 23, id 14185, offset 0, flags [none], length: 792) 172.16.16.70.2933 > 233.32.240.1.5050: [udp sum ok] UDP, length: 764
13:38:10.829249 IP (tos 0x88, ttl 23, id 14876, offset 0, flags [none], length: 228) 172.16.16.70.2933 > 233.32.240.1.5050: [udp sum ok] UDP, length: 200
13:38:11.299388 IP (tos 0x88, ttl 23, id 15601, offset 0, flags [none], length: 228) 172.16.16.70.2933 > 233.32.240.1.5050: [udp sum ok] UDP, length: 200
13:38:11.521548 IP (tos 0x88, ttl 23, id 15923, offset 0, flags [none], length: 228) 172.16.16.70.2933 > 233.32.240.1.5050: [udp sum ok] UDP, length: 200
13:38:11.949228 IP (tos 0x88, ttl 23, id 16595, offset 0, flags [none], length: 980) 172.16.16.70.2933 > 233.32.240.1.5050: [udp sum ok] UDP, length: 952
13:38:12.411082 IP (tos 0x88, ttl 23, id 17351, offset 0, flags [none], length: 228) 172.16.16.70.2933 > 233.32.240.1.5050: [udp sum ok] UDP, length: 200
13:38:12.894668 IP (tos 0x88, ttl 23, id 18109, offset 0, flags [none], length: 980) 172.16.16.70.2933 > 233.32.240.1.5050: [udp sum ok] UDP, length: 952
13:38:13.368952 IP (tos 0x88, ttl 23, id 18849, offset 0, flags [none], length: 604) 172.16.16.70.2933 > 233.32.240.1.5050: [udp sum ok] UDP, length: 576
13:38:13.859403 IP (tos 0x88, ttl 23, id 19578, offset 0, flags [none], length: 416) 172.16.16.70.2933 > 233.32.240.1.5050: [udp sum ok] UDP, length: 388
13:38:14.352999 IP (tos 0x88, ttl 23, id 20367, offset 0, flags [none], length: 228) 172.16.16.70.2933 > 233.32.240.1.5050: [udp sum ok] UDP, length: 200

Так вот: если посмотреть на общую массу пакетов, то эти "обрубки" выглядят как фрагменты от предыдущего пакета (и время поступления отличается):

13:35:36.522875 IP (tos 0x88, ttl 23, id 33609, offset 0, flags [none], length: 1356) 172.16.16.70.2933 > 233.32.240.1.5050: UDP, length: 1328
13:35:36.524525 IP (tos 0x88, ttl 23, id 33615, offset 0, flags [none], length: 1356) 172.16.16.70.2933 > 233.32.240.1.5050: UDP, length: 1328
13:35:36.525529 IP (tos 0x88, ttl 23, id 33617, offset 0, flags [none], length: 792) 172.16.16.70.2933 > 233.32.240.1.5050: [udp sum ok] UDP, length: 764

а ещё у всех этих пакетов tcpdump пишет [udp sum ok]. Такое ощущение, что остальные фрагменты, но почему тогда offset равен 0? :) В общем, непонятно.

Может djet знает, в чём разница между 210 и 240?

djet
11-02-2008, 13:30
Деталей не знаю, но разница в кодировании потоков. В 240 применяется VBR:

http://img260.imageshack.us/img260/1093/udpba3.th.png (http://img260.imageshack.us/my.php?image=udpba3.png)

Saros
11-02-2008, 17:17
вопрос про мультикаст перенес в соответствующую тему...
http://wl500g.info/showthread.php?t=7012

djet
11-02-2008, 18:34
Есть небольшое пожелание насчёт лога: кидать сообщения в стандартный syslog, либо добавить к собственному логу временные метки. Без них ориентироваться в логе трудно.

bsl45
11-02-2008, 23:53
Разница в журналах "хороших" и "плохих" каналов, выражающаяся в записях типа,



received new=[xxx] bytes, last=[yyy]


иллюстрирует вариации в размере пакетов, проходящих через udpxy. Буквально это означает следующее: "Размер нового пакета [xxx] отличен от размера прошлого пакета [yyy] (где разница превышает некую дельту = 32 байтам в сборке 27)". То же с помощью tcpdump уже продемонстрировал Oleg.

Итак, насколько я понял, vlc прекрасно "слушает" 240-е напрямую из сети (как UDP), но не берёт тот же поток, если он пропущен через udpxy.

Исходя из этого, мои подозрения концентрировались на возможных потерях пакетов - для борьбы с этим и добавлен параметр -R rec_count - udpxy буферизирует поток до rec_count пакетов или же на весь буфер (-B bufK -y), если rec_cout == -1. Пока что версия потерь потока не оправдывает ожиданий.

В связи с чем возникает версия с VBR - возможно, udpxy "коверкает" видео, закодированное с VBR - но видеофайлов с VBR у меня в тестах не было, каюсь (а я, увы, проверять работу приложения могу запуская содержимое файла в сеть с одного vlc - UDP проигрывая через udpxy - HTTP на другом vlc - iptv у меня нет). Попытаюсь нарыть видео с VBR (буду весьма признателен за URL для закачки с сети) и прогнать у себя - попробуйте и вы, у кого есть время, желание и возможности.

Отдельно - в сборке 27 есть параметры: -w filename - будет записывать данные в файл filename.pid (pid - udpxy-client process id) - если не пройдёт версия с файлом с VBR, то почему бы не получить кусок "плохого" канала, записанного таким образом - минуты на 2, например?... Проиграть данные можно параметром -r - данные по multicast каналу тогда игнорируются и чтение идёт из файла. Я пробовал уже - записанные фрагменты проигрываются. Если есть уже приложение, способное "выпихнуть" данные из файла снова на мультикаст, то чистота эксперимента должна быть высокой: берём отрезок потока с 240 и прокручивает как вне так и через udpxy - по идее вне udpxy vlc должен показать видео.

Но это на случай провала версии с VBR - если дело в нём, то всё "проще" (будем копаться в исходниках vlc).

Спасибо всем за участие в тестировании!

Про timestamps в журнале я позабочусь (можно было бы и в syslog всё класть, на засорять syslog не дело, а настраивать его не всякий сподобится).

Про исчезновение каналов multicast сказать мне пока нечего - udpxy достаточно стандартно "подписывается" на данный канал и "отписывается" от него в конце, пока что эта стратегия не создавала особых проблем.

Oleg
12-02-2008, 09:42
Павел, мы тут уже баловались с записью через udpxy:
http://wl500g.info/showthread.php?t=12966

Записанный таким образом поток играется нормально. Т.е. кое-что проскакивает, но это потери пакетов по дороге от Корбины.

А вот в он-лайне совсем не хочет показывать.

Я выложил поток: http://oleg.wl500g.info/240.mpg (58 секунд, 38 мегабайт)

bsl45
12-02-2008, 20:13
Выложите мне, пожалуйста, запись "проблемного" потока от Корбины (минуты на 1-2) через tcpdump -w.

Заранее благодарю,
Павел

ega2002
12-02-2008, 20:47
Выложите мне, пожалуйста, запись "проблемного" потока от Корбины (минуты на 1-2) через tcpdump -w.

Ссылку отправил в личку

djet
12-02-2008, 22:56
Записанный напрямую udpxy поток с 240 тоже квадратит. Удивительно, но записанный без участия udpxy поток tcpdump'a после конвертации pcap2mpeg представляет такое же зрелище.

Кстати, неплохо бы выделить запись в отдельную функцию, т.к. всё, что мы до сих пор придумали в соседней теме - костыли. Но и ключ -w в текущей форме тоже можно оставить. Можно даже запускать 2 копии udpxy на разных портах - с записью и без. Или включать запись через параметр URL. В общем, вариантов море. Но особо хотелось бы увидеть чисто-консольный вариант для запуска cron'ом или atd.

bsl45
13-02-2008, 01:26
djet, поясните, пожалуйста, что значит "выделить запись в отдельную функцию" (если это отлично от варианта с параметром -w) - постараюсь обеспечить. По-моему, -w и есть чисто консольный вариант, но я явно чего-то не улавливаю - вот и прошу прояснить.

Также - киньте (кому не лень), пожалуйста, ещё один фрагмент - минут на 5 - записанный с Корбины udpxy сборки 27. Заранее благодарен.

И наконец хорошая новость: дефект удалось воспроизвести на (посторонних) видеофайлах.

Павел

djet
13-02-2008, 07:33
djet, поясните, пожалуйста, что значит "выделить запись в отдельную функцию" (если это отлично от варианта с параметром -w) - постараюсь обеспечить. По-моему, -w и есть чисто консольный вариант, но я явно чего-то не улавливаю - вот и прошу прояснить.

Также - киньте (кому не лень), пожалуйста, ещё один фрагмент - минут на 5 - записанный с Корбины udpxy сборки 27. Заранее благодарен.

И наконец хорошая новость: дефект удалось воспроизвести на (посторонних) видеофайлах.

Павел
Текущий вариант предполагает, что запись идёт при подключенном к udpxy клиенте. Хочется того же самого, но без необходимости создания подключения, даже фиктивного wget'ом. (wget ещё плох тем, что соединение может разрываться, вследствие запись прекращается)

ega2002
13-02-2008, 12:23
Также - киньте (кому не лень), пожалуйста, ещё один фрагмент - минут на 5 - записанный с Корбины udpxy сборки 27...
Сегодня записал по просьбе Павла фрагмент проблемного канала через udpxy-0.1-27 c помощью wget и обнаружил интересную особенность. Записанный файл при проигрывании с помощью vlc квадратит точно так же, как и при прямом просмотре по http. В то же время, как уже отмечал Олег, mplayerc показывает его с существенно меньшими искажениями, многочисленные квадраты практически отсутствуют, наблюдаются лишь небольшие сбои типа выпадений сигнала с нарушениями синхронизации.

Oleg
13-02-2008, 13:25
О как. Я даже не пробовал vlc.
Похоже дело в сплиттере внутри vlc. Надо смотреть, что он там такое ожидает. С другой стороны, можно этот поток отдать автору IPTV Player для изучения.

Oleg
13-02-2008, 13:43
Попробовал открыть файл c помощью IPTVPlayer. Получил "мега-рассыпания", как при он-лайн просмотре.

Oleg
13-02-2008, 14:46
Вопрос к Павлу: а как отсылаются полученные по юдп буфера? Каждый буфер с помощью отдельного send, или всё скопом?

Я вот заглянул в код vlc. Обработчик для udp потоков считает, что каждый блок должен начинаться с 0x47. Иначе он пытается трактовать как RTP.

if( p_block->p_buffer[0] == 0x47 )
{
msg_Dbg( p_access, "detected TS over raw UDP" );


Так вот. Смотрю захваченный поток.
Для 210 он действительно начинается с 0x47 0x02,

0000000000: 47 02 59 17 1B 6B 7B 27 │ E1 E5 04 14 78 43 16 23

а вот для 240:
0000000000: 80 21 F5 1E C8 21 FF E8 │ 79 6B 87 D4 47 02 59 18

Т.е. 47 02 оказалось где-то позади.

Вот формат MPEG TS (то, что гугль мне сходу дал)

http://www.erg.abdn.ac.uk/research/future-net/digital-video/mpeg2-trans.html


Each MPEG-2 TS packet carries 184 B of payload data prefixed by a 4 B (32 bit) header.

The header has the following fields:

The header starts with a well-known Synchronisation Byte (8 bits). This has the bit pattern 0x47 (0100 0111).
A set of three flag bits are used to indicate how the payload should be processed.
The first flag indicates a transport error.
The second flag indicates the start of a payload (payload_unit_start_indicator)
The third flag indicates transport priority bit.
The flags are followed by a 13 bit Packet Identifier (PID). This is used to uniquely identify the stream to which the packet belongs (e.g. PES packets corresponding to an ES) generated by the multiplexer. The PID allows the receiver to differentiate the stream to which each received packet belongs. Some PID values are predefined and are used to indicate various streams of control information. A packet with an unknown PID, or one with a PID which is not required by the receiver, is silently discarded. The particular PID value of 0x1FFF is reserved to indicate that the packet is a null packet (and is to be ignored by the receiver).
The two scrambling control bits are used by conditional access procedures to encrypted the payload of some TS packets.
Two adaption field control bits which may take four values:
01 – no adaptation field, payload only
10 – adaptation field only, no payload
11 – adaptation field followed by payload
00 - RESERVED for future use
Finally there is a half byte Continuity Counter (4 bits)


http://www.erg.abdn.ac.uk/research/future-net/digital-video/images/mpeg-ts-header.gif

Демуксер, кстати, в тупую ищет 0x47... А они там попадаются и просто так.

Vitaly_k
13-02-2008, 15:07
Кстати, неплохо бы выделить запись в отдельную функцию, т.к. всё, что мы до сих пор придумали в соседней теме - костыли.

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

Oleg
13-02-2008, 15:10
Разговариваю сам с сабой. :)
Смотрите, размер блока фиксированный: 188 байт. Занчит валидные пакеты имеют следующую длину:

188 200
376 388
564 576
752 764
940 952
1128 1140
1316 1328

В левой колонке - длина, в правой - длина+12.

Так вот в 210-х каналах всё чётко. Пакет имеет длину кратную 188. Обратите также внимание на флаг DF.

А в 240 всё не так. :) К каждой посылке добавляются какие-то 12 байт, за исключением пакетов длиной 1348 - там ещё 20 байт чего-то.

Ну а поскольку, дампа у меня под рукой нет, понять я больше ничего не могу. :) Может пакеты где-то по дороге нарезаются на части, но как-то "неудачно". :)

bsl45
13-02-2008, 19:31
Спасибо всем, кто потратил время на анализ - я, собственно, занимался тем же, но не хотелось забегать вперёд повозки и озвучивать (пока ещё) непроверенные версии, появившиеся в результате изысканий.

До сих пор поток в udpxy не модифицировался вообще, однако теперь будет, поскольку при трянсляции из UDP в TCP/HTTP пакеты RDP нужно обрабатывать и выделять из них MPEG-TS (или какие ни есть иные) данные. Код обработки в udpxy уже пишется, код vlc относящийся к предмету, как и соответствующий RFC (3550) уже в работе. 12 "лишних" байт в потоке Корбины - это (предположительно) и есть заголовок RDP (0x80 0x21 согласно RFC 3550 обозначают RDP_version=2, payload_type=33 (0x21) - type 33, согласно vlc = TS over RTP).


Павел

Oleg
13-02-2008, 20:12
Павел, если честно, то у меня есть ощущение, что udpxy не должен заниматься обработкой потока. Боюсь, что процессора не хватит.

_Гораздо_ более правильным будет добавить эту поддержку в http.c у vlc.
Там ведь, кроме TS есть ещё и другие типы.

Oleg
13-02-2008, 20:16
С другой стороны, RTPшные заголовки там встречаются вроде не очень часто. Можно и проверять буфера. Но что делать с mpga/mpgv?

В общем в Корбине перемудрили. А у меня сложилось впечатление, что там сами слегка не понимают, что получилось. :)

Интересно, приставки Корбиновские на какие адреса подписываются?

bsl45
13-02-2008, 20:18
Вопрос к Павлу: а как отсылаются полученные по юдп буфера? Каждый буфер с помощью отдельного send, или всё скопом?


До сегодняшнего дня все данные, при установке параметра -R count при count > 1 уходили скопом, т.е. N=count сообщений накапливались в едином буфере и посылались одним send. Как можно было убедиться, при "голом" MPEG-TS потоке такой подход вполне оправдан.

При обработке MPEG-TS on RDP я не уверен, что этот подход уместен (vlc надо разбирать пакеты, а длина данных в RDP-заголовке не указывается), но, естественно, проверю. Параметр -R (в сборке 27 и ранее) по умолчанию имеет значение 1, т.е. указывает на посылку каждого сообщения отдельным send.

Спасибо за ссылку на MPEG-TS спецификацию - как раз сегодня собирался её поискать, чтобы не полагаться вслепую на код vlc.

Павел

Oleg
13-02-2008, 20:28
До сегодняшнего дня все данные, при установке параметра -R count при count > 1 уходили скопом, т.е. N=count сообщений накапливались в едином буфере и посылались одним send. Как можно было убедиться, при "голом" MPEG-TS потоке такой подход вполне оправдан.

Мне кажется, что он и с RTP оправдан. Да и с чем угодно, наверное. Как-то ведь эти потоки читаются из файлов...

Я вот ещё подумал. :) Нужно править демуксер ts в vlc. Чтобы он там rtp понимал, в части выбрасывания этих хедеров при поиске MPEG TS. Тогда и захваченный поток он будет читать. Это конечно кривовато, но зато просто. :)

К сожалению, не нашёл исходников ts в media player classic, да и не особо искал...

Да, ещё гугль знает довольно много про RTP over HTTP.

bsl45
13-02-2008, 20:30
С другой стороны, RTPшные заголовки там встречаются вроде не очень часто. Можно и проверять буфера. Но что делать с mpga/mpgv?

В общем в Корбине перемудрили. А у меня сложилось впечатление, что там сами слегка не понимают, что получилось. :)

Интересно, приставки Корбиновские на какие адреса подписываются?

Обработку, конечно, уместнее доверить vlc. Но - поддержку RTP я всё же добавлю - на упрощённом уровне (возможно, без отслеживания и реорганизации порядка пакетов, как это следано - по уму - в vlc) - и, разумеется, дам возможность эту поддержку включить/отключить при надобности.

Поддержка пригодится тем, к кого процессор помощней и тем, у кого будет старый vlc или какой-либо плеер, не обрабатывающий RTP-заголовки в HTTP-пакетах. Если станет критично по размеру кода, сделаем возможность добавления поддержки RTP как модуля при компиляции.

Павел

Oleg
13-02-2008, 20:48
Павел, тогда вот у меня какое пожелание: сейчас udpxy обрабтывает url такого вида

http://host/udp/xxx:xxx

Добавьте ещё rtp:

http://host/rtp/xxx:xxx

И когда его так запрашивают, гоните поток по старому, но каждый пакет отдельным send, хотя не уверен, что tcp сохранит сообщения (скорее всего нет :( ). А длины там нет.

А вот если в командной строке указывают обработку rtp, то по первому url пусть идёт результат перекодирования потока. Надеюсь понятно объяснил...

Очевидно, что сейчас плейлист с 240 каналами неправильный: там должен быть указан протокол rtp, а не udp.

Oleg
13-02-2008, 20:48
Либо наоборот: перекодирование осуществляется именно при обращении к rtp.

Oleg
13-02-2008, 20:55
Так, наверное, будет наиболее правильно. Ибо я не хочу делать непонятную переключалку в веб-интерфейсе. Пусть лучше будет нормальный плейлист и плеер, который либо умеет декодировать rtp, либо передавать "правильный" url.

Oleg
13-02-2008, 21:03
Кстати, реализовать такую схему можно уже сейчас:

Вот описание канала в плей-лист

#EXTINF:,240+1
http://192.168.0.1:2080/rtp/233.32.240.1:5050


И оно уже сейчас передаётся вот так:

GET /rtp/233.32.240.1:5050

В ответ udpxy должен начать перемалывать входной rtp поток и выдавать MPEG-TS. И vlc и IP TV player его с радостью прожуют.

Oleg
13-02-2008, 21:14
Только просьба: не делайте в коде memcpy/memmove, когда будете выкидывать RTPшные заголовки. Возможно, для Вас это очевидно, а вот, скажем, писателям pptp клиента это чуждо было. :( Лучше используйте vectored write для посылки...

bsl45
13-02-2008, 22:37
Только просьба: не делайте в коде memcpy/memmove, когда будете выкидывать RTPшные заголовки. Возможно, для Вас это очевидно, а вот, скажем, писателям pptp клиента это чуждо было. :( Лучше используйте vectored write для посылки...

Это и вправду более-менее очевидно, но спасибо, что напомнили лишний раз - ибо бесы искушали :D Но не будет такого, позабочусь.

Обработку команды RTP на URL поставлю - и логика слегка упростится, поскольку не надо будет тестировать поток на RTP.

djet
13-02-2008, 22:50
Не исключенно, что подаваемый в 240 поток "улучшен" технологиями MS, т.к. приставки подписываются именно на эти группы. 210 вроде бы как исходный поток, до транскодирования серверами платформы. Возможно, в будущем 210-е потоки закроют для ДС, останутся 240-е.

Кстати, у нас сейчас есть потоки с множеством каналов внутри, в 210-й пускают даже монстров 10-в-1. В связи с чем не помешала бы возможность выделять заданную программу (это поле PID?) из потока, т.к. 70 Мб/с не потянут ни wifi, ни подключенный HDD.

Oleg
13-02-2008, 22:53
Кстати, у нас сейчас есть потоки с множеством каналов внутри, в 210-й пускают даже монстров 10-в-1. В связи с чем не помешала бы возможность выделять заданную программу (это поле PID?) из потока, т.к. 70 Мб/с не потянут ни wifi, ни подключенный HDD.
Это бесполезно. Роутер этот поток в любом случае обработать не успеет. Роутить сможет, а что-то ещё делать - нет. Так что монстров пусть на приставках смотрят. :)

ega2002
14-02-2008, 06:54
Кстати, у нас сейчас есть потоки с множеством каналов внутри, в 210-й пускают даже монстров 10-в-1. В связи с чем не помешала бы возможность выделять заданную программу (это поле PID?) из потока, т.к. 70 Мб/с не потянут ни wifi, ни подключенный HDD.
Имхо, трансляция таких каналов для конечных пользователей - бредовая затея со стороны Корбины. Получается, что абонент получает поток гораздо шире, чем использует в каждый отдельный момент. Т.е., теряется весь смысл мультикастовой передачи. Тут я полностью согласен с Олегом: не стоит этим заморачиваться.

lly
14-02-2008, 08:36
Только просьба: не делайте в коде memcpy/memmove, когда будете выкидывать RTPшные заголовки. Возможно, для Вас это очевидно, а вот, скажем, писателям pptp клиента это чуждо было. :( Лучше используйте vectored write для посылки...
Олег, а можно расшифровать для чайников? Ты имеешь в виду вызовы readv()/writev()? А нет ли ссылок о сравнении производительности? Или выигрыш только на отсутствии memcpy() при сборке/вырезке фрагментов?

Oleg
14-02-2008, 09:31
Для чайников. :D Да, речь про них. Выигрыш только в том, что memcpy/memmove не вызывается. Ибо каждое копирование зло.
Как делать неправильно (на примере пптп): эти редиски сначала получают в буфер ppp пакет от pppd, затем в другой функции делают буфер большего размера, в начале которого делают заголовок, а после заголовка копируют из первого буфера пакет. Потом второй буфер отсылают целиком. Этот пассаж заменяется на writev: отдельно хедер, отдельно данные, при этом сохраняется семантика: как было одно "сообщение", так и осталось (т.е. дважды вызывать write низя). Там правда есть и более простое решение: пакет от pppd можно было сразу получать во второй буфер, но у них там небольшое "затруднение" в виде хедера переменной длины, но это тоже решается легко и красиво. :) Я правда пошёл по простому пути - сделал writev, чтобы не перепахивать код...

Oleg
14-02-2008, 13:41
Павел, ещё несколько моих соображений. :) Никаких векторных записей не нужно, на самом деле. :)

Я почитал немного гугль и понял, что в любом полученном по udp пакете может быть только один RTP заголовок (это ведь сообщение) и находится он всегда впереди. Т.е. Я бы решал задачу так: зарезервировал бы сколько-то буферов, длиной равной MTU интерфейса для приёма пакетов. Сделал бы там раунд-робин среди этих буферов. Далее делается просто цикл:

Вызывается poll для принимающего и передающего сокета. Если есть возможность послать - посылаем, если принять - принимаем. При отсылке просто передаём не весь буфер, а вычитаем длину RTP заголовка. Т.е. всё вроде просто.

Посмотрел пакеты длиной 1348 байт. Там стоит бит Х (0x9021) - т.е. за RTP заголовком идёт что-то дополнительное, длину которого понятно как определить. В общем, на производительности udpxy эта штука никак не скажется.



15:24:47.547303 IP 172.16.16.70.1084 > 233.32.240.1.5050: UDP, length: 1364
0x0000: 4588 0570 3b91 0000 1711 cceb ac10 1046 E..p;..........F
0x0010: e920 f001 043c 13ba 055c 5f59 9021 ba98 .....<...\_Y.!..
0x0020: a80c c980 796b 87d4 100b 0008 0206 139c ....yk..........
0x0030: 59b3 8e0f 0306 0000 a80c 4677 010e 5301 Y.........Fw..S.
0x0040: a80c 469c cb5e b18e ebbd d547 4740 0019 ..F..^.....GG@..
0x0050: 0000 b00d 001f cb00 0000 10e0 20f7 574b ..............WK
0x0060: 8cff ffff ffff ffff ffff ffff ffff ffff ................
0x0070: ffff ffff ffff ffff ffff ffff ffff ffff ................
0x0080: ffff ffff ffff ffff ffff ffff ffff ffff ................
0x0090: ffff ffff ffff ffff ffff ffff ffff ffff ................
0x00a0: ffff ffff ffff ffff ffff ffff ffff ffff ................
0x00b0: ffff ffff ffff ffff ffff ffff ffff ffff ................
0x00c0: ffff ffff ffff ffff ffff ffff ffff ffff ................
0x00d0: ffff ffff ffff ffff ffff ffff ffff ffff ................
0x00e0: ffff ffff ffff ffff ffff ffff ffff ffff ................
0x00f0: ffff ffff ffff ffff ffff ffff ffff ffff ................
0x0100: ffff ffff ffff ffff 4740 2019 0002 b023 ........G@.....#
0x0110: 0010 cb00 00e2 59f0 0002 e259 f006 0904 ......Y....Y....
0x0120: 4ae2 ffe0 03e2 5af0 0609 044a e2ff e0af J.....Z....J....
0x0130: f622 40ff ffff ffff ffff ffff ffff ffff ."@.............
0x0140: ffff ffff ffff ffff ffff ffff ffff ffff ................
0x0150: ffff ffff ffff ffff ffff ffff ffff ffff ................
0x0160: ffff ffff ffff ffff ffff ffff ffff ffff ................
0x0170: ffff ffff ffff ffff ffff ffff ffff ffff ................
0x0180: ffff ffff ffff ffff ffff ffff ffff ffff ................
0x0190: ffff ffff ffff ffff ffff ffff ffff ffff ................
0x01a0: ffff ffff ffff ffff ffff ffff ffff ffff ................
0x01b0: ffff ffff ffff ffff ffff ffff ffff ffff ................
0x01c0: ffff ffff 475f e01a 0000 01f0 016a 13a8 ....G_.......j..
0x01d0: 0ce5 a000 0202 592f 0176 5eff 954b 7555 ......Y/.v^..KuU
0x01e0: 3300 00fa 007b 4fa2 1cc1 20c6 409f 9ef9 3....{O.....@...
0x01f0: 8b79 0530 ba00 03ed 0592 68a6 f52b 42f4 .y.0......h..+B.
0x0200: 9653 4c81 fd49 6d76 5eff 954b 7569 780c .SL..Imv^..Kuix.
0x0210: 8000 0000 00ff f1f0 0000 1c20 0000 0e10 ................
0x0220: 0000 3840 0000 2a30 0000 5460 0000 4650 ..8@..*0..T`..FP
0x0230: 0000 7080 0000 6270 0000 8ca0 0000 7e90 ..p...bp......~.
0x0240: 0000 025a 2f01 765e ff95 4b74 5b33 0000 ...Z/.v^..Kt[3..
0x0250: fa00 7b4f a21c c120 c640 9f9e f98b 7905 ..{O.....@....y.
0x0260: 30ba 0003 aeee 0d20 0b7c 46d6 8676 625e 0........|F..vb^
0x0270: 8a7c aaf3 765e ff95 4b74 61f5 0400 ffa1 .|..v^..Kta.....
0x0280: 471f e01b 1e00 ffcb 4e00 fff5 7e00 001f G.......N...~...
0x0290: ae00 00ff ffff ffff ffff ffff ffff ffff ................
0x02a0: ffff ffff ffff ffff ffff ffff ffff ffff ................
0x02b0: ffff ffff ffff ffff ffff ffff ffff ffff ................
0x02c0: ffff ffff ffff ffff ffff ffff ffff ffff ................
0x02d0: ffff ffff ffff ffff ffff ffff ffff ffff ................
0x02e0: ffff ffff ffff ffff ffff ffff ffff ffff ................
0x02f0: ffff ffff ffff ffff ffff ffff ffff ffff ................
0x0300: ffff ffff ffff ffff ffff ffff ffff ffff ................
0x0310: ffff ffff ffff ffff ffff ffff ffff ffff ................
0x0320: ffff ffff ffff ffff ffff ffff ffff ffff ................
0x0330: ffff ffff ffff ffff ffff ffff 4742 5915 ............GBY.
0x0340: 0000 01e0 0000 84c0 0a3d a033 cb41 1da0 .........=.3.A..
0x0350: 3393 0100 0001 b32d 0240 2312 1123 8210 3......-.@#..#..
0x0360: 2020 2620 262c 2c2c 2c2c 2c34 3034 3636 ..&.&,,,,,,40466
0x0370: 3634 3434 3436 3636 3a3a 3a44 4444 3a3a 64444666:::DDD::
0x0380: 3a36 363a 3a40 4044 444a 4c4a 4646 4446 :66::@@DDJLJFFDF
0x0390: 4c4c 5050 5060 605c 5c70 7074 8a8a a710 LLPPP``\\ppt....
0x03a0: 1111 1212 1213 1313 1314 1414 1414 1515 ................
0x03b0: 1515 1515 1616 1616 1616 1617 1717 1717 ................
0x03c0: 1717 1718 1818 1918 1818 191a 1a1a 1a19 ................
0x03d0: 1b1b 1b1b 1b1c 1c1c 1c1e 1e1e 1f1f 2100 ..............!.
0x03e0: 0001 b514 8200 0100 0000 0001 b52b 0202 .............+..
0x03f0: 020b 4212 0000 0001 4702 5936 8a00 ffff ..B.....G.Y6....
0x0400: ffff ffff ffff ffff ffff ffff ffff ffff ................
0x0410: ffff ffff ffff ffff ffff ffff ffff ffff ................
0x0420: ffff ffff ffff ffff ffff ffff ffff ffff ................
0x0430: ffff ffff ffff ffff ffff ffff ffff ffff ................
0x0440: ffff ffff ffff ffff ffff ffff ffff ffff ................
0x0450: ffff ffff ffff ffff ffff ffff ffff ffff ................
0x0460: ffff ffff ffff ffff ffff ffff ffff ffff ................
0x0470: ffff ffff ffff ffff ffff ffff ffff ffff ................
0x0480: ffff ffff ffff ffb8 8e2e a380 0000 0100 ................
0x0490: 004f fff8 0000 01b5 8fff f798 0000 0000 .O..............
0x04a0: 0101 337e 2912 faee 36c2 ac6f 4548 fd80 ..3~)...6..oEH..
0x04b0: 4a85 9edc 4702 5937 0710 d406 234e 7ea6 J...G.Y7....#N~.
0x04c0: 1229 429e debe d35a ab5d a8d4 5c24 7003 .)B....Z.]..\$p.
0x04d0: b76c 042f f9e6 a8ed b842 add3 7f7f 5877 .l./.....B....Xw
0x04e0: 6268 247f ebc9 2d9d dbcf bdce edda 644b bh$...-.......dK
0x04f0: 1295 435b 39d1 b9a3 a5c8 dd7b cecd 6ddc ..C[9......{..m.
0x0500: d23f d602 27fc 8904 9ffc 7925 b45f a914 .?..'.....y%._..
0x0510: 117f e048 24ff e3c9 2de7 6e65 3f23 6b78 ...H$...-.ne?#kx
0x0520: 8eb6 131a af0c 4e6d 6a3f 6800 e7e6 0227 ......Nmj?h....'
0x0530: fd72 17ba 496a e7fc 4c3f 9e68 247f ed84 .r..Ij..L?.h$...
0x0540: b6af 4463 6fd1 4835 b4f2 6af3 ad45 e6e0 ..Dco.H5..j..E..
0x0550: 033e e9e2 c5c0 97eb 5500 1ef6 f3be 7904 .>......U.....y.
0x0560: 9ffc d24b 7a47 bb5c 7ca5 8601 4da4 e38a ...KzG.\|...M...

Xander
14-02-2008, 15:57
Огромное спасибо разработчикам за программу!
А нет ли у вас желания зарегистрироваться на sourceforge.net / code.google.com / alioth.debian.org и т.д.? Брать исходники из публичного svn репозитория гораздо удобнее, чем из аттачментов на форуме. К тому же наверняка программа будет интересна не только владельцам роутеров.

bsl45
14-02-2008, 20:06
Павел, ещё несколько моих соображений. :) Никаких векторных записей не нужно, на самом деле. :)

Я почитал немного гугль и понял, что в любом полученном по udp пакете может быть только один RTP заголовок (это ведь сообщение) и находится он всегда впереди. Т.е. Я бы решал задачу так: зарезервировал бы сколько-то буферов, длиной равной MTU интерфейса для приёма пакетов. Сделал бы там раунд-робин среди этих буферов. Далее делается просто цикл:

Вызывается poll для принимающего и передающего сокета. Если есть возможность послать - посылаем, если принять - принимаем. При отсылке просто передаём не весь буфер, а вычитаем длину RTP заголовка. Т.е. всё вроде просто.


Хорошие соображения, спасибо - но пока что я пишу с writev, поскольку его использование наиболее гладко вписывается в архитектуру, учитывая возможность накопления пакетов при чтении и т.п. writev удобен в данной ситуации тем, что пакеты я могу сразу регистрировать в массиве iovec - затем, модифицируя struct iovec для отдельных пакетов, я удаляю данные заголовка и проч. служебную информацию - приложения. (Но можно было бы, конечно, использовать send/write в цикле).

bsl45
14-02-2008, 20:20
Огромное спасибо разработчикам за программу!
А нет ли у вас желания зарегистрироваться на sourceforge.net / code.google.com / alioth.debian.org и т.д.? Брать исходники из публичного svn репозитория гораздо удобнее, чем из аттачментов на форуме. К тому же наверняка программа будет интересна не только владельцам роутеров.

Всегда пожалуйста.

Проект udpxy уже зарегистрирован на sourceforge.net но код пока что не выложен на страницу проекта - я тут несколько завозился с проблемой Корбины-240 и не довёл пока конфигурацию на sourceforge до ума. Но код будет оттуда доступен в ближайшем будущем (я объявлю на форуме).

Приношу извинения за неудобства.

bsl45
16-02-2008, 02:16
В этой сборке поддерживается протокол RTP (over UDP), используемый Корбиной на "каналах-240". Эта сборка тестировочная, т.е. устойчивость её под вопросом. Кроме поддержки RTP в сборку не добавлено практически ничего (из пожеланий), эта сборка только для проверки разрешения проблемы с Кробиной-240.

RTP распознаётся в пакетах автоматически (по первому пакету, дальше проверок уже нет), но можно указать RTP и сразу, в URL, вместо UDP - в этом случае проверки пакетов на RTP/UDP вовсе нет - и при ошибке формата клиент закончит работу.

Чтение файлов пока не улучшалось, "проигрывать" RTP поток из файла не рекомендую - обработки пакетов RTP из файла нет.

Попробуйте на Корбине-240 "вживую", сообщите о впечатлениях. Спасибо всем, кто участвует в тестировании.

Oleg
16-02-2008, 14:38
Павел итог такой: на экране пусто. :(

Я захватил поток с помощью wget. Итог такой - media player classic его играет, а вот IP TV Player (vlc) тот же файл - нет. :(

Вот что пишет vlc (меня смущает skipping 12 bytes of garbage):

main debug: creating new input thread
main debug: waiting for thread completion
main debug: thread 4476 (input) created at priority 1 (input/input.c:261)
main debug: `\\wl700ge\share\out.mpg' gives access `' demux `' path `\\wl700ge\share\out.mpg'
main debug: creating demux: access='' demux='' path='\\wl700ge\share\out.mpg'
main debug: looking for access_demux module: 1 candidate
main debug: creating access '' path='\\wl700ge\share\out.mpg'
main debug: looking for access2 module: 5 candidates
vcd debug: trying .cue file: \\wl700ge\share\out.cue
access_file debug: opening file `\\wl700ge\share\out.mpg'
main debug: using access2 module "access_file"
main debug: pre-buffering...
main debug: received first data for our buffer
main debug: pre-buffering done 327670 bytes in 0s - 1702 kbytes/s
main debug: creating demux: access='' demux='' path='\\wl700ge\share\out.mpg'
main debug: looking for demux2 module: 44 candidates
main debug: using demux2 module "ts"
main debug: looking for a subtitle file in \\wl700ge\share\
ts debug: DEMUX_SET_GROUP 0 00000000
main debug: `\\wl700ge\share\out.mpg' successfully opened
ts debug: pid[601] unknown
ts debug: pid[602] unknown
ts warning: lost synchro
ts debug: skipping 3 bytes of garbage
ts warning: lost synchro
ts debug: skipping 12 bytes of garbage
ts debug: pid[32] unknown
ts debug: pid[8160] unknown
ts warning: lost synchro
ts debug: skipping 12 bytes of garbage
ts warning: lost synchro
ts debug: skipping 3 bytes of garbage
ts warning: lost synchro
ts debug: skipping 12 bytes of garbage
ts warning: lost synchro
ts debug: skipping 12 bytes of garbage
ts warning: lost synchro
ts debug: skipping 3 bytes of garbage
ts warning: lost synchro
ts debug: skipping 12 bytes of garbage
ts warning: lost synchro
ts debug: skipping 12 bytes of garbage
ts warning: lost synchro
ts debug: skipping 3 bytes of garbage
ts warning: lost synchro
ts debug: skipping 12 bytes of garbage
ts warning: lost synchro
ts debug: skipping 12 bytes of garbage
ts warning: lost synchro
ts debug: skipping 3 bytes of garbage
ts warning: lost synchro
ts debug: skipping 12 bytes of garbage
ts warning: lost synchro
ts debug: skipping 12 bytes of garbage
ts warning: lost synchro
ts debug: skipping 12 bytes of garbage
ts warning: lost synchro
ts debug: skipping 12 bytes of garbage
ts warning: lost synchro
ts debug: skipping 3 bytes of garbage
ts warning: lost synchro
ts debug: skipping 3 bytes of garbage
ts warning: lost synchro
ts debug: skipping 24 bytes of garbage
ts warning: lost synchro
ts debug: skipping 3 bytes of garbage
ts warning: lost synchro
ts debug: skipping 12 bytes of garbage
ts warning: lost synchro
ts debug: skipping 12 bytes of garbage
ts warning: lost synchro
ts debug: skipping 3 bytes of garbage
ts warning: lost synchro
ts debug: skipping 24 bytes of garbage
ts warning: lost synchro
ts debug: skipping 3 bytes of garbage
ts warning: lost synchro
ts debug: skipping 12 bytes of garbage
ts warning: lost synchro
ts debug: skipping 12 bytes of garbage
ts warning: lost synchro
ts debug: skipping 3 bytes of garbage
ts warning: lost synchro
ts debug: skipping 12 bytes of garbage
ts warning: lost synchro
ts debug: skipping 12 bytes of garbage
ts warning: lost synchro
ts debug: skipping 3 bytes of garbage
ts warning: lost synchro
ts debug: skipping 12 bytes of garbage
ts warning: lost synchro
ts debug: skipping 12 bytes of garbage
ts warning: lost synchro
ts debug: skipping 3 bytes of garbage
ts warning: lost synchro
ts debug: skipping 12 bytes of garbage
ts warning: lost synchro
ts debug: skipping 12 bytes of garbage
ts warning: lost synchro
ts debug: skipping 3 bytes of garbage
ts warning: lost synchro
ts debug: skipping 12 bytes of garbage
ts warning: lost synchro
ts debug: skipping 12 bytes of garbage
ts warning: lost synchro
ts debug: skipping 3 bytes of garbage
ts warning: lost synchro
ts debug: skipping 12 bytes of garbage
ts warning: lost synchro
ts debug: skipping 12 bytes of garbage
ts warning: lost synchro
ts debug: skipping 3 bytes of garbage
ts warning: lost synchro
ts debug: skipping 12 bytes of garbage
ts warning: lost synchro
ts debug: skipping 12 bytes of garbage
ts warning: lost synchro
ts debug: skipping 3 bytes of garbage
ts warning: lost synchro
ts debug: skipping 12 bytes of garbage
ts warning: lost synchro
ts debug: skipping 12 bytes of garbage
ts warning: lost synchro
ts debug: skipping 3 bytes of garbage
ts warning: lost synchro
ts debug: skipping 12 bytes of garbage
ts warning: lost synchro
ts debug: skipping 12 bytes of garbage
ts warning: lost synchro
ts debug: skipping 3 bytes of garbage
ts warning: lost synchro
ts debug: skipping 12 bytes of garbage
ts warning: lost synchro
ts debug: skipping 12 bytes of garbage
ts warning: lost synchro
ts debug: skipping 3 bytes of garbage
ts warning: lost synchro
ts debug: skipping 24 bytes of garbage
ts warning: lost synchro
ts debug: skipping 3 bytes of garbage
ts warning: lost synchro
ts debug: skipping 12 bytes of garbage
ts warning: lost synchro
ts debug: skipping 12 bytes of garbage
ts warning: lost synchro
ts debug: skipping 3 bytes of garbage
ts warning: lost synchro
ts debug: skipping 12 bytes of garbage
ts warning: lost synchro
ts debug: skipping 12 bytes of garbage
ts warning: lost synchro
ts debug: skipping 3 bytes of garbage
ts warning: lost synchro
ts debug: skipping 12 bytes of garbage
ts warning: lost synchro
ts debug: skipping 12 bytes of garbage
ts warning: lost synchro
ts debug: skipping 3 bytes of garbage
ts warning: lost synchro
ts debug: skipping 12 bytes of garbage
ts warning: lost synchro
ts debug: skipping 12 bytes of garbage
ts warning: lost synchro
ts debug: skipping 3 bytes of garbage
ts warning: lost synchro
ts debug: skipping 12 bytes of garbage
ts warning: lost synchro
ts debug: skipping 12 bytes of garbage
ts warning: lost synchro
ts debug: skipping 3 bytes of garbage
ts warning: lost synchro
ts debug: skipping 12 bytes of garbage
ts warning: lost synchro
ts debug: skipping 12 bytes of garbage
ts warning: lost synchro
ts debug: skipping 3 bytes of garbage
ts warning: lost synchro
ts debug: skipping 12 bytes of garbage
ts warning: lost synchro
ts debug: skipping 12 bytes of garbage
ts warning: lost synchro
ts debug: skipping 3 bytes of garbage
ts warning: lost synchro
ts debug: skipping 12 bytes of garbage
ts warning: lost synchro
ts debug: skipping 12 bytes of garbage
ts warning: lost synchro
ts debug: skipping 3 bytes of garbage
ts warning: lost synchro
ts debug: skipping 12 bytes of garbage
ts warning: lost synchro
ts debug: skipping 12 bytes of garbage
ts warning: lost synchro
ts debug: skipping 3 bytes of garbage
ts warning: lost synchro
ts debug: skipping 12 bytes of garbage
ts warning: lost synchro
ts debug: skipping 12 bytes of garbage
ts warning: lost synchro
ts debug: skipping 12 bytes of garbage
ts warning: lost synchro
ts debug: skipping 12 bytes of garbage
ts warning: lost synchro
ts debug: skipping 3 bytes of garbage
ts warning: lost synchro
ts debug: skipping 3 bytes of garbage
ts warning: lost synchro
ts debug: skipping 12 bytes of garbage
ts warning: lost synchro
ts debug: skipping 12 bytes of garbage
ts warning: lost synchro
ts debug: skipping 3 bytes of garbage
ts warning: lost synchro
ts debug: skipping 12 bytes of garbage
ts warning: lost synchro
ts debug: skipping 12 bytes of garbage
ts warning: lost synchro
ts debug: skipping 12 bytes of garbage
ts warning: lost synchro
ts debug: skipping 12 bytes of garbage
ts warning: lost synchro
ts debug: skipping 3 bytes of garbage
ts warning: lost synchro
ts debug: skipping 3 bytes of garbage
ts warning: lost synchro
ts debug: skipping 12 bytes of garbage
ts warning: lost synchro
ts debug: skipping 12 bytes of garbage
ts warning: lost synchro
ts debug: skipping 3 bytes of garbage
ts warning: lost synchro
ts debug: skipping 12 bytes of garbage
ts warning: lost synchro
ts debug: skipping 12 bytes of garbage
ts debug: eof ?
main debug: EOF reached
main debug: closing input
ts debug: pid list:
ts debug: - pid[32] seen
ts debug: - pid[601] seen
ts debug: - pid[602] seen
ts debug: - pid[8160] seen
ts debug: - pid[8191] seen
main debug: removing module "ts"
main debug: removing module "access_file"
main debug: thread times: real 0m17.531250s, kernel 0m0.156250s, user 0m0.156250s
main debug: thread 4476 joined (input/input.c:399)
main: nothing to play

Oleg
16-02-2008, 14:42
Посмотрел поток, там попадются и 80 21 и 90 21. А ещё периодически блоки из нулей - не очень похоже на мпег...

ega2002
16-02-2008, 18:28
У меня по http аналогично, на 240-м vlc даже не пытается что-либо отобразить, лог файлы приложил. 210-й работает нормально.

bsl45
17-02-2008, 09:51
Результаты не радуют, конечно. Интригуют меня также эти коротенькие пакеты в передаче корбины: у меня создать что-то подобное вещанием видео через vlc по RTP не получается - оттого и тесты мои не вполне коррелируют, возможно... (Посылаем из vlc на RTP - принимаем vlc как HTTP поток через udpxy - всё работает.)

Буду размышлять... и анализировать поток - на крайний случай напишу что-нибудь для запуска сеть пакетов из pcap (tcpdump) файла - там и посмотрим.

Павел

Oleg
17-02-2008, 09:54
Павел, есть tcpreplay, сам я его правда не пробовал.

http://www.google.ru/search?hl=ru&q=pcap+replay&lr=&aq=f

bsl45
17-02-2008, 21:20
Павел, есть tcpreplay, сам я его правда не пробовал.

http://www.google.ru/search?hl=ru&q=pcap+replay&lr=&aq=f

Спасибо! Буду играть теперь с ним ... - правда, видимо, не сегодня уже (не раньше понедельника-вторника).

Stalker
18-02-2008, 15:25
Были правы те люди которые говорили про простых пользователей, типа меня (которых, думаю меньшинство, но они есть). Я никс то в жизни видел всего пару раз (большинство на картинках) и уж тем более в таком устройстве типа роутера (wl500w). Всю тему я прочитал по два раза если не более и даже все сторонние сылки на другие темы, касающиеся IPTV, попробовав покапаться у себя с udpxy файлом и роутером у меня естественно ничего не получилось (хотябы даже как с флешки запустить на роутере этот файл, не говоря уже о настройке) после чего возникло два основных вопроса:
1) Вопрос к Олегу: Вы говорили, что собираетесь выпустить прошивку с уже встроенной программой udpxy, где надо будет просто вбить порт, т.е. вся примитивно просто. Можно узнать, когда это приблизительно произойдёт и будет ли поддерживаться wl500w?
2) Вобще, есть люди, которые добились действительно нормальной картинки видео без артефактов, квадратов и обрывов звука по wi-fi или же надо тянуть провод через всю квартиру?
Заранее спасибо. И отдельное спасибо Олегу и всем, кто поддерживает этот проэкт.

П.С. стоит последняя прошивка от Олега (1.9.2.7-8), я перепробовал все возможные комбинации Multicast Rate и прочие настройки типа Radio Power и WMM, каждый раз перезагружаясь, но всёравно каждый из каналов показывал квадраты. У меня районный провайдер (Imsys) предоставляет бесплатно IPTV. Смотрел VLC, каналы берутся из m3u плейлиста. По проводу всё идеально, но так не хочется тянуть эту махину через всю квартиру, да и родители против, темболее потратился на такое оборудование с N стандартом (.

Hlustov
18-02-2008, 17:20
Были правы те люди которые говорили про простых пользователей, типа меня (которых, думаю меньшинство, но они есть). Я никс то в жизни видел всего пару раз (большинство на картинках) и уж тем более в таком устройстве типа роутера (wl500w). Всю тему я прочитал по два раза если не более и даже все сторонние сылки на другие темы, касающиеся IPTV, попробовав покапаться у себя с udpxy файлом и роутером у меня естественно ничего не получилось (хотябы даже как с флешки запустить на роутере этот файл, не говоря уже о настройке) после чего возникло два основных вопроса:
1) Вопрос к Олегу: Вы говорили, что собираетесь выпустить прошивку с уже встроенной программой udpxy, где надо будет просто вбить порт, т.е. вся примитивно просто. Можно узнать, когда это приблизительно произойдёт и будет ли поддерживаться wl500w?
2) Вобще, есть люди, которые добились действительно нормальной картинки видео без артефактов, квадратов и обрывов звука по wi-fi или же надо тянуть провод через всю квартиру?
Заранее спасибо. И отдельное спасибо Олегу и всем, кто поддерживает этот проэкт.

П.С. стоит последняя прошивка от Олега (1.9.2.7-8), я перепробовал все возможные комбинации Multicast Rate и прочие настройки типа Radio Power и WMM, каждый раз перезагружаясь, но всёравно каждый из каналов показывал квадраты. У меня районный провайдер (Imsys) предоставляет бесплатно IPTV. Смотрел VLC, каналы берутся из m3u плейлиста. По проводу всё идеально, но так не хочется тянуть эту махину через всю квартиру, да и родители против, темболее потратился на такое оборудование с N стандартом (.

1. http://oleg.wl500g.info/preview
2. В Corbina, в сетке 210 не считая 2-х каналов все замечательно работает

bsl45
22-02-2008, 20:08
Я по-прежнему разбираюсь с проблемой Корбины-240 и некоторые подвижки есть:

1. Обнаружил, что Корбина время от времени использует в пакетах расширенные (extended) заголовки RTP (на кой ляд - надо спросить у них самих).
2. Нашёл ошибку в (своём) коде работы с extended RTP заголовками - исправил.
3. Успешно разбираю на RTP пакеты файл от Корбины (240_build-27.mpg) - в потоке есть пакеты следующих размеров:




[1140]
[1328]
[1332]
[1336]
[1348]
[1352]
[1364]
[200]
[388]
[576]
[764]
[952]



Буду пытаться "проиграть" для начала разобранный (с удалёнными RTP заголовками) файл от Корбины через udpxy - о результатах сообщу.

bsl45
27-02-2008, 03:16
Добавлена работа с расширенными заголовками RTP, популярными в потоке от Корбины-240. Проверял у себя на файлах, присланных участниками - обрабатывает нормально, изображение и звук в норме.

Просьба протестировать "вживую" и сообщить о результатах.

Заранее благодарю всех участвующих в тестировании.

djet
27-02-2008, 08:25
Странно, у меня он перестал подписываться на мультикаст-группы:




Added client: pid=[5645], maddr=[233.32.240.148], mport=[5050], saddr=[10.111.70.220], sport=[12988]
Closed accepted socket [7]
Server is waiting for input: socket=[6], pipe=[4]
read: Resource temporarily unavailable
Receive on socket/file [4] timed out
read_data - EOF
Exited relay loop: received=[-1], sent=[0], quit=[0]
Mcast listener socket=[4] closed
Child process=[5645] exits with rc=[0]
*** Caught SIGCHLD in process=[4628] ***
Client [5645] has exited.
Deleted client: pid=[5645]
Server is waiting for input: socket=[6], pipe=[4]

...

Feb 27 09:13:14 authpriv.notice dropbear[4614]: password auth succeeded for 'djet' from 192.168.1.4:11489
Feb 27 09:13:39 local0.notice udpxy[4591]: udpxy is exiting rc=[0]
Feb 27 09:13:40 local0.notice udpxy[4628]: udpxy is starting
Feb 27 09:13:55 local0.err udpxy[4630]: read: Resource temporarily unavailable
Feb 27 09:13:59 local0.err udpxy[4631]: read: Resource temporarily unavailable
Feb 27 09:14:27 local0.err udpxy[4633]: read: Resource temporarily unavailable

При запуске дополнительного vlc для подписки на группу начинает показывать, и вроде бы даже неплохо, без помех.

Oleg
27-02-2008, 08:31
Может фаервол перекручен?

У меня работает нормально, как обычно. :)

Павел, вроде всё получилось, сегодня вечером ещё погоняю.

djet
27-02-2008, 08:49
Может фаервол перекручен?

У меня работает нормально, как обычно. :)

Павел, вроде всё получилось, сегодня вечером ещё погоняю.

Так тоже не работает..



Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination

Chain FORWARD (policy ACCEPT 24 packets, 1273 bytes)
pkts bytes target prot opt in out source destination
0 0 ACCEPT all -- br0 br0 0.0.0.0/0 0.0.0.0/0
0 0 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 state INVALID
0 0 ACCEPT udp -- * * 0.0.0.0/0 224.0.0.0/4
51 2544 TCPMSS tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp flags:0x16/0x02 TCPMSS clamp to PMTU
5038 3441K ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
0 0 DROP all -- !br0 ppp0 0.0.0.0/0 0.0.0.0/0
0 0 DROP all -- !br0 vlan1 0.0.0.0/0 0.0.0.0/0
36 1765 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 ctstate DNAT
0 0 DROP all -- * br0 0.0.0.0/0 0.0.0.0/0


Chain OUTPUT (policy ACCEPT 7 packets, 684 bytes)
pkts bytes target prot opt in out source destination

Судя по дампу igmp, leave шлются, а вот report'ы - нет. :( Что ещё может быть?

Oleg
27-02-2008, 09:34
rp_filter?

djet
27-02-2008, 09:40
Странные глюки пошли.. 210-е через udpxy работают; 240-е начинают работать после отключения flashfs. Придётся, наверное, методом тыка искать причину.

Ты про это:
for i in /proc/sys/net/ipv4/conf/*/rp_filter ; do echo 0 > $i; done ?
Не помогает.

Vitaly_k
27-02-2008, 15:24
Павел, вроде всё получилось, сегодня вечером ещё погоняю.

Может включите обновленную версию в очердое превью?

bsl45
27-02-2008, 19:07
Странные глюки пошли.. 210-е через udpxy работают; 240-е начинают работать после отключения flashfs. Придётся, наверное, методом тыка искать причину.

Ты про это:
for i in /proc/sys/net/ipv4/conf/*/rp_filter ; do echo 0 > $i; done ?
Не помогает.

Код обработки заголовков RTP там сыроват пока - возможны, в принципе, buffer overruns (я один в коде заголовков ликвидировал, потому и подозрения есть) - отсюда могут быть и глюки... Я как раз собираюсь поставить на этот случай тест-заглушки и протестировать у себя - если что найду, то выложу новую сборку.

Oleg
27-02-2008, 19:21
Может включите обновленную версию в очердое превью?
Как только, так сразу. :)

djet
27-02-2008, 22:17
Олег, обнаружил причину неработы 240-х каналов, теперь они у меня перестали работать в т.ч. и через igmpproxy. Пакеты отправляются со странным юникастовым Dst: UniwillC_4d:db:84 (00:03:0d:4d:db:84):


Frame 1 (46 bytes on wire, 46 bytes captured)
Ethernet II, Src: AsustekC_7e:28:8e (00:1a:92:7e:28:8e), Dst: UniwillC_4d:db:84 (00:03:0d:4d:db:84)
Internet Protocol, Src: 10.111.64.111 (10.111.64.111), Dst: 233.32.240.150 (233.32.240.150)
Internet Group Management Protocol
IGMP Version: 2
Type: Membership Report (0x16)
Max Response Time: 0,0 sec (0x00)
Header checksum: 0x1048 [correct]
Multicast Address: 233.32.240.150 (233.32.240.150)

djet
27-02-2008, 23:12
Новые подробности, очень увлекательные. :)

<вдохнуть>Мак принадлежит пользователю из моего сегмента, у которого статически прописан IP, выдающийся мне по DHCP, но которым я не пользуюсь, т.к. он у меня подменяется на зарезервированный статический в модифицированном udhcpc по схеме описанной здесь (http://wl500g.info/showthread.php?t=6922&highlight=udhcpc).</выдохнуть> Такая запутанная история.. Как мне разрешить её без применения силы к нарушителям спокойствия локальной сети? :D

bsl45
28-02-2008, 02:18
Сборка 30 выложена на sourceforge, отличия от 29-ой - минимальные (добавлены проверки на buffer overruns, подредактирован README).

Платформа пока что одна - MIPS-I, в ней бинарник и исходники.

http://sourceforge.net/projects/udpxy/

В дальнейшем намереваюсь выкладывать сборки туда же (за исключением сугубо тестовых вариантов).

Oleg
28-02-2008, 20:23
Павел, lean версия не собирается:

mipsel-uclibc-gcc -W -Wall -Werror --pedantic -DNDEBUG -c udpxy.c -o udpxy.o
cc1: warnings being treated as errors
udpxy.c: In function `relay_traffic':
udpxy.c:894: warning: unused variable `t_delta'
udpxy.c: At top level:
udpxy.c:824: warning: `check_fragments' defined but not used
make[2]: *** [udpxy.o] Error 1
make[2]: Leaving directory `/root/1985/src/gateway/udpxy'
make[1]: *** [lean] Error 2
make[1]: Leaving directory `/root/1985/src/gateway/udpxy'
make: *** [udpxy] Error 2

release версия собирается, но не работает strip (я вроде писал уже об этом :) хостовый стрип не понимает кросс версию). Нужно использовать $(STRIP), а лучше ничего...

Vitaly_k
28-02-2008, 23:00
После залития прошивки пре-20, в которой интегрирован новый релиз прокси, 240-е каналы Корбины заработали.
Ура, проблема решена!

bsl45
29-02-2008, 01:35
Павел, lean версия не собирается:

mipsel-uclibc-gcc -W -Wall -Werror --pedantic -DNDEBUG -c udpxy.c -o udpxy.o
cc1: warnings being treated as errors

release версия собирается, но не работает strip (я вроде писал уже об этом :) хостовый стрип не понимает кросс версию). Нужно использовать $(STRIP), а лучше ничего...

Починил сборку, приношу свои извинения. Release теперь не будет пытаться делать stripped executable. Обновления, как водится теперь - на sourceforge.net.

Spacesoft
01-03-2008, 06:18
Думаю в веб интерфейс не помешало бы сделать генератор плейлиста из SAP-оповещений, дабы по запросу http://router:81/playlist.m3u выдавался собственно playlist.m3u с готовыми ссылками.

Oleg
01-03-2008, 07:53
Думаю в веб интерфейс не помешало бы сделать генератор плейлиста из SAP-оповещений, дабы по запросу http://router:81/playlist.m3u выдавался собственно playlist.m3u с готовыми ссылками.
А кто его вещает? И по какому мультикаст адресу? У Корбины я не видел такого, у Стрима тоже...

http://tools.ietf.org/html/rfc2974

lll123lll
01-03-2008, 18:35
Провайдер Корбина по некоторым адресам , например 233.32.210.212
транслируется сразу несколько каналов тв и радио
для выбора конкретного канала в VCL надо дополнительно выбрать в его в меню Навигация

через udpxy такие каналы не работают - хоть в меню Навигация и появляется доп выбор, но идет какаято мешанина с заикающимся звуком...

Oleg
01-03-2008, 19:05
Специально глянул. Там суммарный битрейт 20 мегабит. По WiFi смотрите?

Oleg
01-03-2008, 19:16
Кстати, там и без WiFi у процессора банально не хватает производительности. loadavg аж 1.5. Собственно, я и раньше говорил, что такие каналы не для udpxy.

djet
01-03-2008, 20:03
Провайдер Корбина по некоторым адресам , например 233.32.210.212
транслируется сразу несколько каналов тв и радио
для выбора конкретного канала в VCL надо дополнительно выбрать в его в меню Навигация

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

lll123lll
02-03-2008, 05:34
смотрю по проводу,но udpxy конечно для WiFi нужен...
...жаль ведь именно там 2x2...если бы можно было его оттуда выдрать,а остальное просто игнорировать...

lork
02-03-2008, 17:19
Здравствуйте. Использую прошивку с udpxy (8.16) на wl-500gp около месяца, есть проблема с некоторыми каналами, например, National Geographic разваливается на квадратики. Прошивку сегодня обновил до 8.21, ничего не изменилось.
Смотрю по проводу. Провайдер Corbina, подсеть Нагатино-Садовники (ngs). Канал транслируется по адресу: 233.32.210.181:5050.

В логе следующее:


Mar 2 18:51:41 udpxy[155]: write_buf - write: Broken pipe
Mar 2 18:54:24 udpxy[156]: write_buf - write: Broken pipe
Mar 2 18:55:08 udpxy[157]: write_buf - write: Broken pipe
Mar 2 19:04:24 udpxy[158]: write_buf - write: Broken pipe
Mar 2 19:05:05 udpxy[159]: write_buf - write: Broken pipe
Mar 2 19:15:16 udpxy[167]: write_data - writev(file): Broken pipe
Mar 2 19:15:36 udpxy[168]: write_buf - write: Broken pipe
Mar 2 19:18:24 udpxy[169]: write_data - writev(file): Broken pipe


Правда, бывают моменты, что начинает показывать нормально и потом снова разваливается =(

ega2002
03-03-2008, 15:32
Павел, как я вижу, Вы в 32-й сборке оставили некоторые недокументированные параметры командной строки из предыдущих сборок. Если планируете оставить их и дальше, добавьте пожалуйста краткое описание во встроенную справку.
А в общем, все похоже работает нормально как на 210, так и на 240 каналах :). Правда, в последнее время у меня качество вещания корбиновского IPTV заметно ухудшилось, видимо, перегрузка магистральных каналов, поэтому полноценного тестирования сейчас обещать не могу :(.

djet
03-03-2008, 17:04
смотрю по проводу,но udpxy конечно для WiFi нужен...
...жаль ведь именно там 2x2...если бы можно было его оттуда выдрать,а остальное просто игнорировать...

Сегодня запустили новый поток с 2х2 в h264 без шифрования канала: udp://@233.32.240.236. Для просмотра может понадобиться экспериментальный билд VLC, брать здесь (http://nightlies.videolan.org/build/win32/latest/).

Oleg
03-03-2008, 17:12
Правда, в последнее время у меня качество вещания корбиновского IPTV заметно ухудшилось, видимо, перегрузка магистральных каналов, поэтому полноценного тестирования сейчас обещать не могу :(.
+1 У меня в выходные был полный ужас. "Квадратило" будь здоров.

bsl45
03-03-2008, 19:20
Павел, как я вижу, Вы в 32-й сборке оставили некоторые недокументированные параметры командной строки из предыдущих сборок. Если планируете оставить их и дальше, добавьте пожалуйста краткое описание во встроенную справку.


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

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

Что же касается параметров '-r file' и '-w file', то они имеют исключительно отладочную функцию и не должны рассматриваться как часть приложения. Их я, скорее всего, оставлю в исходниках, но не в стандартной сборке для wl500g.

Saros
04-03-2008, 20:35
Возможно ли сделать такую шляпу:
роутер с udpxy и расшарить во внешнюю сеть порт. Т.е. смотреть тв как из внутренней сети так и из внешней, соответственно обращаясь 192.168.1.1:81 или внешнийИП:81
Destination Proto. Port Range Redirect to
all TCP 81 192.168.1.1

Вот так не получилось.

ega2002
04-03-2008, 21:00
Возможно ли сделать такую шляпу:
роутер с udpxy и расшарить во внешнюю сеть порт. Т.е. смотреть тв как из внутренней сети так и из внешней, соответственно обращаясь 192.168.1.1:81 или внешнийИП:81
Destination Proto. Port Range Redirect to
all TCP 81 192.168.1.1

Вот так не получилось.
Ничего никуда редиректить не нужно. Все должно получиться, если открыть в файрволе соответствующий порт наружу. Запускать udpxy нужно без ключа -a, чтобы он слушал на всех интерфейсах. У меня все работало.

djet
06-03-2008, 14:18
А поддержка inetd пока ещё не реализована?

UstasLancer
11-03-2008, 08:55
Тестирую udpxy в составе последней прошивки (8,22). Часто бывает ситуация, что смотришь какой-нибудь канал (используется связка TVercity и DSM320RD) и где-то минут через 20 наблюдаем стоп-кадр, который уже не оживает :(

При этом в логе роутера обнаруживается строчка вида:

Mar 10 22:21:59 udpxy[176]: write_buf - write: Connection reset by peer

После получения стоп-кадра можно переключиться на следующий канал - так же будет работать. В случае, если попытаться вернуться на тот канал, который "стопанулся" - воспроизвести уже не получается (но, думаю, что это уже глюки моей "связки").



а вот про строчку в логе хотелось бы узнать... можно ли как-то избежать и в чем тут проблема? поставщик контента виноват? или все-таки "клиент"?

Vitaly_k
11-03-2008, 14:12
Тестирую udpxy в составе последней прошивки (8,22). Часто бывает ситуация, что смотришь какой-нибудь канал (используется связка TVercity и DSM320RD) и где-то минут через 20 наблюдаем стоп-кадр, который уже не оживает :(


Провайдер Корбина? Там была проблема с самопроизвольным отключением подписки на мультикаст-группу. Интересно, udpxy умеет подключаться повторно если подписка умерла?

UstasLancer
11-03-2008, 14:39
Провайдер Корбина? Там была проблема с самопроизвольным отключением подписки на мультикаст-группу. Интересно, udpxy умеет подключаться повторно если подписка умерла?

нет, провайдер Utech (NbN)

bsl45
13-03-2008, 20:45
При этом в логе роутера обнаруживается строчка вида:

Mar 10 22:21:59 udpxy[176]: write_buf - write: Connection reset by peer

а вот про строчку в логе хотелось бы узнать... можно ли как-то избежать и в чем тут проблема? поставщик контента виноват? или все-таки "клиент"?

Запись означает, что TCP сессия приказала долго жить - связи с подпиской тут не вижу (что не означает, что её нет, конечно). Моя ставка на то, что виноват клиент - у меня в тестах такое поведение наблюдается, если послать запрос на udpxy, а затем убить клиента.

Sp3ct3r
17-03-2008, 18:59
udpxy -a 192.168.1.1 -p 81 -c 3


Народ, а куда эту строчку прописывать??? :confused:

Oleg
18-03-2008, 18:46
.32

Павел, вот что имею сейчас:

Making a [lean] version (minimal size)

make[2]: Entering directory `/root/2001/src/gateway/udpxy'
mipsel-uclibc-gcc -W -Wall -Werror --pedantic -DNDEBUG -c udpxy.c -o udpxy.o
mipsel-uclibc-gcc -W -Wall -Werror --pedantic -DNDEBUG -c rparse.c -o rparse.o
mipsel-uclibc-gcc -W -Wall -Werror --pedantic -DNDEBUG -c util.c -o util.o
cc1: warnings being treated as errors
util.c: In function `tmfprintf':
util.c:431: warning: `%x' yields only last 2 digits of year in some locales
util.c: In function `tmfputs':
util.c:473: warning: `%x' yields only last 2 digits of year in some locales
make[2]: *** [util.o] Error 1
make[2]: Leaving directory `/root/2001/src/gateway/udpxy'
make[1]: *** [lean] Error 2
make[1]: Leaving directory `/root/2001/src/gateway/udpxy'
make: *** [udpxy] Error 2

ega2002
18-03-2008, 19:55
А у меня 32-я сборка (как впрочем и все остальные) скомпилировалась с использованием OpenWRT SDK без проблем :)

bsl45
20-03-2008, 04:51
.32

mipsel-uclibc-gcc -W -Wall -Werror --pedantic -DNDEBUG -c util.c -o util.o
cc1: warnings being treated as errors
util.c: In function `tmfprintf':
util.c:431: warning: `%x' yields only last 2 digits of year in some locales
util.c: In function `tmfputs':
util.c:473: warning: `%x' yields only last 2 digits of year in some locales
make[2]: *** [util.o] Error 1
make[2]: Leaving directory `/root/2001/src/gateway/udpxy'
make[1]: *** [lean] Error 2
make[1]: Leaving directory `/root/2001/src/gateway/udpxy'
make: *** [udpxy] Error 2

Исправлю, но поскольку сейчас готовлю сборку с udpxrec (а её ещё тестировать и т.п.), то не сей же момент - если хотите, то строчку формата в strftime замените просто на "%Y-%m-%d %H:%M:%S %Z" - я зря связался там с locale-dependent форматами.

bsl45
24-03-2008, 00:53
Выложен только исходный код (тестировочное устройство было недоступно).

Build 33 (23-Mar-2008)
(*) udpxrec application added to record traffic into file
(*) miliseconds added to log timestamps

NB: чтобы пользоваться udpxrec нужно (самому) сделать ссылку на udpxy как на udpxrec, т.е.:



$ln -s udpxy udpxrec

$ ./udpxrec

$ ./udpxrec 0.1 (build 33) standard
usage: ./udpxrec [-v] [-b begin_time] [-e end_time] [-M maxfilesize] [-p pidfile] [-B bufsizeK] [-n nice_incr] [-m mcast_ifc_addr] [-l logfile] -c src_addr:port dstfile
-v : enable verbose output [default = disabled]
-b : begin recording at [+]dd:hh24:mi.ss
-e : stop recording at [+]dd:hh24:mi.ss
-M : maximum size of destination file
-p : pidfile for this process
-B : cache size for inbound (multicast) data [default = 64K]
-R : maximum messages to cache in buffer (-1 = all) [default = -1]
-n : nice value increment [default = 0]
-m : name or address of multicast interface to read from
-c : multicast channel to record - ipv4addr:port
-l : write output into the logfile
-u : seconds to wait before updating on how long till recording starts
Examples:
udpxrec -b 15:45.00 -e +2:00.00 -M 1.5Gb -n 2 -B 64K -c 224.0.11.31:5050 /opt/video/tv5.mpg
begin recording multicast channel 224.0.11.31:5050 at 15:45 today,
finish recording in two hours or if destination file size >= 1.5 Gb;
set socket buffer to 64Kb; increment nice value by 2;
write captured video to /opt/video/tv5.mpg

udpxy is Copyright (C) 2008 Pavel V. Cherenkov and licensed under GNU GPLv3



В дальнейшем планируется сделать make install через automake, но пока что тем, кто собирает вручную придётся и ссылку создавать "вручную".

udpxrec читает MPEG-TS и RTP/MPEG-TS (это то, чем активно пользуется Корбина), а пишет напрямую поток как MPEG-TS (по сути то же, что пишется в сеть). Файлы от udpxrec (записанные с расширением MPG) проигрываются vlc напрямую, другие плееры пока что (по моему опыту) "видят" только звук (MP3).

bsl45
24-03-2008, 08:35
Сборка 34 выложена на sourceforge. Изменения: 1 bug fix.

К вопросу о проигрывании потока:

Файлы MPEG-TS (на выходе udpxrec) следует перекодировать в MPEG-PS, чтобы их "понимало" большинство плееров. Перекодировать можно с помощью vlc вот так:



vlc input-ts.mpg --sout="#std{access=file,mux=ps,dst=out-ps.mpg}"


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

Всех благ, жду результатов тестирования.

Oleg
24-03-2008, 08:51
Предлагаю тогда в примере заменить расширение mpg на ts, тем более, что это и есть ts файл.

ega2002
24-03-2008, 20:57
Павел, скомпилировал под OpenWRT как обычно 34-й билд, и в результате udpxy отказывается запускаться, выдавая сообщение в лог:

Mar 24 22:46:00 udpxy[17666]: unlink: No such file or directory
Что можно предпринять, чтобы продиагностировать ситуацию?

bsl45
24-03-2008, 22:29
Павел, скомпилировал под OpenWRT как обычно 34-й билд, и в результате udpxy отказывается запускаться, выдавая сообщение в лог:

Mar 24 22:46:00 udpxy[17666]: unlink: No such file or directory
Что можно предпринять, чтобы продиагностировать ситуацию?

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

bsl45
25-03-2008, 01:48
Ошибка, выявленная ega2002, исправлена (спасибо за тестирование!).
Сборка 35 выложена на SF.

Павел

ega2002
25-03-2008, 09:40
Сборка 35 выложена на SF
Что-то у меня 35-ая сборка скачивается с ошибками в архиве (пробовал качать с нескольких зеркал). Проверьте кто-нибудь, пожалуйста.

lly
25-03-2008, 09:44
Что-то у меня 35-ая сборка скачивается с ошибками в архиве (пробовал качать с нескольких зеркал). Проверьте кто-нибудь, пожалуйста.
У меня тоже gzip ругается :(

bsl45
25-03-2008, 18:41
Что-то у меня 35-ая сборка скачивается с ошибками в архиве (пробовал качать с нескольких зеркал). Проверьте кто-нибудь, пожалуйста.

Только что выложил заново, скачал .tgz и разархивировал без ошибок. Попробуйте ещё раз.

ega2002
25-03-2008, 21:39
Докладываю первые результаты тестирования.

1. Должен ли udpxrec сам уходить в бэкграунд? У меня не уходит, приходится запускать с "&"

2. Файлы пишет, но в конце записи вываливается с ошибкой: "Segmentation fault" если не в бэкграунде:

root@OpenWrt:~# /opt/bin/udpxrec -v -b 23:29.00 -e +0:01.00 -B 1024 -c 233.32.210.1:5050 /opt/tmp/out4.ts
2008-03-25 23:28:12.524487 MSK [48] seconds before recording begins
2008-03-25 23:29:00.532720 MSK Recording will end in [60] seconds
2008-03-25 23:29:00.592884 MSK Recording to file=[/opt/tmp/out4.ts] started.
2008-03-25 23:30:00.532160 MSK Recording to file=[/opt/tmp/out4.ts] stopped at filesize=[9073956] bytes
Segmentation fault
root@OpenWrt:~#
и "Bus error" если в бэкграунде:

root@OpenWrt:~# /opt/bin/udpxrec -v -b 23:32.00 -e +0:01.00 -B 1024 -c 233.32.210.1:5050 /opt/tmp/out5.ts &
root@OpenWrt:~# 2008-03-25 23:32:01.839769 MSK Recording will end in [59] seconds
2008-03-25 23:32:01.844606 MSK Recording to file=[/opt/tmp/out5.ts] started.
2008-03-25 23:33:00.837499 MSK Recording to file=[/opt/tmp/out5.ts] stopped at filesize=[9083172] bytes

[1] + Bus error /opt/bin/udpxrec -v -b 23:32.00 -e +0:01.00 -B 1024 -c 233.32.210.1:5050 /opt/tmp/out5.ts
root@OpenWrt:~#

ega2002
25-03-2008, 21:54
Добавление к моему предыдущему посту:

Записанные файлы vlc не воспроизводит: черный экран с изредка проскакивающими квадратами и полосами с изображением. :(

ega2002
25-03-2008, 22:20
Павел, ложная тревога, приношу извинения за предыдущие 2 поста :o: все дело было в ключе -B 1024. Оказалось, что я неверно понимал его формат (надо было писать -B 1024K). Видимо, буфер в 1024 байта был слишком мал для записи на внешнюю USB флешку. Забавно, что при этом udpxy с буфером 1024 байта работает нормально.
Сейчас сообщений об ошибках нет и файлы пишутся нормальные. Мое замечание относительно ухода в бэкграунд остается в силе.

bsl45
26-03-2008, 06:28
Павел, ложная тревога, приношу извинения за предыдущие 2 поста :o: все дело было в ключе -B 1024. Оказалось, что я неверно понимал его формат (надо было писать -B 1024K). Видимо, буфер в 1024 байта был слишком мал для записи на внешнюю USB флешку. Забавно, что при этом udpxy с буфером 1024 байта работает нормально.
Сейчас сообщений об ошибках нет и файлы пишутся нормальные. Мое замечание относительно ухода в бэкграунд остается в силе.

Не совсем уж и ложная - просто в udpxy параметр -B принимал значение в килобайтах (соответственно и задавали Вы 1024 килобайта, а не байта), а в udpxrec по умолчанию байты. Теперь оба принимают байты по умолчанию и понимают спецификаторы размера Kb, Mb, и т.д.

В udpxrec изначально не планировался режим демона, поэтому он и не уходил в фон. Теперь уходит, но только с указанием pidfile.

Выложена сборка 36 с исправлениями: полный список, как всегда, в CHANGES.

Спасибо всем, кто тестирует.

ega2002
26-03-2008, 22:55
Хочу еще поделиться своими впечатлениями о работе udpxrec.

Пока мне не удается получить запись потока совсем без артефактов: при проигрывании записанных файлов периодически (раз в несколько секунд) наблюдаются кратковременные выпадения изображения, как будто бы поток прерывается на доли секунды. Подозреваю, что это может быть связано вовсе не c udpxrec, а с особенностями конфигурации роутера, точнее с количеством свободной памяти, подсистемой записи на USB диск и т.п. У меня сейчас к роутеру подключена флешка, а не HDD, и отключен своп, возможно это тоже как-то влияет на процесс. Надо, чтобы кто-нибудь еще протестировал на прошивке Олега и поделился результатами.

З.Ы. Все-таки, запись IPTV программ - это функция не роутера, а мультимедиа ПК, подключенного к этому роутеру. ИМХО.

bsl45
26-03-2008, 23:40
Хочу еще поделиться своими впечатлениями о работе udpxrec.

Пока мне не удается получить запись потока совсем без артефактов: при проигрывании записанных файлов периодически (раз в несколько секунд) наблюдаются кратковременные выпадения изображения, как будто бы поток прерывается на доли секунды. Подозреваю, что это может быть связано вовсе не c udpxrec, а с особенностями конфигурации роутера, точнее с количеством свободной памяти, подсистемой записи на USB диск и т.п. У меня сейчас к роутеру подключена флешка, а не HDD, и отключен своп, возможно это тоже как-то влияет на процесс. Надо, чтобы кто-нибудь еще протестировал на прошивке Олега и поделился результатами.

Подозреваю, что дело тут в дорогостоящей операции записи файла на накопитель, у которого в данном случае скорость записи просто сверхнизкая. Сбои, возможно, наблюдаются при "выпадении" кадров, пропущенных во время записи (считывание и запись в udpxrec - последовательные и синхронные операции).

Попробую, как и Вы, писать на флэш и проанализировать потери пакетов (через sequence numbers в RTP пакетах).

Если воспроизведу дефект и сведу его к задержке при записи, останется перейти на асинхронную запись в файл (не факт, впрочем, что спасёт при интенсивном потоке и такой медленной скорости записи как на флэш).

Пока что, попробуйте вариировать значения параметров -B buffer_len и -R max_records. Первый установит размер буфера получаемых данных, а второй обеспечит сброс этого буфера каждые max_records пакетов. В случае отсутствия параметра -R max_records - udpxrec (и udpxy) заполняют буфер "до упора", т.е., установив -B 1024K Вы обеспечиваете запись ~ 1Mb на диск на каждые 699 (1 Mb/1500 для RTP) входных пакетов. Тут, возможно, и проскок. Поставьте значением -R 1 - и Вы полностью отмените буферизирование записи (при этом входной буфер сокета всё равно будет установлен в соответствие с значением -B). Если версия верна, то при -R 1 задержки будут появляться чаще, но, возможно, не столь резко.



З.Ы. Все-таки, запись IPTV программ - это функция не роутера, а мультимедиа ПК, подключенного к этому роутеру. ИМХО.


Согласен, в принципе - и писать желательно на устройство с сравнительно скоростной записью. :)

ega2002
27-03-2008, 21:16
Эксперименты с параметрами -B и -R ни к чему не привели, сбои в записанных файлах появляются с интервалом около 5 сек независимо от их значений. Зато я обнаружил, что на результат записи кардинально влияет режим монтирования usb-флешки. У меня флешка автоматом монтируется с опцией async. Если же смонтировать ее с опцией sync, то количество выпадений резко возрастает, т.е. по видимому роутер банально не успевает писать в синхронном режиме.
Становится понятно, с чем связан 5-секундный интервал сбоев в асинхронном режиме: роутер заполняет внутренний системный буфер записи, потом сбрасывает его на диск, в этот момент и происходит сбой.
Возможно, если вместо флешки будет HDD, результат будет иным, но сейчас у меня нет возможности это проверить.
Все вышесказанное относится к установленной у меня OpenWRT Kamikaze 7.09 на роутере WL-500gp. На прошивке Олега все может быть по-другому.

ega2002
27-03-2008, 21:41
Добавление к моему предыдущему посту:

Перейдя на синхронный режим записи на флешку, увидел-таки зависимость качества записи от параметра -R и добился отсутствия сбоев записи при его значении -R 128 :) (при -R 32 еще наблюдаются сбои). Таким образом, претензии программе udpxrec снимаются ;), и все определяется скоростью работы usb-дисковой подсистемы роутера.

bsl45
27-03-2008, 23:55
Добавление к моему предыдущему посту:

Перейдя на синхронный режим записи на флешку, увидел-таки зависимость качества записи от параметра -R и добился отсутствия сбоев записи при его значении -R 128 :) (при -R 32 еще наблюдаются сбои). Таким образом, претензии программе udpxrec снимаются ;), и все определяется скоростью работы usb-дисковой подсистемы роутера.

Спасибо, а то на асинхронную запись в udpxrec переходить было бы расточительно (там практически всё используется совместно с udpxy-модулем).

Ещё раз спасибо за тестирование!

bsl45
28-03-2008, 09:01
К вопросу о том, что udpxrec должен бы был работать не на роутере, а на мультимедиа PC:

Сборка 37 добавила поддержку для cygwin32. Серьёзно под cygwin я не тестировал - пробуйте кто захочет.

Lore
28-03-2008, 09:03
Подскажите пожалуйста, как простому смертному устанавливать обновленные версии udpxy, без смены (обновления) прошивки?

ega2002
28-03-2008, 15:16
Подскажите пожалуйста, как простому смертному устанавливать обновленные версии udpxy, без смены (обновления) прошивки?
Скомпилировать из исходников (или попросить у кого-нибудь уже скомпилированый исполняемый файл), переписать его на роутер и запустить из командной строки с необходимыми параметрами.

Oleg
29-03-2008, 17:38
Мне фатально не везёт:

Making a [lean] version (minimal size)

make[2]: Entering directory `/root/2001/src/gateway/udpxy'
mipsel-uclibc-gcc -W -Wall -Werror --pedantic -DNDEBUG -c udpxy.c -o udpxy.o
mipsel-uclibc-gcc -W -Wall -Werror --pedantic -DNDEBUG -c rparse.c -o rparse.o
mipsel-uclibc-gcc -W -Wall -Werror --pedantic -DNDEBUG -c util.c -o util.o
mipsel-uclibc-gcc -W -Wall -Werror --pedantic -DNDEBUG -c prbuf.c -o prbuf.o
mipsel-uclibc-gcc -W -Wall -Werror --pedantic -DNDEBUG -c ifaddr.c -o ifaddr.o
ifaddr.c: In function `if2addr':
ifaddr.c:101: structure has no member named `sa_len'
make[2]: *** [ifaddr.o] Error 1
make[2]: Leaving directory `/root/2001/src/gateway/udpxy'
make[1]: *** [lean] Error 2
make[1]: Leaving directory `/root/2001/src/gateway/udpxy'
make: *** [udpxy] Error 2

bsl45
29-03-2008, 23:34
Мне фатально не везёт:

Making a [lean] version (minimal size)

mipsel-uclibc-gcc -W -Wall -Werror --pedantic -DNDEBUG -c ifaddr.c -o ifaddr.o
ifaddr.c: In function `if2addr':
ifaddr.c:101: structure has no member named `sa_len'
make[2]: *** [ifaddr.o] Error 1
make[2]: Leaving directory `/root/2001/src/gateway/udpxy'
make[1]: *** [lean] Error 2
make[1]: Leaving directory `/root/2001/src/gateway/udpxy'
make: *** [udpxy] Error 2

Извините, мой просчёт (одной рукой правим, другой портим) - выложил новый архив исходников: 37-1.

morrison
31-03-2008, 22:25
Приветствую!

С восхищением пользую последнюю прошивку (1.9.2.7-10) на WL500W, спасибо Олегу и соратникам ). Давно хотел расшарить дома иптв, пробовал сам на линуксовом шлюзе - не заборол :rolleyes:, а тут такое счастье )

счастье пока вышло непостоянным,
исходные - локалка, статичный внутренний ип, иптв в тестовом режиме, техподдержка не комментирует). WL500W новый/свежепрошитый без допсофта, очевидно не сильно загруженный.

результат: iptv player напрямую с провода провайдера показывает великолепно, глюки квадратные) очень редки. В режиме роутинга мультикаста получаем глюки чаще, беспроводной сегмент загибается. В режиме прокси работает великолепно на 1 клиенте, при подключении второго картинка на первом рассыпается, глючат оба постоянно. Когда загружена сеть провайдера (днём) нормально не работает и 1 клиент - постоянные сбои..

в логах в основном подобное сообщение:

Mar 31 18:39:58 udpxy[141]: write_buf: write: Connection reset by peer

изредка:

Mar 31 14:52:11 udpxy[131]: read_buf: read: Resource temporarily unavailable
Mar 31 21:47:34 udpxy[189]: write_buf: write: Resource temporarily unavailable

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

помогите советом, спасибо )

bsl45
01-04-2008, 00:26
Приветствую!
в логах в основном подобное сообщение:

Mar 31 18:39:58 udpxy[141]: write_buf: write: Connection reset by peer

изредка:

Mar 31 14:52:11 udpxy[131]: read_buf: read: Resource temporarily unavailable
Mar 31 21:47:34 udpxy[189]: write_buf: write: Resource temporarily unavailable



Желательно получить весь журнал в режиме отладки (-v), конечно, а пока - лишь размышления.


write_buf: write: Connection reset by peer

означает, что клиент прервал соединение.

Прервал он его, скорее всего потому, что долго и безрезультатно ждал данных от udpxy, которых тот не послал вовремя. Паачэму нэ послал ?! :confused: - Думаю (гадаю), при такой загрузке сети данные с multicast идут с перебоями и udpxy ждал, пока ему придёт достаточно данных, чтобы отправить клиенту весь буфер (комбинация -B len, -R num определяет размер этого буфера). Ждал долго, и клиент таки не дождался и обрубил соединение - такой вот сценарий напрашивается. Как проверить? - Уменьшить буфер путём вариации значений параметра -R num (см. предыдущие посты). Повторюсь, но -R 1 отменяет буферизацию как таковую (но и это не гарантирует избавления от сбоев, если данные по multicast будут долго не доходить до роутера) - следовательно, разница в поведении должна быть (меньше записей connection reset by peer). Прошу проверить эту гипотезу.

Если гипотеза оправдается, то сделаю внутренний тайм-аут для буфера, при котором udpxy пошлёт всё, что было (сейчас есть тайм-аут на получение данных по мультикасту (read_buf: read: Resource temporarily unavailable), но он достаточно большой - 5 секунд, но, видимо, клиенту хватает и меньшего времени, чтобы оборвать соединение. Тайм-аут можно сделать и параметром, если будет на то нужда.

Сообщите о результатах проверки - постараюсь помочь.

Spacesoft
01-04-2008, 05:45
K вопросу оптимизации: когда несколько юзеров смотрит один канал - запущено несколько процессов потребляющих примерно одинаковое количество CPU, собственно мысль: почему бы при таком условии не отдавать уже преобразованный ( 'родительским' процессом) поток, а не преобразовывать для каждого одно и то же.
P.S. возможно так и делается, исходники пока не копал, выводы из внешних наблюдений :)
P.P.S для 'разгрузки' прикрутил icecast (шибко не смеяться, видеопоток неоднократно получалось им relay-ить), поток, зараза, дампит нормально, если wget-ом (уже с icecast-a) забирать - тоже полученный файл нормально смотрится плеерами, а в реалтайме если подключаться - не показывает...

bsl45
01-04-2008, 08:06
когда несколько юзеров смотрит один канал - запущено несколько процессов потребляющих примерно одинаковое количество CPU, собственно мысль: почему бы при таком условии не отдавать уже преобразованный ( 'родительским' процессом) поток, а не преобразовывать для каждого одно и то же.


Нет подобной оптимизации - но дискуссии об этом были (с _oz_) ещё при зарождении udpxy, и победило стремление к простоте архитектуры (а то ведь, знаете, так и .NET можно написать, начав с hello world :D - если бес попутает).

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

catmat
01-04-2008, 09:19
UDPXY в прошивке 1.9.2.7-10 на WL500W работает чудесно (еще раз хочу поблагодарить bsl45 за столь нужный и качественный продукт), одновременно у меня может смотреть 3 клиента (xbox 360, и два ноута) НИКАКИХ проблем на WL500W не замечено. картинка чистая, без глюков, даже если смотреть разные каналы, или если все смотрят 1. (все сразу не пробовал, а вот 2 ноута один и тот же канал показывают очень хорошо) Xbox смотрит по проводу, ноуты по wifi.

Spacesoft
01-04-2008, 10:24
Тогда рассуждения, помнится, привели нас к мысли, что такой мощности устройство наврядли будет способно поддержать много клиентов, а уж вероятность при этом, что из клиентов N>1 будет смотреть один и тот же канал - ещё меньше. Так вот, стоит ли огород городить? Ситуация, мне кажется, с двумя одинаковыми каналами - не совсем стандартная, так пусть скажут те, кто действительно пользуется "многоклиентностью" не на шутку - нужно ли?
Так прога не только на асусе может работать, но и на более злой машине, а оптимизация в любом случае не повредит...
Ещё попутно думаю чем-бы зарелеить http видеопоток, icecast как уже писал, не помог...

serioja
01-04-2008, 14:34
UDPXY в прошивке 1.9.2.7-10 на WL500W работает чудесно (еще раз хочу поблагодарить bsl45 за столь нужный и качественный продукт), одновременно у меня может смотреть 3 клиента (xbox 360, и два ноута) НИКАКИХ проблем на WL500W не замечено. картинка чистая, без глюков, даже если смотреть разные каналы, или если все смотрят 1. (все сразу не пробовал, а вот 2 ноута один и тот же канал показывают очень хорошо) Xbox смотрит по проводу, ноуты по wifi.

а не могли бы вы чуть поподробнее рассказать як вы бокс подружили с wl'ом?

catmat
01-04-2008, 15:26
так эта - плейлист в него загнал типа
http://192.168.1.1:81/udp/233.233.233.233:5000/tv.mpg
и он стал хавать его.
Собственно я изначально это делал по этому (http://wl500g.info/showpost.php?p=72014&postcount=409) описанию, а потом появился замечательный udpxy и стало все проще.

serioja
01-04-2008, 15:43
так эта - плейлист в него загнал типа
http://192.168.1.1:81/udp/233.233.233.233:5000/tv.mpg
и он стал хавать его.
Собственно я изначально это делал по этому (http://wl500g.info/showpost.php?p=72014&postcount=409) описанию, а потом появился замечательный udpxy и стало все проще.

так там же про первый бокс-то написано, а вы говорите, что у вас 360й... или там просто руками вдалбливать каждый канал?

bsl45
01-04-2008, 20:09
Так прога не только на асусе может работать, но и на более злой машине, а оптимизация в любом случае не повредит...

Переход на раздачу "разделяемых" видеопотоков влёчёт весьма ощутимые изменения в архитектуре: дополнительный тред/процесс на каждый потребляемый канал + синхронизация. Если это действительно востребовано пользователями и оправдано сокращением расхода ресурсов процессора - будем имплементировать. А прежде, чем оптимизировать, надо бы обосновать (как с любой оптимизацией). В связи с чем хотелось бы получить выкладки на расход ресурсов CPU udpxy на wl500g при N>1 клиенте на одном канале.

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

Spacesoft
01-04-2008, 21:24
Насчет востребовано ли пользователями асуса - наврядли, конечному юзеру по барабану сколько там процессов, лишь бы казало картинку, тут скорее кодерская привычка чтонить заоптимизить :)

bsl45
01-04-2008, 21:48
Насчет востребовано ли пользователями асуса - наврядли, конечному юзеру по барабану сколько там процессов, лишь бы казало картинку, тут скорее кодерская привычка чтонить заоптимизить :)

Чтобы не вдаваться в философию, проясню свою точку зрения: опитмизировать будем, как только станет ясным, что затраты на оптимизацию адекватны желаемому эффекту. Востребованность в данном случае выражается в том, что (многие) пользвователи скажут: да, мы часто смотрим много одинаковых каналов через udpxy, и потребление ресурсов сильно снижает производительность устройства.

Идея сделать всё оптимальным мне знакома, но простота и надёжность - прежде всего (особенно на устройстве). Текущая архитектура требует минимум синхронизации (отсюда простота, масштабируемость и скорость) и обеспечивает максимум изоляции (автономность, надёжность). Потому и не хочется ломать без веской причины.

Spacesoft
02-04-2008, 09:44
Так можно и вообще не ломать саму прогу, а организовать перед ней некий отдельный icecast-style кеш-рекордер-репитер, a-ля 'tcpxy' :)
При этом станет возможно использовать его вообще отдельно, и релеить/записывать видео/радио потоки...

bsl45
02-04-2008, 19:46
Так можно и вообще не ломать саму прогу, а организовать перед ней некий отдельный icecast-style кеш-рекордер-репитер, a-ля 'tcpxy' :)
При этом станет возможно использовать его вообще отдельно, и релеить/записывать видео/радио потоки...

Можно и так, если будет на то желание общественности. На запись желание было - и запись теперь есть (udpxrec). Будут конкретные потребности и соответствующие (насущные) сценарии применения - будем решать вопрос.

MaxPC
05-04-2008, 08:35
А можно настроить udpxy для просмотра TV со стороны внешней сети?
(с логином и паролем)

bsl45
08-04-2008, 20:13
А можно настроить udpxy для просмотра TV со стороны внешней сети?
(с логином и паролем)

Поясните, пожалуйста (опишите в деталях что и как Вы хотите сделать). Постараюсь помочь.

bsl45
08-04-2008, 20:19
Есть просьба к пользователям: напишите, сколько клиентов (каналов) в среднем используют udpxy в Вашей конфигурации, часто ли >1 клиента "смотрят" одинаковые каналы.

Заранее благодарю.

nekr0z
08-04-2008, 20:21
У меня обычно один-два клиента одновременно, но вот чтобы один и тот же канал — такого почти не бывает.

ega2002
08-04-2008, 20:33
Есть просьба к пользователям: напишите, сколько клиентов (каналов) в среднем используют udpxy в Вашей конфигурации, часто ли >1 клиента "смотрят" одинаковые каналы.

Заранее благодарю.
Смотрю только с одного компьютера (ноутбука) по вайфаю, соответственно на вторую часть вопроса ответ: никогда.

maxikoz
09-04-2008, 07:04
спасибо за программу! сперва настраивал скачанную версию, но потом в через веб интерфейс обнаружил встроенную.
немножко помучился с правильным формированием ссылок для плеера (пришлось поковырять ссылки провайдера на IP каналы), в итоге все замечательно заработало.
правда иногда квадраты проскакивают, но это не напрягает

MaxPC
09-04-2008, 07:38
Поясните, пожалуйста (опишите в деталях что и как Вы хотите сделать). Постараюсь помочь.
Есть желание подключаться к роутеру из внешнего интернета по IP адресу c помощью VLC плеера.
В плей-листе заменить внутренний IP на внешний.
Ну и сделать какое-то ограничение по доступу (например логин/пароль)

bsl45
09-04-2008, 08:58
Есть желание подключаться к роутеру из внешнего интернета по IP адресу c помощью VLC плеера.
В плей-листе заменить внутренний IP на внешний.
Ну и сделать какое-то ограничение по доступу (например логин/пароль)

Это, мне кажется, скорей относится к конфигурации сети нежели к конфигурации udpxy. Откройте порт, на котором слушает udpxy - вот и всё. Сама программа не поддерживает ограничений по доступу (кроме встроенных в ОС на уровне пользователя/группы), но при наличии веб-сервера это можно устроить, поставив между сервером и udpxy страницу запрашивающую логин и пароль и перенаправляющую HTTP запрос.

Планов встраивать веб-аутентификацию в udpxy пока нет - запрос достаточно экзотический.

AVAKS
09-04-2008, 11:04
По поводу шелюдинга - как вариант могу предложить свою веб морду. Написал ее пару месяцов назад под себя. У меня работает совмесно с udpxy - кидает поток Wget'ом в файл. Шелюдиг соответственно обеспечивает cron. Скрины прилагаю.

P.S. Если интересно - приведу в порядок , оформлю мануал и выложу отдельным постом.


Жаль тема как то не получила продолжения...
Если нужна помощь - готов поучаствовать.

bsl45
09-04-2008, 19:48
Жаль тема как то не получила продолжения...
Если нужна помощь - готов поучаствовать.


У меня работает совмесно с udpxy - кидает поток Wget'ом в файл. Шелюдиг соответственно обеспечивает cron.

Я таки надеюсь, теперь люди пользуются и udpxrec - или нет? :cool: