xupnpd - eXtensible UPnP agent

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

Сообщение sysmer » 01 мар 2016, 20:01

Написал новый сервер для ретрансляции hls и rtmp потоков. Отказался от использования curl, только для rtmp видео нужно rtmpdump, а для самого сервера нужен lua и модуль к нему socket.
Заточен для работы с телевизором (с lg smart tv точно).
Выяснил, что телевизор работает с hls потоком так:
читает кусочек первого чанка из плейлиста
переподключается
читает весь плейлист
а потом ему только потихоньку подсовывать по строчке плейлиста.
По такому алгоритму работает новая версия моего сервера. Видео начинает весьма быстро и стабильно. Желающие потестить - прошу!
Проверена работа с peers.tv edem.tv pik.tv
Запуск:

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

lua vps_tv.lua

или с указанием путей, к примеру так

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

/opt/bin/lua /opt/vps_tv.lua

по умолчанию запустится на 8000 порту. Посему синтаксис плелиста для xupnpd такой:

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

http://127.0.0.1:8000/http://msk3.peers.tv/streaming/rain/16/tvrecw/playlist.m3u8

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

maloy
Сообщения: 18
Зарегистрирован: 06 мар 2016, 10:28

Сообщение maloy » 06 мар 2016, 20:47

Очень извиняюсь, знаю, что необразованных здесь не любят, но прошу снисходительности
Entware-ng на Zyxel Giga II
установил xupnpd, udpxy не устанавливал, поместил vps_tv.lua в папку /opt/root, запускаю из терминала командой

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

lua vps_tv.lua &
, все какое то время работает, потом вываливает

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

lua: vps_tv.lua:25: attempt to concatenate local 'msg' (a nil value)
stack traceback:
        vps_tv.lua:25: in main chunk
        [C]: ?

понимает кто в чем причина ошибки и как ее поправить?
после ошибки нужно

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

lua vps_tv.lua &
перезапускать по новой
помогите со скриптом автоматического запуска и перезапуска

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

lua vps_tv.lua &

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

Сообщение sysmer » 07 мар 2016, 20:33

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

maloy
Сообщения: 18
Зарегистрирован: 06 мар 2016, 10:28

Сообщение maloy » 07 мар 2016, 21:40

sysmer, огромное спасибо за вашу работу, очень полезное дополнение к xupnpd
sysmer писал(а):Источник цитаты еще волнует вопрос, а долго показывается тв пока не вылетает по ошибке?

по разному, 1-3-20 минут, какой то конкретной зависимости я не нашел, помоему это происходит когда происходит затык в потоке. edem.tv не самый стабильный сервер в моих краях (РБ).
Есть еще попутный вопрос
я пробую добавить в плейлист эдема или свой составленный по аналогии, ссылку вида

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

http://127.0.0.1:8000/http://178.124.141.162:1935/liveedge/TNT_wqecwr_360p.stream/playlist.m3u8

и подключение невозможно, хотя ссылка 100% работчая (идет в виджете для СмартТВ nStreamLmod) может поток не тот, посмотрите если возможно.
И еще просьба из прошлого поста, дайте код для скрипта в init.d для старта/рестарта lua vps_tv.lua

maloy
Сообщения: 18
Зарегистрирован: 06 мар 2016, 10:28

Сообщение maloy » 07 мар 2016, 21:59

Протестил новый vps_tv.lua, теперь процесс lua vps_tv.lua не вылетает, но на телевизоре слал вылетать сам UPnP-IPTV "устройство отключено" через пары минут вещания, надо копать что то в конфиге, или может iptables, но я в этом ничего не понимаю, помогите неразумному :oops:
ifconfig

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

br0       Link encap:Ethernet  HWaddr EC:43:F6:05:31:60
          inet addr:192.168.1.1  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::1/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:353280 errors:0 dropped:0 overruns:0 frame:0
          TX packets:915097 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:38207094 (36.4 MiB)  TX bytes:1111883229 (1.0 GiB)

eth2      Link encap:Ethernet  HWaddr EC:43:F6:05:31:60
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1442981 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1177666 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:1425144642 (1.3 GiB)  TX bytes:337998829 (322.3 MiB)
          Interrupt:22

