xupnpd - eXtensible UPnP agent

Используем пакеты, расширяющие возможности оборудования
mesb
Сообщения: 55
Зарегистрирован: 05 сен 2015, 23:47

Сообщение mesb » 09 сен 2015, 20:42

sysmer писал(а):Источник цитаты Плагин для ютуба, починил. Поверяйте!
:ugeek:
240815_xupnpd_youtube.lua.zip

А почему стали строить название плейлиста из другого поля?
Щас при задании channel/mostpopular я через dlna имею название youtube_channel_mostpopular.
Там же можно было задать название как отображать через веб морду.

mesb
Сообщения: 55
Зарегистрирован: 05 сен 2015, 23:47

Сообщение mesb » 12 сен 2015, 20:46

Ещё косяк, глубоко пока не разбирал. Толи лишний пробел гдето анализируется толи гдето забыто заенкодить урл поисковый.
Вот это работает: search/воля
Вот это нет: search/павел воля

mesb
Сообщения: 55
Зарегистрирован: 05 сен 2015, 23:47

Сообщение mesb » 12 сен 2015, 21:19

Точно, вобщем так, для любителей олдскула:
Старая версия, модуль поиска не трогали, но sysmer душевно поработал над добычей ссылок: https://yadi.sk/d/ZoxT81-mj3kBN

Подправленный модуль который был отрефакторен sysmer: https://yadi.sk/d/jfQJE0lwj3n4j
Исправлено:
Функция поиска теперь нормально ищет слова отличные от английских с пробелами.
Сам запрос поиска теперь имеет как и ранее сортировку по дате добавления.

sysmer
Сообщения: 31
Зарегистрирован: 24 авг 2015, 15:47

Сообщение sysmer » 21 сен 2015, 10:55

Озадачился такой проблемой, xupnpd не умеет транслировать rtmp и hls потоки.

rtmp это закрытый проток вещания от компании adobe. этот формат используется для организации онлайн фещания на сайте через флеш плеер (к примеру http://pik-tv.com/.

hls поток придуман компанией apple, видео передается по http протоколу маленькими кусочками, которые нужно склеевать в одно целое что бы смотреть. пример https://edem.tv/

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

поэтому я написал на lua такой вот костыль.
server.lua.zip


это отдельный сервер, который получает от xupnpd (или другого плеера) запросы и возвращает поток.
rtmp поток получатся с помощью утилиты rtmpdump а hls с помощью curl.

что бы его использовать нужно установить на роутере lua5.1, модуль socket для lua, rtmpdump, curl - все это есть в entware.
запуск сервера из консоли такой lua server.lua &

пример плейлиста такой:
ссылка на hls

Код: Выделить всё

http://127.0.0.1:8000/http://msk3.peers.tv/streaming/rain/16/tvrec/playlist.m3u8
где

Код: Выделить всё

http://127.0.0.1:8000/
адрес луа сервера а

Код: Выделить всё

http://msk3.peers.tv/streaming/rain/16/tvrec/playlist.m3u8
ссылка на видео в интернете.

ссылка на rtmp

Код: Выделить всё

http://127.0.0.1:8000/rtmpdump&-r&rtmp://78.140.209.14:1935/live&-y&piktv3pik3tv
где

Код: Выделить всё

http://127.0.0.1:8000/
адрес луа сервера а

Код: Выделить всё

rtmpdump&-r&rtmp://78.140.209.14:1935/live&-y&piktv3pik3tv
косольная команда на дамп rtmp потока где пробелы заменены на &

плейлист к примеру:
rtmp_hls.m3u.zip


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

sysmer
Сообщения: 31
Зарегистрирован: 24 авг 2015, 15:47

Сообщение sysmer » 24 сен 2015, 11:47

Тест предидущей версии показаk, что все плохо с hls видео, переделал сервер заново. Кто хочет, проверяйте.
У меня дома полет нормальный.

server.lua.v2.zip
У вас нет необходимых прав для просмотра вложений в этом сообщении.

smart
Сообщения: 3
Зарегистрирован: 28 сен 2015, 22:55

Сообщение smart » 28 сен 2015, 23:34

Доброй ночи, all!

Пытаюсь настроить iptv для телека с dlna.
Перепрошить кинетик на v1 и установить udpxy у меня получилось 8-)
Если в VLC-плеер подсовывать URL любого вида (и udp://@226.100.10.42:2000, и http://192.168.1.1:4022/udp/226.100.10.42:2000), то все работает :gamer: :music: :drinks:
Но ничего не могу сделать с плейлистами... :sorry:

Что сделано:
1. S26table => iptables -I INPUT -i eth2.2 -d 224.0.0.0/4 -j ACCEPT
2. S26udpxy => ifconfig eth2.2 10.10.99.1 up (у меня интернет через pppoe)
3. там же => updxy -a br0 -p $PORT -m eth2.2 -c 4 -B 1Mb -R -1 -H 8 -M 30

Чувствую, что вся заморока кроется в этих br0, eth0, eth1, eth2, eth2.1, eth2.2 и иже с ними, я реально не могу понять где что должно быть.

По ifconfig вижу вот это (VLC-плеер работает уже какое-то время):
 
br0 Link encap:Ethernet HWaddr 10:7B:EF:59:38:BC
inet addr:192.168.1.1 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:256496 errors:0 dropped:0 overruns:0 frame:0
TX packets:495178 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:12812859 (12.2 MiB) TX bytes:719233340 (685.9 MiB)

eth2 Link encap:Ethernet HWaddr 10:7B:EF:59:38:BC
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:827644 errors:0 dropped:0 overruns:0 frame:0
TX packets:305311 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:782610789 (746.3 MiB) TX bytes:22635818 (21.5 MiB)
Interrupt:3

eth2.1 Link encap:Ethernet HWaddr 10:7B:EF:59:38:BC
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:3201 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:870085 (849.6 KiB)

eth2.2 Link encap:Ethernet HWaddr 10:7B:EF:59:38:BD
inet addr:10.10.99.1 Bcast:10.255.255.255 Mask:255.0.0.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:537473 errors:0 dropped:0 overruns:0 frame:0
TX packets:12984 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:709070250 (676.2 MiB) TX bytes:2529468 (2.4 MiB)

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:120 errors:0 dropped:0 overruns:0 frame:0
TX packets:120 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:7200 (7.0 KiB) TX bytes:7200 (7.0 KiB)

ppp0 Link encap:Point-to-Point Protocol
inet addr:188.168.235.195 P-t-P:217.23.74.254 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1400 Metric:1
RX packets:46451 errors:0 dropped:0 overruns:0 frame:0
TX packets:46103 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:3
RX bytes:55099595 (52.5 MiB) TX bytes:4954716 (4.7 MiB)

ra0 Link encap:Ethernet HWaddr 10:7B:EF:59:38:BC
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:291954 errors:0 dropped:0 overruns:0 frame:0
TX packets:527595 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:24147419 (23.0 MiB) TX bytes:759736797 (724.5 MiB)
Interrupt:4
Свернуть

В xupnpd.lua (на данный момент, перед этим перепробовал много разных комбинаций) такие значения:
cfg.ssdp_interface='eth2.2'
cfg.udpxy_url='http://192.168.1.1:4022'
--cfg.mcast_interface='eth2.2'

По http://192.168.1.1:4044/ web-интерфейс XUPNPD виден, плейлисты загружаются, VLC-плеер их видит (меню Вид -> Локальная сеть -> Протокол UPnP), но не воспроизводит. Через некоторое время после попытки запуска одного из каналов появляется что-то наподобие: Этот источник не открывается: VLC не может открыть MRL 'http://192.168.1.1:4044/proxy/0_1_1_1.mpeg1'.

Помогите разобраться где что должно быть.

Аватара пользователя
Zyxmon
Администратор
Сообщения: 1269
Зарегистрирован: 09 авг 2015, 14:33

Сообщение Zyxmon » 29 сен 2015, 07:21

smart, указывайте какой системой пакетов пользуетесь. Zyxware или Entware. Там скрипты различаются!
танзит через lo разрешили? Самый первый пост старого форума.

Код: Выделить всё

iptables -I INPUT -i lo -j ACCEPT


PS На кинетике правила iptables и подобные лучше помещать в скрипт в папку firewall.d. Иначе при переподъеме pppoe все отвалиться.

smart
Сообщения: 3
Зарегистрирован: 28 сен 2015, 22:55

Сообщение smart » 29 сен 2015, 13:05

Zyxmon, спасибо за ответ.
Насчет системы пакетов - пользуюсь Zyxware (прошивка Firmware-KEENETIC_EXTRA-V1.11.A.RU.NDMS_131104035710.bin), единственное не знал про правку opkg.conf.
Исправил на

Код: Выделить всё

src/gz packages http://zyxware.zyxmon.org/binary-packages-II
(надеюсь, для черного Keenetic Extra это правильно).

Указанная Вами строчка

Код: Выделить всё

iptables -I INPUT -i lo -j ACCEPT
присутствует только в S27xupnpd:
 
#!/bin/sh

MOUNTPNT="/media/DISK_A1"
MOUNT="$MOUNTPNT/system"
XUPNPD="$MOUNT/usr/bin/xupnpd"

export PATH=$MOUNT/bin:$MOUNT/sbin:$MOUNT/usr/bin:$MOUNT/usr/sbin:/sbin:/usr/sbin:/bin:/usr/bin
export LD_LIBRARY_PATH=$MOUNT/lib:$MOUNT/usr/lib:/lib:/usr/lib

start() {
iptables -I INPUT -i lo -j ACCEPT
$XUPNPD
}

stop() {
killall xupnpd
iptables -D INPUT -i lo -j ACCEPT
}

case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
link_up)
;;
ppp_up)
;;
link_down)
;;
ppp_down)
;;
*)
echo "Usage: $0 {start|stop|restart|link_up|link_down|ppp_up|ppp_down}"
;;
esac
Свернуть

