xupnpd - eXtensible UPnP agent

Используем пакеты, расширяющие возможности оборудования
ZigZag
Сообщения: 135
Зарегистрирован: 28 окт 2015, 03:43

Сообщение ZigZag » 09 май 2018, 09:20

Спасибо :)
Keenetic Omni II [v2.13.C.0.0-1]; Zyxel Keenetic [V1.00(BFW.4.4)D0]

Vitaly2067
Сообщения: 1
Зарегистрирован: 21 май 2018, 09:04

Сообщение Vitaly2067 » 21 май 2018, 09:19

Всем привет! Вот такой вопрос. Плейлист от ЭдемТВ на тел.Филиппс 2012г.4000серии с помощью xupnpd, hls plugin играет первый chunk и перескакивает на другой канал(причем хотя бы начало показывать когда прописал в плейлисте dlna_extras=none). На компе vlc все нормально. HLS plugin отключаю в плейлисте, включаю hlspxd, тогда тв не видит файла, vls норм. Роутер Кинетик Ультра черный. Какие нюансы могут быть?

bolvan
Сообщения: 12
Зарегистрирован: 03 июл 2018, 12:46

Сообщение bolvan » 03 июл 2018, 13:05

maza11 писал(а):Источник цитаты

друзья, прошу помочь
ест mrfvthf 960P
выдающая поток

rtsp://192.168.0.45:554/user=admin_pass ... eal_stream
надо через DLNA запустить это на телек, какой плагин нужен и как это сделать


Запоздало, конечно, но поделюсь своим решением. Мало ли кто нагуглит и будет хелп.

Конечно, лучше всего было бы, если бы сам телик понимал rtsp. xupnpd ему просто передает
ссыль, режим проксирования отключен. Телик сам идет и забирает поток rtsp.
Чуть более худшим решением было бы,если бы xupnpd умел проксировать через себя rtsp, преобразовывая его в http.
Пока это в состоянии TODO в исходниках.

На моем samsung E серии 2012 года не работает не то что rtsp, но даже не сработала
передача ссылки на http без проксирования. Телик попросту туда не пошел (проверено в tcpdump),
показывая ошибку.
Реально работает только режим proxy в xupnpd на источник http.

Значит необходимо завернуть rtsp в http, дальше все просто. Сама камера это опять же не умеет.
Но я нашел довольно простой выход.

1.Устанавливаем ffmpeg

2.Поднимаем любой http сервер с поддержкой cgi. Я выбрал lighttpd. Важно настроить его так, чтобы ответ от cgi не кэшировался полностью сервером, а выплевывался по мере поступления. Иначе он будет глотать в себя безконечный стрим.

Добавляем в /etc/lighttpd/lighttpd.conf

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

server.modules += ( "mod_cgi" )
server.document-root        = "/home/www"
server.stream-response-body = 2
server.port                 = 81
$HTTP["url"] =~ "^/cgi-bin/" {
    cgi.assign = ( "" => "" )
}


mkdir -p /home/www/cgi-bin
Перезапускаем lighttpd, чтобы конфиг схватился

3.Кладем в /home/www/cgi-bin/cam.ts

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

#!/bin/sh echo Content-Type: video/mp4
echo Connection: close
echo
exec ffmpeg -probesize 32 -i "rtsp://cam-hall.lan/user=cam&password=&channel=1&stream=0" -codec copy -f mpegts pipe:1


chmod +x /home/www/cgi-bin/cam.ts

4.Пробуем проиграть контент через vlc
vlc http://host:81/cgi-bin/cam.ts
должно играться

5.Подсовываем xupnpd в плейлист ссылку на http://host:81/cgi-bin/cam.ts
Последний раз редактировалось bolvan 04 июл 2018, 12:13, всего редактировалось 2 раза.

ZigZag
Сообщения: 135
Зарегистрирован: 28 окт 2015, 03:43

Сообщение ZigZag » 03 июл 2018, 13:48

На моем samsung E серии 2012 года не работает не то что rtsp, но даже не сработала
передача ссылки на http без проксирования. Телик попросту туда не пошел (проверено в tcpdump),
показывая ошибку.
ContentDirectory мне не удалось "сломать", возможно у E-к есть некие особенности работы с протоколом о которых я не в курсе, а вот через SetAVTransport ссылки на мою E-ку 2012-го вполне спускаются. По крайней мере спускаются udp и http стримы на видео с резолвингом и аудио-стримы без резолвинга (т.е. ip-адреса) и думаю вполне должны спускаться rtsp и rtp стримы т.к спускаемый параметр протокола в protocolinfo в доках значится как "rtsp-rtp-udp".
1.Устанавливаем ffmpeg
Как по мне, но ffmpeg на роутере - не самая лучшая идея, имхо. Слишком он прожорливый до cpu :/

p.s. Если будут ещё какие наработки по upnp или удастся заставить тв ходить напрямую по ссылкам без прокси через xupnpd - пишите.
Keenetic Omni II [v2.13.C.0.0-1]; Zyxel Keenetic [V1.00(BFW.4.4)D0]

bolvan
Сообщения: 12
Зарегистрирован: 03 июл 2018, 12:46

Сообщение bolvan » 03 июл 2018, 20:07

ZigZag писал(а):Источник цитаты Как по мне, но ffmpeg на роутере - не самая лучшая идея, имхо. Слишком он прожорливый до cpu :/


Задача ffmpeg лишь преобразование протокола rtsp в mpegts => stdout, задача http сервера преобразование stdout => http
Там нигде нет перекодирования.
У меня роутер сделан на базе industrial PC celeron J1900 с 4 eth портами. Ffmpeg кушает около 1% одного ядра на камере 720p

bolvan
Сообщения: 12
Зарегистрирован: 03 июл 2018, 12:46

Сообщение bolvan » 03 июл 2018, 20:51

ZigZag писал(а):Источник цитаты через SetAVTransport ссылки на мою E-ку 2012-го вполне спускаются


Скрипты Lua для xupnpd сделаны под ContentDirectory. Придется переписывать.
Или уже есть готовое ?

ZigZag
Сообщения: 135
Зарегистрирован: 28 окт 2015, 03:43

Сообщение ZigZag » 04 июл 2018, 06:11

bolvan писал(а): У меня роутер сделан на базе industrial PC celeron J1900 с 4 eth портами. Ffmpeg кушает около 1% одного ядра на камере 720p
Речь была про бытовой роутер средней руки. Такой, который есть у большинства юзеров.
bolvan писал(а):Скрипты Lua для xupnpd сделаны под ContentDirectory. Придется переписывать.
Или уже есть готовое ?
Нет. Готового нет. Ручная отправка ссылок на ТВ. Хотя мне ваша идея нравится но с lua у меня очень туго, можно сказать почти никак.
Keenetic Omni II [v2.13.C.0.0-1]; Zyxel Keenetic [V1.00(BFW.4.4)D0]

bolvan
Сообщения: 12
Зарегистрирован: 03 июл 2018, 12:46

Сообщение bolvan » 04 июл 2018, 09:32

ZigZag писал(а):
bolvan писал(а): У меня роутер сделан на базе industrial PC celeron J1900 с 4 eth портами. Ffmpeg кушает около 1% одного ядра на камере 720p
Речь была про бытовой роутер средней руки. Такой, который есть у большинства юзеров.


netgear wndr 3800. Mips 600 Mhz 128 mb ram
cpu 5%, mem 5 Mb
еще ~2% сожрет lighttpd
на таком ящике 10-15 потоков можно гонять одновременно

update. ffmpeg в начале пытается декодировать стрим, видимо чтобы понять его характеристики
На netgear это выливается в ~10-20 секунд начального протормаживания на 100% cpu.
потом он переходит на copy , и usage падает до указанных значений
Последний раз редактировалось bolvan 04 июл 2018, 10:18, всего редактировалось 1 раз.

bolvan
Сообщения: 12
Зарегистрирован: 03 июл 2018, 12:46

Сообщение bolvan » 04 июл 2018, 10:18

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

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

[rtsp @ 0x77b45900] max delay reached. need to consume packet
[rtsp @ 0x77b45900] RTP: missed 36 packets
[h264 @ 0x77e27890] error while decoding MB 18 14, bytestream -9


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

ZigZag
Сообщения: 135
Зарегистрирован: 28 окт 2015, 03:43

Сообщение ZigZag » 04 июл 2018, 11:00

netgear wndr 3800. Mips 600 Mhz 128 mb ram
cpu 5%, mem 5 Mb
еще ~2% сожрет lighttpd
на таком ящике 10-15 потоков можно гонять одновременно
И снова вы приводите в пример "мажорное" железо. Понизьте планку вдвое-втрое и попробуйте там завести ffmpeg даже без транскода.
Keenetic Omni II [v2.13.C.0.0-1]; Zyxel Keenetic [V1.00(BFW.4.4)D0]


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

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

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

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