Форум XBMC и Kodi. Помощь, поддержка, обсуждение, плагины.
   

Вернуться   Форум XBMC и Kodi. Помощь, поддержка, обсуждение, плагины. > Разработка > Поддержка локальной разработки модулей

Ответ
 
Опции темы Опции просмотра
Старый 18.07.2015, 13:00   #1
Roman_V_M
Senior Member
 
Аватар для Roman_V_M
 
Регистрация: 12.06.2011
Адрес: Киев
Сообщений: 1,945
По умолчанию Оптимальный торрент стример - обсуждение

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

Цитата:
Сообщение от HAL9000 Посмотреть сообщение
В кратце - Pulsar (ну или его аналог) ведь сам решает как будет выглядеть линк для setResolveUrl(). Поэтому ничего не мешает добавить в URL дополнительную сущность в виде ID файла в раздаче (в протоколе эти ID - обычные порядковые номера, начиная с нуля). И закладки/отметки будут уже относиться к конкретному файлу в раздаче, а не ко всей раздаче.

UPDATE: Вернее, в закладки надо кидать не через setResolveUrl(), а линк на торрент-плеер. Например, - plugin://script.module.player/play/тут-хэш-магнит-сылки/4 будет означать "покажи нам 5-й по счету файл"
Мне тоже приходила в голову эта идея. Принципиальная сложность здесь в том, что в общем случае нам заранее неизвестно, сколько в торренте файлов. С файлами .torrent проще: в них такая информация есть. Но с магнитными ссылками сложнее - ссылку нужно поставить на закачку, чтобы клиент получил данные о торренте от пиров, и только потом мы можем узнать содержимое раздачи. Поэтому обработка магнитной ссылки - процесс небыстрый. А если мы еще захотим добавить дополнительную информацию о компонентах раздачи, например отдельных сериях сериала, обработка будет неприлично долгой.

Цитата:
Но у меня уже есть свое видение как вся эта балалайка должна выглядеть (торрент-плеер), которое созревает года два уже. Я обязательно изложу его на бумаге и поделюсь.
Будет интересно прочитать.
__________________
Координатор русского перевода Kodi:
https://www.transifex.com/projects/p/kodi-main/
------------------------------
Raspberry PI 2 + LibreELEC 8 (Kodi 17)
Samsung Galaxy Tab A 10.1 + Kodi 17 for Android
------------------------------
Читаем и пополняем Википедию форума: http://xbmc.ru/wiki
------------------------------
На любые личные сообщения, не связанные с переводом Kodi, не отвечаю. Для обсуждений и советов есть форум.

Последний раз редактировалось Roman_V_M; 18.07.2015 в 20:05.
Roman_V_M вне форума   Ответить с цитированием
   
Старый 18.07.2015, 15:30   #2
DiMartino
Senior Member
 
Аватар для DiMartino
 
Регистрация: 26.01.2013
Сообщений: 862
Отправить сообщение для DiMartino с помощью Skype™
По умолчанию

Для меня идеальным стримером будет возможность запуска на локальной или удаленной машине, полная кроссплатформенность, возможность работы с xbmcvfs путями без костылей, поддержка торрентов с несколькими файлами.

Как мы знаем все познается в сравнении, поэтому хотел бы узнать мнение про стример на python-libtorrent в Torrenter v2, просто критику или помощь в решении проблем. В любом случае я хочу его улучшать, но у меня закончились идеи, которые я в силах реализовать. Кстати, недавно упростил внешний запуск до "plugin://plugin.video.torrenter/?action=playSTRM&url=URL_ENCODED_MAGNET_PATH_HTTP" по просьбе автора script.eztv2pulsar и подобных скриптов. Так же есть мой пример использования Torrenter во внешнем плагине для EZTV.
Он, конечно, изначально основан на том, что написал slng, но потом я добавлял код steeve из XBMCtorrent, потом сам левый код писал, в общем уже можно запутаться что и откуда я брал. Самое последнее что я добавил, например, это динамическое определение количества чанков сзади файла, потому что на SWESUB.tv чанк 0.5 Мб и формат mp4, а у меня раньше просто скачивались 2 последних, конечно для него не хватало.
__________________
Плагин MyShows.ru (+оценка KinoPoisk.ru) для Kodi http://xbmc.ru/forum/showthread.php?t=3264
Торрент-стример Torrenter v2 http://xbmc.ru/forum/showthread.php?t=6837
DiMartino вне форума   Ответить с цитированием
Старый 20.07.2015, 14:16   #3
TDW1980
Senior Member
 
Аватар для TDW1980
 
Регистрация: 21.06.2011
Сообщений: 2,783
По умолчанию

1. Отдельная служба или модуль
2. Простое и понятное API
3. Выбор файла в торренте
4. кросплатформенность
5. перемотка или воспроизведение с заданной позиции
6. Автоматическая очистка кэша по лимиту или нехватке места
__________________
Мой репозиторий: https://github.com/tdw1980/tdw/raw/master/repository.tdw1980-1.0.2.zip
Отблагодарить:
Master Card: 5331 5729 4236 1079
PayPal: http://paypal.me/tdw1980
TDW1980 вне форума   Ответить с цитированием
Старый 20.07.2015, 15:51   #4
Roman_V_M
Senior Member
 
Аватар для Roman_V_M
 
Регистрация: 12.06.2011
Адрес: Киев
Сообщений: 1,945
По умолчанию

Цитата:
Сообщение от DiMartino Посмотреть сообщение
Для меня идеальным стримером будет возможность запуска на локальной или удаленной машине, полная кроссплатформенность, возможность работы с xbmcvfs путями без костылей, поддержка торрентов с несколькими файлами.
Насчет xbmcvfs непонятно, что имеется в виду. Насколько я понимаю, мы ограничены возможностями libtorrent, который умеет работать только с локальными путями.

Цитата:
Самое последнее что я добавил, например, это динамическое определение количества чанков сзади файла, потому что на SWESUB.tv чанк 0.5 Мб и формат mp4, а у меня раньше просто скачивались 2 последних, конечно для него не хватало.
Спасибо за интересную информацию! Я сталкивался с проблемными mp4, но до сути не докопался.

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

Я уже почти доделал клеент-серверный стример по образцу Пульсара, но с расширенными возможностями и чисто на Питоне, но остались кое-какие моменты. В частности, никак не могу выбрать оптимальный путь работы с многофайловыми раздачами. Технически, это реализовано, но хочется сделать хорошо.
__________________
Координатор русского перевода Kodi:
https://www.transifex.com/projects/p/kodi-main/
------------------------------
Raspberry PI 2 + LibreELEC 8 (Kodi 17)
Samsung Galaxy Tab A 10.1 + Kodi 17 for Android
------------------------------
Читаем и пополняем Википедию форума: http://xbmc.ru/wiki
------------------------------
На любые личные сообщения, не связанные с переводом Kodi, не отвечаю. Для обсуждений и советов есть форум.
Roman_V_M вне форума   Ответить с цитированием
Старый 20.07.2015, 15:58   #5
Roman_V_M
Senior Member
 
Аватар для Roman_V_M
 
Регистрация: 12.06.2011
Адрес: Киев
Сообщений: 1,945
По умолчанию

Цитата:
Сообщение от TDW1980 Посмотреть сообщение
1. Отдельная служба или модуль

5. перемотка или воспроизведение с заданной позиции
Это, наверное, самое сложное. Я пытался реализовать контроль наличия кусков, но безуспешно. Мешает, во-первых, кеширование, а, во-вторых, то, что Коди не любит битые файлы.
При перескоке на нужное место по-идее нужно поставить Коди на паузу, проверить наличие кусков, при необходимости докачать их, а затем продолжить воспроизведение. Фигня в том, что при перескоке на еще нескачанный участок Коди не может надежно стать на паузу.
__________________
Координатор русского перевода Kodi:
https://www.transifex.com/projects/p/kodi-main/
------------------------------
Raspberry PI 2 + LibreELEC 8 (Kodi 17)
Samsung Galaxy Tab A 10.1 + Kodi 17 for Android
------------------------------
Читаем и пополняем Википедию форума: http://xbmc.ru/wiki
------------------------------
На любые личные сообщения, не связанные с переводом Kodi, не отвечаю. Для обсуждений и советов есть форум.
Roman_V_M вне форума   Ответить с цитированием
Старый 25.07.2015, 01:32   #6
HAL9000
Senior Member
 
Аватар для HAL9000
 
Регистрация: 15.03.2012
Сообщений: 1,106
По умолчанию

Цитата:
Сообщение от Roman_V_M Посмотреть сообщение
Мне тоже приходила в голову эта идея. Принципиальная сложность здесь в том, что в общем случае нам заранее неизвестно, сколько в торренте файлов. С файлами .torrent проще: в них такая информация есть. Но с магнитными ссылками сложнее - ссылку нужно поставить на закачку, чтобы клиент получил данные о торренте от пиров, и только потом мы можем узнать содержимое раздачи. Поэтому обработка магнитной ссылки - процесс небыстрый. А если мы еще захотим добавить дополнительную информацию о компонентах раздачи, например отдельных сериях сериала, обработка будет неприлично долгой.
Это не страшно. На самом деле там процесс не такой уж и долгий. Тот же Pulsar, прежде чем запустить просмотр, полностью разруливает магнит. То есть у него на руках уже фактически уже есть торрент-файл. Просто steeve по каким-то причинам не стал добавлять выбор конкретного файла, хотя ему оставалось добавить буквально пару строк (может у него концепт такой).

Цитата:
Сообщение от Roman_V_M Посмотреть сообщение
Будет интересно прочитать.
Да. Обязательно напишу. Может быть не быстро, но постараюсь подробно. Так как это для меня самого будет хорошим ТЗ (чтобы не упустить чего-нибудь важного).
__________________
RuTracker: http://xbmc.ru/forum/showthread.php?t=2243
Ruhunt.Pulsar: http://xbmc.ru/forum/showthread.php?t=6759
Last.VK: http://xbmc.ru/forum/showthread.php?t=3709
Lovi.fm: http://xbmc.ru/forum/showthread.php?t=6758
HAL9000 вне форума   Ответить с цитированием
Старый 28.07.2015, 18:41   #7
DiMartino
Senior Member
 
Аватар для DiMartino
 
Регистрация: 26.01.2013
Сообщений: 862
Отправить сообщение для DiMartino с помощью Skype™
По умолчанию

Пока копался по своим делам на гитхабе обнаружил хорошую штукенцию - btclient. Написана она на питоне с таким же либторрентом, чем-то напоминает YATP с очередями и потоками, а так же http выдачей, но по крайней мере в VLC работает перемотка.
Используются нестандартные питоновские библиотеки, не уверен на счет их доступности под все платформы, я пробовал на Ubuntu это дело запустить.
__________________
Плагин MyShows.ru (+оценка KinoPoisk.ru) для Kodi http://xbmc.ru/forum/showthread.php?t=3264
Торрент-стример Torrenter v2 http://xbmc.ru/forum/showthread.php?t=6837

Последний раз редактировалось DiMartino; 28.07.2015 в 18:57.
DiMartino вне форума   Ответить с цитированием
Старый 28.07.2015, 20:20   #8
Roman_V_M
Senior Member
 
Аватар для Roman_V_M
 
Регистрация: 12.06.2011
Адрес: Киев
Сообщений: 1,945
По умолчанию

Цитата:
Сообщение от HAL9000 Посмотреть сообщение
Это не страшно. На самом деле там процесс не такой уж и долгий. Тот же Pulsar, прежде чем запустить просмотр, полностью разруливает магнит. То есть у него на руках уже фактически уже есть торрент-файл. Просто steeve по каким-то причинам не стал добавлять выбор конкретного файла, хотя ему оставалось добавить буквально пару строк (может у него концепт такой).
Технически это сделать не так сложно, для меня проблема в том, чтобы сделать удобно. Пока я у себя обошелся простым всплывающим списком.

Тут ведь в чем фигня. API плагинов Коди допускает 3 типа вызовов: вируальная папка (isFolder=True), проигрываемый файл ('IsPlayable'='true' и isFolder=False) и прочее (isFolder=False). Тип вызова элемента задается заранее при формировании списка, и в рантайме его менять нельзя.
В идеале схема должна была бы быть такая: мы открываем торрент, получаем список файлов, а дальше, если файл один, начинаем воспроизведение. Если же их несколько, формируем список для выбора.
Либо можно формировать список всегда, независимо от количества файлов, но тогда усложняется навигация.

Цитата:
Сообщение от DiMartino Посмотреть сообщение
Пока копался по своим делам на гитхабе обнаружил хорошую штукенцию - btclient. Написана она на питоне с таким же либторрентом, чем-то напоминает YATP с очередями и потоками, а так же http выдачей, но по крайней мере в VLC работает перемотка.
Насколько я понимаю, полноценной перемотки при стриминге торрента всё равно не будет, разве что файл будет скачиваться быстрее, чем скорость перемотки. Теоретически, можно реализовать прыжки, но только если всё управление будет завязано на плагин, т. к. класс xbmc.Player не предоставляет достаточно контроля. А свое управление будет сложно сделать так, чтобы оно не конфликтовало с управлением Коди. Но, возможно, я в этом плане что-то упускаю.
__________________
Координатор русского перевода Kodi:
https://www.transifex.com/projects/p/kodi-main/
------------------------------
Raspberry PI 2 + LibreELEC 8 (Kodi 17)
Samsung Galaxy Tab A 10.1 + Kodi 17 for Android
------------------------------
Читаем и пополняем Википедию форума: http://xbmc.ru/wiki
------------------------------
На любые личные сообщения, не связанные с переводом Kodi, не отвечаю. Для обсуждений и советов есть форум.
Roman_V_M вне форума   Ответить с цитированием
Старый 28.07.2015, 20:31   #9
DiMartino
Senior Member
 