еще правила iptables есть в S26udpxy:
 
#!/bin/sh

MOUNT="/media/DISK_A1/system"
PORT=4022
PIDFILE="/var/run/udpxy$PORT.pid"

export PATH=$MOUNT/bin:$MOUNT/sbin:$MOUNT/usr/bin:$MOUNT/usr/sbin:/sbin:/usr/sbin:/bin:/usr/bin
export LD_LIBRARY_PATH=$MOUNT/lib:$MOUNT/usr/lib:/lib:/usr/lib

daemon_status ()
{
[ -f $PIDFILE ] && [ -d /proc/`cat $PIDFILE` ]
}

start() {
#for pure PPPoE without ip add any ip to eth2.2
ifconfig eth2.2 10.10.99.1 up
IGMODULE=`lsmod | grep igmpsn | cut -d " " -f 1`
# IGMODULE=`lsmod | grep -e igmpsn -e cc | cut -d " " -f 1`
if [ -n "$IGMODULE" ]; then
rmmod igmpsn
# rmmod cc
fi
# Forcing setting IGMPv2
echo "2" > /proc/sys/net/ipv4/conf/all/force_igmp_version
iptables -I INPUT -i eth2.2 -d 224.0.0.0/4 -j ACCEPT
# iptables -I INPUT -i eth2.2 -s 224.0.0.0/4 -j ACCEPT
# route add -net 224.0.0.0 netmask 240.0.0.0 br0 (не обязательно, работает без этого маршрута)
udpxy -a br0 -p $PORT -m eth2.2 -c 4 -B 512Kb -R -1 -H 8 -M 30
# UDPXY_ALLOW_PAUSES=1 UDPXY_SOCKBUF_LEN=1048576 udpxy -a br0 -p $PORT -m eth2.2 c 4 -B 1Mb -R 100 -1 -H 8 -M 30
}