eth2.1    Link encap:Ethernet  HWaddr EC:43:F6:05:31:60
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:161384 errors:0 dropped:0 overruns:0 frame:0
          TX packets:248025 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:19595308 (18.6 MiB)  TX bytes:233378483 (222.5 MiB)

eth2.2    Link encap:Ethernet  HWaddr EC:43:F6:05:31:61
          inet addr:10.50.9.40  Bcast:10.50.9.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1262132 errors:0 dropped:0 overruns:0 frame:0
          TX packets:489971 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:1372923892 (1.2 GiB)  TX bytes:50465999 (48.1 MiB)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:34846 errors:0 dropped:0 overruns:0 frame:0
          TX packets:34846 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:246550041 (235.1 MiB)  TX bytes:246550041 (235.1 MiB)

ra0       Link encap:Ethernet  HWaddr EC:43:F6:05:31:60
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:684763 errors:0 dropped:0 overruns:0 frame:0
          TX packets:730853 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:79119676 (75.4 MiB)  TX bytes:951837881 (907.7 MiB)
          Interrupt:25
Свернуть

xupnpd.lua

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

cfg={}

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

-- '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='vlan2'

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

-- 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='mpeg'

-- 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.033'
cfg.log_ident=arg[1] or 'xupnpd'
cfg.pid_file='/opt/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')
Свернуть

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

maloy
Сообщения: 18
Зарегистрирован: 06 мар 2016, 10:28

Сообщение maloy » 08 мар 2016, 11:43

Поэкспериментировал еще, например канал "Дисней" из эдемовского плейлиста идет стабильно и не вылетает, скорее всего поток на нем более стабилен, а вот к примеру канал СТС вылетает часто, видимо идет затык в потоке и телевизор сбрасывает соединение с DLNA сервером, не знаю возможно ли это как-то починить программно в самом xupund или vps_tv.lua чтобы при затыках в потоке избавиться от отключения от DLNA сервера, например чтобы анализ потока и коррекция очибок потока производилась средствами xupund

maloy
Сообщения: 18
Зарегистрирован: 06 мар 2016, 10:28

Сообщение maloy » 09 мар 2016, 00:19

Нужный мне плейлист видео вещает в кодеке avc1, а аудио в кодеке mp4a, в файле xupnpd_mime.lua поддержки этих форматов нету, можно поддержку этих кодеков туда добавить и как?

mihd
Сообщения: 43
Зарегистрирован: 28 окт 2015, 16:45

Сообщение mihd » 10 мар 2016, 16:11

maloy писал(а):Нужный мне плейлист видео вещает в кодеке avc1, а аудио в кодеке mp4a, в файле xupnpd_mime.lua поддержки этих форматов нету, можно поддержку этих кодеков туда добавить и как?

А сам приемник (телевизор) может проигрывать эти форматы ? От того что Вы пропишите эти форматы в файле xupnpd_mime.lua чуда не произойдет, если телевизор, к примеру, не может воспроизводить mp4a. Точнее сказать, "прописка" зависит от того, на чем Вы будете воспроизводить поток.

maloy
Сообщения: 18
Зарегистрирован: 06 мар 2016, 10:28

Сообщение maloy » 10 мар 2016, 21:19

mihd, да, не получиться, попробовал воспроизвести через plex, не получилось. Не воспроизвелось и на телевизоре со SmartTV где этот же плейлист крутиться через виджет nStresmLmod, что получается nStresmLmod умеет в транскодирование потока :?

mihd
Сообщения: 43
Зарегистрирован: 28 окт 2015, 16:45

Сообщение mihd » 11 мар 2016, 01:03

maloy писал(а):Источник цитаты mihd, да, не получиться, попробовал воспроизвести через plex, не получилось. Не воспроизвелось и на телевизоре со SmartTV где этот же плейлист крутиться через виджет nStresmLmod, что получается nStresmLmod умеет в транскодирование потока :?

Не совсем понятно, что за кодек аудио mp4a.. Насколько я знаю, mp4a - это "контейнер" аудио-файлов (не кодек), в котором кодеком может быть либо Apple Lossless Encoder, либо AAC. Может Вы все-таки имели ввиду AAC ? Если так, то AVC+AAC без проблем должен проигрываться на Samsung Smart TV.


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

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

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость