xupnpd - eXtensible UPnP agent

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

Сообщение mesb » 03 мар 2020, 21:27

Отличный вопрос кстати.
Не хватает мне этого когда радио играет поток с длна сервера.

Аватара пользователя
ZigZag
Сообщения: 225
Зарегистрирован: 28 окт 2015, 03:43

Сообщение ZigZag » 04 мар 2020, 04:38

В общем, поигрался с yt-proxy :) Занятная тулза ))) Всё завелось на тестовой виртуальной машине со старичком Antix'ом на debian'e x32

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

Linux antiX1 3.7.10-antix.5-486-smp #2 SMP Tue Oct 15 20:58:22 EEST 2013 i686
Сам бинарник слегка рихтанул хекс-редактором сменив youtube-dl на youtubb-dl (благо, он там лишь разово встретился) дабы не пришлось заменять оригинальный бинарник скриптом-обёрткой. При холостом запуске обёртки с перенаправлением входных данных бинарь зело ругалась :D

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

2020/03/03 13:08:13 Get : unsupported protocol scheme ""
2020/03/03 13:08:13 http: panic serving 127.0.0.1:47691: runtime error: invalid memory address or nil pointer dereference
goroutine 6 [running]:
net/http.(*conn).serve.func1(0x18fb2420)
        /usr/lib64/go/src/net/http/server.go:1697 +0x9f
panic(0x823a960, 0x83a1420)
        /usr/lib64/go/src/runtime/panic.go:491 +0x1d0
main.PlayVideo(0x8377ee0, 0x18f687e0, 0x18f74480)
        /home/mejgun/scripts/go/yt-proxy/streamer.go:58 +0x4d0
main.makeHandler.func1(0x8377ee0, 0x18f687e0, 0x18f74480)
        /home/mejgun/scripts/go/yt-proxy/streamer.go:107 +0xcf
net/http.HandlerFunc.ServeHTTP(0x18f0c548, 0x8377ee0, 0x18f687e0, 0x18f74480)
        /usr/lib64/go/src/net/http/server.go:1918 +0x34
net/http.(*ServeMux).ServeHTTP(0x83a6a80, 0x8377ee0, 0x18f687e0, 0x18f74480)
        /usr/lib64/go/src/net/http/server.go:2254 +0xf0
net/http.serverHandler.ServeHTTP(0x18f74280, 0x8377ee0, 0x18f687e0, 0x18f74480)
        /usr/lib64/go/src/net/http/server.go:2619 +0x8e
net/http.(*conn).serve(0x18fb2420, 0x8378480, 0x18f40a80)
        /usr/lib64/go/src/net/http/server.go:1801 +0x5d1
created by net/http.(*Server).Serve
        /usr/lib64/go/src/net/http/server.go:2720 +0x1f6
но данные тем не менее перенаправляла :D Когда начал скриптом отдавать в stdout ссылку, ругаться перестала ))) В принципе, получилось соорудить для ютуба на базе баша и пары утилит велосипед, который вроде повеселее работает, чем youtube-dl, но у меня пока затык с декодингом сигнатур из "cipher" - ссылок. В сети вроде есть решения на питоне, но они включены в общий массив скриптов и я хз как их оттуда вычленить и оформить отдельным скриптом т.к. с питоном я дел практически не имел.

Помимо собственно ютуба, решил проверить работу проксика в связке с youtube-dl и другими ресурсами, но начав на vimeo, на нём же и закончил :D т.к. проксик послал лесом при скармливании ссылки, а "youtube-dl -g" отдал вместо .mp4 m3u8 (hls), а с "(mp4)[height<=720]" так вообще .mpd (хотя у vimeo при этом есть mp4). Посему я подозреваю, что что-то похожее будет и с другими ресурсами и решил пока более не эксперементировать. Хотя подумалось, что прикрутить бы ко всему этому делу ту тулзу (запамятовал название), которая перегоняет hls в монолитный стрим и отдавать его проксику было бы неплохо т.к. даже на ютубе в числе прочего есть и hls (сам я подобное не осилю, просто высказываю мысли вслух).

P.S. Имхо, этот проект надо выделить отдельным git'ом, добавить исходники (я врятли там что-то пойму, но я думаю многим людям этот проект будет интересен) и по возможности подкрутить, добавив возможность свободного запуска бинарника или скрипта (который будет в stdout отдавать передаваемую ссылку) и регулировку передаваемых ему параметров.
Keenetic Omni II [v2.13.C.0.0-1]; Zyxel Keenetic [V1.00(BFW.4.4)D0]

Аватара пользователя
ZigZag
Сообщения: 225
Зарегистрирован: 28 окт 2015, 03:43