stop() {
iptables -D INPUT -i eth2.2 -d 224.0.0.0/4 -j ACCEPT
# iptables -D INPUT -i eth2.2 -s 224.0.0.0/4 -j ACCEPT
kill `cat $PIDFILE`
}

case "$1" in
start)
if daemon_status
then
echo udpxy already running
else
start
fi
;;
stop)
stop
;;
restart)
stop
sleep 1
start
;;
status)
if daemon_status
then
echo udpxy is running
else
echo udpxy is not running
fi
;;
link_up)
;;
ppp_up)
;;
link_down)
;;
ppp_down)
;;
*)
echo "Usage: $0 {start|stop|restart|link_up|link_down|ppp_up|ppp_down}"
;;
esac
Свернуть

и в S26table (в firewall.d):
 
#!/bin/sh

MOUNT="/media/DISK_A1/system"

export PATH=$MOUNT/bin:$MOUNT/sbin:$MOUNT/usr/bin:$MOUNT/usr/sbin:/sbin:/usr/sbin:/bin:/usr/bin
export LD_LIBRARY_PATH=$MOUNT/lib:$MOUNT/usr/lib:/lib:/usr/lib
iptables -I INPUT -i eth2.2 -d 224.0.0.0/4 -j ACCEPT
Свернуть

на всякий случай листинг xuplpd.lua:
 
cfg={}

-- multicast interface for SSDP exchange, 'eth0', 'br0', 'br-lan' for example
cfg.ssdp_interface='eth2.2'

-- 'cfg.ssdp_loop' enables multicast loop (if player and server in one host)
cfg.ssdp_loop=0

-- SSDP announcement interval
cfg.ssdp_notify_interval=15

-- SSDP announcement age
cfg.ssdp_max_age=1800

-- HTTP port for incoming connections
cfg.http_port=4044

-- syslog facility (syslog,local0-local7)
cfg.log_facility='local0'

-- 'cfg.daemon' detach server from terminal
cfg.daemon=true

-- silent mode - no logs, no pid file
cfg.embedded=true

-- 'cfg.debug' enables SSDP debug output to stdout (if cfg.daemon=false)
-- 0-off, 1-basic, 2-messages
cfg.debug=1