Аватар для DiMartino
 
Регистрация: 26.01.2013
Сообщений: 862
Отправить сообщение для DiMartino с помощью Skype™
По умолчанию

Цитата:
Сообщение от Roman_V_M Посмотреть сообщение
Технически это сделать не так сложно, для меня проблема в том, чтобы сделать удобно. Пока я у себя обошелся простым всплывающим списком.
На вкус и цвет... но я бы применил (у себя применяю) обрезание одинаковых частей в именах, все таки ограничение по длине большое.


Цитата:
Сообщение от Roman_V_M Посмотреть сообщение
Насколько я понимаю, полноценной перемотки при стриминге торрента всё равно не будет, разве что файл будет скачиваться быстрее, чем скорость перемотки. Теоретически, можно реализовать прыжки, но только если всё управление будет завязано на плагин, т. к. класс xbmc.Player не предоставляет достаточно контроля. А свое управление будет сложно сделать так, чтобы оно не конфликтовало с управлением Коди. Но, возможно, я в этом плане что-то упускаю.
А я думаю, если плагин будет понимать с какого куска файла какая секунда начинается и сможет проверить наличие этого куска, то плагин сам будет ставить паузу и возобновлять воспроизведение, без xbmc.Player, от которого нужно будет только подчиниться и дать секунду куда перемотали.
__________________
Плагин MyShows.ru (+оценка KinoPoisk.ru) для Kodi http://xbmc.ru/forum/showthread.php?t=3264
Торрент-стример Torrenter v2 http://xbmc.ru/forum/showthread.php?t=6837
DiMartino вне форума   Ответить с цитированием
Старый 28.07.2015, 22:17   #10
Roman_V_M
Senior Member
 
Аватар для Roman_V_M
 
Регистрация: 12.06.2011
Адрес: Киев
Сообщений: 1,945
По умолчанию

Цитата:
Сообщение от DiMartino Посмотреть сообщение
А я думаю, если плагин будет понимать с какого куска файла какая секунда начинается и сможет проверить наличие этого куска, то плагин сам будет ставить паузу и возобновлять воспроизведение, без xbmc.Player, от которого нужно будет только подчиниться и дать секунду куда перемотали.
Я со своей реализацией торрент-стримера копаюсь достаточно давно, и в одном из вариантов такой функционал был. Но не работал. В ближних пределах от точки воспроизведения картину портит кэш Коди, который норовит захватить в себя недокачанные фрагменты. А при прыжке на дальние расстояния плеер Коди не может надежно стать на паузу на битом участке и, опять таки, пытается захватить этот участок в кэш. В идеале команду на прыжок нужно перехватывать до самого прыжка, чтобы поставить плеер на паузу, проверить место прыжка, докачать, если нужно, и перекинуть плеер на нужный уже скачанный участок. Однако в API такого события, которое можно перехватить до прыжка, нет. Плюс, опять таки, нет гарантии, что нужный участок не окажется в кэше до того, как мы его скачаем. Ведь торрент-стримминг базируется на обмане плеера Коди, который думает, что проигрывает целый файл.
__________________
Координатор русского перевода Kodi:
https://www.transifex.com/projects/p/kodi-main/
------------------------------
Raspberry PI 2 + LibreELEC 8 (Kodi 17)
Samsung Galaxy Tab A 10.1 + Kodi 17 for Android
------------------------------
Читаем и пополняем Википедию форума: http://xbmc.ru/wiki
------------------------------
На любые личные сообщения, не связанные с переводом Kodi, не отвечаю. Для обсуждений и советов есть форум.
Roman_V_M вне форума   Ответить с цитированием
Ответ
 


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Торрент-ТВ и iPhone/iPad Alex2013 Поддержка платформы Mac 28 13.03.2015 17:13
Торрент ТВ для убунту dimmi777 Помощь по плагинам 225 22.08.2014 17:40
Pivos xios ds и торрент тв Wolk Помощь по плагинам 0 24.02.2014 00:08
торрент Алексей Подсказки, описания и FAQ по XBMC 1 14.01.2011 22:43


Текущее время: 10:38. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.