Сообщение ZigZag » 04 мар 2020, 07:04

mesb писал(а):Отличный вопрос кстати.
Не хватает мне этого когда радио играет поток с длна сервера.
Помнится разбирал этот вопрос год или полтора назад. Всех подробностей не помню, но эти данные зашиты в метаданные потока и выдаются лишь хитровыделанным запросом плеера, плюс данные обновляются динамически по ходу воспроизведения (подгружается название следующего трека например). При проксировании через xupnpd в текущем виде этот трюк не пройдёт по идее. Это надо городить отдельные костыли :(
Keenetic Omni II [v2.13.C.0.0-1]; Zyxel Keenetic [V1.00(BFW.4.4)D0]

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

Сообщение mesb » 04 мар 2020, 18:54

ZigZag писал(а):Источник цитаты проксик послал лесом при скармливании ссылки, а "youtube-dl -g" отдал вместо .mp4 m3u8 (hls), а с "(mp4)[height<=720]" так вообще .mpd (хотя у vimeo при этом есть mp4). Посему я подозреваю, что что-то похожее будет и с другими ресурсами и решил пока более не эксперементировать

Ну вы чего на первом шаге то встали, осталось то совсем чуть чуть.
Я вам параметры для чего привёл, чтобы вы могли посмотреть что в итоге выдаёт ютуб дл.
Поидее вы их все фильтруете скриптом.
Смотрите, напримере вимео:
Смотрим чо она нам там отдаёт если её спросить:
youtube-dl -F https://vimeo.com/164438721

Вроде как действительно есть нужные данные среди нужных нам:

 
http-720p mp4 1280x720 25fps
hls-akfire_interconnect_quic-2471 mp4 1280x720 2471k , avc1.640020, 25.0fps, video only
hls-fastly_skyfire-2471 mp4 1280x720 2471k , avc1.640020, 25.0fps, video only
dash-akfire_interconnect_quic-video-521670601 mp4 1280x720 DASH video 3363k , mp4_dash container, avc1.640020, 25fps, mp4a.40.2 (48000Hz)
dash-fastly_skyfire-video-521670601 mp4 1280x720 DASH video 3363k , mp4_dash container, avc1.640020, 25fps, mp4a.40.2 (48000Hz)
Свернуть


Однако, если вы неменяя параметров скриптом, пропустите "(mp4)[height<=720]" то вот что будет:

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

youtube-dl -f "(mp4)[height<=720]" -g vimeo.com/164438721
WARNING: The url doesn't specify the protocol, trying with http
https://skyfire.vimeocdn.com/1583340098-0xbdab57e16d666a8d994c58328d96e3f306067030/164438721/video/521670602,521670601,521670594,521670592/master.mpd?base64_init=1

Это тосамое мпд, потомушто ютуб дл выдал максимальный вариант, всёравно что если бы вы выбрали это:

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

youtube-dl -f dash-fastly_skyfire-video-521670601 -g vimeo.com/164438721
WARNING: The url doesn't specify the protocol, trying with http
https://skyfire.vimeocdn.com/1583340445-0x961e23fcb63bbbbc989143ef5d8c0ac82395c204/164438721/video/521670602,521670601,521670594,521670592/master.mpd?base64_init=1


Посмотрите внимательно на левую часть того что выдалось когда мы спросили ютуб дл о разных форматах.
Вам нужно баш скриптом, заменять конструкцию: "(mp4)[height<=720]" на http-720p.
И вы получите искомое:

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

youtube-dl -f http-720p -g vimeo.com/164438721
WARNING: The url doesn't specify the protocol, trying with http
https://vod-progressive.akamaized.net/exp=1583341088~acl=%2A%2F521670601.mp4%2A~hmac=0f4a61ec12418052c2d958412e91d984e57c74f169e53959199df377301e4337/vimeo-prod-skyfire-std-us/01/2887/6/164438721/521670601.mp4



На деле возможно можно к вимео подобраться более элегантно, но надо изучать как подобрать параметры:
https://github.com/ytdl-org/youtube-dl#format-selection
А вопросы уже такие задавались кстати:
https://github.com/ytdl-org/youtube-dl/issues/8017

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

Сообщение mesb » 04 мар 2020, 22:46

Ещё также можно присоединиться к разработке:
https://github.com/mejgun/yt-proxy

Код писался очень давно и "на коленке" в целях просто проверить получится ли.

Аватара пользователя
ZigZag
Сообщения: 225
Зарегистрирован: 28 окт 2015, 03:43

Сообщение ZigZag » 19 мар 2020, 06:16

mesb писал(а):Ну вы чего на первом шаге то встали, осталось то совсем чуть чуть.
Да я в том смысле, что от затеи и не отказываюсь, а просто откладываю, для более детальной проработки позднее.
Это тосамое мпд, потомушто ютуб дл выдал максимальный вариант, всёравно что если бы вы выбрали это:
Понятно. Надо будет взяться за чтение талмуда для youtube-dl. Ман к нему разросся до неприличных размеров. Им уже давно переименовать утилиту. Это практически аналог USD под win.
mesb писал(а):Посмотрите внимательно на левую часть того что выдалось когда мы спросили ютуб дл о разных форматах.
Вам нужно баш скриптом, заменять конструкцию: "(mp4)[height<=720]" на http-720p.
И вы получите искомое:
Понял. Спасибо :)
mesb писал(а):Ещё также можно присоединиться к разработке:
Да я бы с радостью, да моих навыков не хватит. Плюс про GO я узнал от вас же. Вот сейчас сижу думаю, как с имеющимся у меня кросс-компилятором (gcc) собрать yt-proxy под плеер на mipsel, который у меня выступает в качестве сервера.
Keenetic Omni II [v2.13.C.0.0-1]; Zyxel Keenetic [V1.00(BFW.4.4)D0]