-- external 'udpxy' url for multicast playlists (udp://@...)
cfg.udpxy_url='http://192.168.1.1:4022'

-- downstream interface for builtin multicast proxy (comment 'cfg.udpxy_url' for processing 'udp://@...' playlists)
--cfg.mcast_interface='eth2.2'

-- 'cfg.proxy' enables proxy for injection DLNA headers to stream
-- 0-off, 1-radio, 2-radio/TV
cfg.proxy=0

-- User-Agent for proxy
cfg.user_agent='Mozilla/5.0'

-- I/O timeout
cfg.http_timeout=30

-- enables UPnP/DLNA notify when reload playlist
cfg.dlna_notify=true

-- UPnP/DLNA subscribe ttl
cfg.dlna_subscribe_ttl=1800

-- group by 'group-title'
cfg.group=true

-- sort files
cfg.sort_files=false

-- Device name
cfg.name='UPnP-IPTV'

-- static device UUID, '60bd2fb3-dabe-cb14-c766-0e319b54c29a' for example or nil
cfg.uuid='60bd2fb3-dabe-cb14-c766-0e319b54c29a'

-- max url cache size
cfg.cache_size=8

-- url cache item ttl (sec)
cfg.cache_ttl=900

-- default mime type (mpeg, mpeg_ts, mpeg1, mpeg2, ts, ...)
cfg.default_mime_type='mpeg1'

-- feeds update interval (seconds, 0 - disabled)
cfg.feeds_update_interval=0
cfg.playlists_update_interval=0

-- playlist (m3u file path or path with alias
playlist=
{
-- { './playlists/mozhay.m3u', 'Mozhay.tv' }
-- { './localmedia', 'Local Media Files' }
-- { './private', 'Private Media Files', '127.0.0.1;192.168.1.1' } -- only for 127.0.0.1 and 192.168.1.1
}

-- feeds list (plugin, feed name, feed type)
feeds=
{
{ 'vimeo', 'channel/hd', 'Vimeo HD Channel' },
{ 'vimeo', 'channel/hdxs', 'Vimeo Xtreme sports' },
{ 'vimeo', 'channel/mtb', 'Vimeo MTB Channel' },
{ 'youtube', 'channel/top_rated', 'YouTube Top Rated' },
-- { 'youtube', 'Drift0r', 'Drift0r' },
-- { 'youtube', 'XboxAhoy', 'XboxAhoy' },
-- { 'ag', 'videos', 'AG - New' },
-- { 'ivi', 'new', 'IVI - New' },
-- { 'gametrailers', 'ps3', 'GT - PS3' },
-- { 'giantbomb', 'all', 'GiantBomb - All' },
-- { 'dreambox', 'http://192.168.0.1:8001/','Dreambox1' },
}

-- log ident, pid file end www root
cfg.version='1.032'
cfg.log_ident=arg[1] or 'xupnpd'
cfg.pid_file='/var/run/'..cfg.log_ident..'.pid'
cfg.www_root='./www/'
cfg.tmp_path='/tmp/'
cfg.plugin_path='./plugins/'
cfg.config_path='./config/'
cfg.playlists_path='./playlists/'
--cfg.feeds_path='/tmp/xupnpd-feeds/'
cfg.ui_path='./ui/'
cfg.drive='' -- reload playlists only if drive state=active/idle, example: cfg.drive='/dev/sda'
cfg.profiles='./profiles/' -- device profiles feature

dofile('xupnpd_main.lua')
Свернуть


Кажется ничего не забыл.

Аватара пользователя
Zyxmon
Администратор
Сообщения: 1269
Зарегистрирован: 09 авг 2015, 14:33

Сообщение Zyxmon » 29 сен 2015, 15:40

smart писал(а):Источник цитаты Насчет системы пакетов - пользуюсь Zyxware

Насколько помню, в Zyxware скрипты заточены под кинетики и во многих случаях рабочие без модификаций. Почитайте старый форум (нафлеймили там в теме много), копайте в сторону xupnpd.lua

PS У меня сейчас нет IPTV. Использую кабельное DVB-C :P . Чего и всем желаю.

smart
Сообщения: 3
Зарегистрирован: 28 сен 2015, 22:55

Сообщение smart » 02 окт 2015, 12:34

Всем привет!

Несколько дней я боролся с троицей "IPTV (multicast) от провайдера"-"роутер Zyxel Keenetic Extra"-"телек Sony Bravia KD-55X8505B".
Было перечитано море информации, форумов, были обращения к уважаемым Zyxmon'у и Антону (автору xupnpd).

Все дело оказалось в телевизоре, который никак не хотел видеть плейлист с каналами.
Оказалось, что помимо указания в плейлисте type=mpeg1 dlna_extras=none недостаточно и нужно изменить в Медиаплеере (на самом ТВ) тип мультимедиа с "Все" на "Видео". Т.е. телек считает, что выбирая "Все", видео при этом исключается. Такой вот он - Смарт ТВ. Надеюсь, что эта информация кому-то поможет.


Вернуться в «Entware/Qnapware/Optware/Zyxware - обсуждаем репозитории пакетов»

Кто сейчас на конференции

Всего 1 посетитель :: 1 зарегистрированный, 0 скрытых и 0 гостей (основано на активности пользователей за последние 5 минут)
Больше всего посетителей (121) здесь было 18 май 2016, 18:19

Сейчас этот форум просматривают: Baidu [Spider] и 0 гостей