Аватара пользователя
ZigZag
Сообщения: 225
Зарегистрирован: 28 окт 2015, 03:43

Сообщение ZigZag » 19 мар 2020, 06:24

К слову о компиляции. Никто случаем не собирал бинарники hlspxd под win и linux на базе исходников из entware ? На этих платформах тоже не помешала данная тулза. Ну и раз пошла такая пьянка - тот же вопрос, но поводу xupnpd2 ))) Готовых сборок в сети я не обнаружил :(
Keenetic Omni II [v2.13.C.0.0-1]; Zyxel Keenetic [V1.00(BFW.4.4)D0]

sterhv
Сообщения: 22
Зарегистрирован: 25 фев 2020, 12:11

Сообщение sterhv » 20 мар 2020, 05:44

камрады, шалом
прошу помощи в установке/настройке xupnpd на KN-1410 ...
ставлю xupnpd2 - вебморда на порту 4044 не открывается, хотя сам сервер в сети виден ...
снес xupnpd2, поставил xupnpd ...
xupnpd запускается, вебморда открывается, плейлист закинул - на ps3 не показывает :( выдает "Unable to probe file: invalid data found when processing input"
сам плейлист явно живой, ибо непосредственно с той же ps3 все работает
подвинул вебморду xupnpd на 4144 чтобы не мешался и снова поставил xupnpd2
в итоге ps3 видит оба сервера, xupnpd и xupnpd2, но ps3 ни с одного потоки не открывает :(
что делать, ума не приложу, plz help :evil:

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

Сообщение mesb » 21 мар 2020, 14:42

sterhv писал(а):Источник цитаты плейлист закинул

Что там внутри плейлиста то хоть?

sterhv
Сообщения: 22
Зарегистрирован: 25 фев 2020, 12:11

Сообщение sterhv » 21 мар 2020, 15:07

mesb писал(а):Источник цитаты Что там внутри плейлиста то хоть?

#EXTM3U
#EXTINF:-1,=== Обновлён: 17.12.2019 ===
https://ххххххх.ru/wp-content/uploads/2 ... or7890.png
#EXTINF:-1,=== Обсуждение: smarttvnews.ru ===
https://ххххххх.ru/wp-content/uploads/2 ... or7890.png
#EXTINF:-1,Discovery Channel
http://78.157.230.19/streaming/discover ... ylist.m3u8
#EXTINF:-1,Discovery Channel
http://109.248.236.41:4433/udp/238.1.1.124:1234
#EXTINF:-1,Discovery Channel
http://fullhdp.servep2p.com:3500/gokhan ... hanc/37688
#EXTINF:-1,National Geographic
http://178.124.183.5/hls/CH_NATGEO/vari ... ?version=2
#EXTINF:-1,National Geographic HD
http://185.176.117.243/live/eds/NatGeoH ... GeoHD.m3u8
#EXTINF:-1,National Geographic HD
http://88.119.220.2/live/eds/NatGeoHD/H ... GeoHD.m3u8
#EXTINF:0,Nat Geo Wild
http://178.124.183.5/hls/ESCMSBZJ8X/var ... ?version=2
....

ну и так далее ...


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

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

Всего 2 посетителя :: 2 зарегистрированных, 0 скрытых и 0 гостей (основано на активности пользователей за последние 5 минут)
Больше всего посетителей (162) здесь было 16 ноя 2019, 17:33

Сейчас этот форум просматривают: CommonCrawl [Bot], Yandex [Bot] и 0 гостей