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

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

Ответ
 
Опции темы Опции просмотра
Старый 31.07.2015, 12:52   #31
srg70
Senior Member
 
Аватар для srg70
 
Регистрация: 27.12.2011
Адрес: Нетания, Израиль
Сообщений: 1,592
По умолчанию

Цитата:
Сообщение от Roman_V_M Посмотреть сообщение
Короче, можно написать кастомный обработчик файлов с интерфейсом итератора, который будет передавать файл от сервера клиенту (Коди). Если Коди запрашивает отсутствующий кусок, обработчик файлов, в свою очередь, начинает буферизацию, ставя первому куску запрошенного фрагмента максимальный приоритет. При этом обработчик следит за таймаутом и как только таймаут подходит к концу, скармливает Коди небольшую порцию данных, например 1 КБ, чтобы Коди продолжил ожидать завершения буферизации. И так, пока буферизация не закончится, обработчик периодически скармливать маленькие куски данных, поддерживая соединение. А когда буфер нужного размера заполнится, обработчик опять начать выдавать данные на нормальной скорости.
Т. е. нам нужен некий обработчик файлов с интерфейсом итератора, умеющий контролируемо выдавать куски файла.
Единственное, что меня беспокоит - производительность такого решения. bottle, на базе которого сделана серверная часть YATP, при выдаче файла скармливает WSGI-серверу стандартный питоновский файловый объект (open), написанный на C, а значит очень быстрый.
Как бы не пришлось писать этот обработчик файлов на C++ или на худой конец на Cython и компилировать в бинарный модуль.
Очень хорошая идея, на мой взгляд. И, по-мому, не стОит бояться С++ . Он хороший
srg70 вне форума   Ответить с цитированием
   
Старый 31.07.2015, 18:33   #32
HAL9000
Senior Member
 
Аватар для HAL9000
 
Регистрация: 15.03.2012
Сообщений: 1,094
По умолчанию

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

В DelugeStream я пробовал сразу отдавать HTTP заголовок, что все ОК, а потом только выставлял приоритеты на нужные чанки. В целом - работает... Но тут сразу видна дыра - мы не имеем гарантии того, что первый чанк из выставленных в приоритет придет быстро. Если он задержится, то опять будет беда

Я в результате, перестал делать ставку на HTTP. В DelugeStream сделал предварительное копирование в локальный (для Коди) кэш. А вот с обычным чтением файла с локального устройства у Коди все нормально Под нормально я имею в виду довольно быструю реакцию на команды. Лично я планирую в своем будущем плеере копать именно в эту сторону, а HTTP сделать как дополнительный вариант для устройств с маленькими дисками/флешками. Но во втором случае хозяин такого устройства просто должен отдавать себе отчет, что чудес не бывает (или ручками выставлять себе в настройках бокса большой таймаут на минуту или две).

Update:
Еще пробовал отдавать заголовок HTTP 202, но Коди его игнорировал.
__________________
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 вне форума   Ответить с цитированием
Старый 01.08.2015, 23:49   #33
DiMartino
Senior Member
 
Аватар для DiMartino
 
Регистрация: 26.01.2013
Сообщений: 867
Отправить сообщение для DiMartino с помощью Skype™
По умолчанию

Парни, подскажите, вот есть класс http сервера StreamServer и есть там цикл ожидания запроса, что естественно, но почему как только класс заводится у меня никогда не пропадает справа внизу "Подождите" и пока его не убьешь правой кнопкой мыши гуи плеера недоступно. Пытался запустить этот класс в отдельном потоке через thread, но результат тот же. Из подробностей скажу только что перемотка работает, я запускал скрипт в отдельном python, потом запускал урл в Коди и пытался перемотать, все работало.


Упс, скорее всего было из-за isFolder листайтема.
__________________
Плагин MyShows.ru (+оценка KinoPoisk.ru) для Kodi http://xbmc.ru/forum/showthread.php?t=3264
Торрент-стример Torrenter v2 http://xbmc.ru/forum/showthread.php?t=6837

Последний раз редактировалось DiMartino; 02.08.2015 в 10:26.
DiMartino вне форума   Ответить с цитированием
Старый 02.08.2015, 14:08   #34
Roman_V_M
Senior Member
 
Аватар для Roman_V_M
 
Регистрация: 12.06.2011
Адрес: Киев
Сообщений: 1,933
По умолчанию

Цитата:
Сообщение от DiMartino Посмотреть сообщение
Пытался запустить этот класс в отдельном потоке через thread, но результат тот же. Из подробностей скажу только что перемотка работает, я запускал скрипт в отдельном python, потом запускал урл в Коди и пытался перемотать, все работало.
Интересная информация. Сам класс представляет собой несколько модифицированный стандартный питоновский HTTP-сервер и интереса не представляет. Зато хендлер запросов ниже интересен хотя бы тем, какие заголовки он добавляет к ответу.
__________________
Координатор русского перевода 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 вне форума   Ответить с цитированием
Старый 02.08.2015, 14:23   #35
Roman_V_M
Senior Member
 
Аватар для Roman_V_M
 
Регистрация: 12.06.2011
Адрес: Киев
Сообщений: 1,933
По умолчанию

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

В DelugeStream я пробовал сразу отдавать HTTP заголовок, что все ОК, а потом только выставлял приоритеты на нужные чанки. В целом - работает... Но тут сразу видна дыра - мы не имеем гарантии того, что первый чанк из выставленных в приоритет придет быстро. Если он задержится, то опять будет беда


Update:
Еще пробовал отдавать заголовок HTTP 202, но Коди его игнорировал.
А как насчет (206, 'Partial Content'), как в реализации ниже, которую нашел DiMartino, и отдавать то, что реально имеем?

Цитата:
Я в результате, перестал делать ставку на HTTP. В DelugeStream сделал предварительное копирование в локальный (для Коди) кэш. А вот с обычным чтением файла с локального устройства у Коди все нормально Под нормально я имею в виду довольно быструю реакцию на команды. Лично я планирую в своем будущем плеере копать именно в эту сторону, а HTTP сделать как дополнительный вариант для устройств с маленькими дисками/флешками. Но во втором случае хозяин такого устройства просто должен отдавать себе отчет, что чудес не бывает (или ручками выставлять себе в настройках бокса большой таймаут на минуту или две).
Мне в работе с локальным контентом (не через сервер) не нравится то, что мы не можем никак узнать, какие куски нужны Коди в данный момент. Или я чего-то не понимаю.
__________________
Координатор русского перевода 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 вне форума   Ответить с цитированием
Старый 02.08.2015, 14:53   #36
DiMartino
Senior Member
 
Аватар для DiMartino
 
Регистрация: 26.01.2013
Сообщений: 867
Отправить сообщение для DiMartino с помощью Skype™
По умолчанию

Цитата:
Сообщение от Roman_V_M Посмотреть сообщение
Интересная информация. Сам класс представляет собой несколько модифицированный стандартный питоновский HTTP-сервер и интереса не представляет. Зато хендлер запросов ниже интересен хотя бы тем, какие заголовки он добавляет к ответу.
Я же говорил, что тема клевая, мы уже тестирует Торрентер с этим проигрывателем, перемотка отлично работает на популярных раздачах, как говорится, ни единого разрыва. Другой вопрос в начале и конце воспроизведения у меня на компе жуткие лаги от этого всего, боюсь что будет на слабых машинах. Хорошо бы если ты себе вставил наработки izderadicka. Могу выложить что уже есть, посмотришь.
__________________
Плагин MyShows.ru (+оценка KinoPoisk.ru) для Kodi http://xbmc.ru/forum/showthread.php?t=3264
Торрент-стример Torrenter v2 http://xbmc.ru/forum/showthread.php?t=6837
DiMartino вне форума   Ответить с цитированием
Старый 02.08.2015, 17:12   #37
HAL9000
Senior Member
 
Аватар для HAL9000
 
Регистрация: 15.03.2012
Сообщений: 1,094
По умолчанию

Цитата:
Сообщение от Roman_V_M Посмотреть сообщение
А как насчет (206, 'Partial Content'), как в реализации ниже, которую нашел DiMartino, и отдавать то, что реально имеем?
Я писал уже, что DelugeStream работает на основе заголовка Range. А Range без Partial Content не работает. Только в связке с ним.


Цитата:
Сообщение от Roman_V_M Посмотреть сообщение
Мне в работе с локальным контентом (не через сервер) не нравится то, что мы не можем никак узнать, какие куски нужны Коди в данный момент. Или я чего-то не понимаю.
С точностью до бита (как в случае с HTTP и Range) не узнаем. Это так. Но можно смотреть на прогресс-бар. Он в процентах. Нужно только хотя бы примерно рассчитать битрейт видео, чтобы проценты сконвертировать в биты.

И еще.
Я не уверен, что те форматы, которые FullHD (всякие там Аватары с файликами по 40 Гбайт), можно смотреть через HTTP. Но это уже спецы должны подсказать. Я в форматах - середнячок и четверочник
__________________
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 вне форума   Ответить с цитированием
Старый 02.08.2015, 17:15   #38
HAL9000
Senior Member
 
Аватар для HAL9000
 
Регистрация: 15.03.2012
Сообщений: 1,094
По умолчанию

Цитата:
Сообщение от DiMartino Посмотреть сообщение
Я же говорил, что тема клевая, мы уже тестирует Торрентер с этим проигрывателем, перемотка отлично работает на популярных раздачах, как говорится, ни единого разрыва. Другой вопрос в начале и конце воспроизведения у меня на компе жуткие лаги от этого всего, боюсь что будет на слабых машинах. Хорошо бы если ты себе вставил наработки izderadicka. Могу выложить что уже есть, посмотришь.
Поизучаю сегодня ночью исходники. Если все так хорошо с перемоткой, то можно будет либо применить их наработки, либо посмотрим, что можно сделать, чтобы не нагружать машины.
__________________
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 вне форума   Ответить с цитированием
Старый 02.08.2015, 19:36   #39
Roman_V_M
Senior Member
 
Аватар для Roman_V_M
 
Регистрация: 12.06.2011
Адрес: Киев
Сообщений: 1,933
По умолчанию

Цитата:
Сообщение от DiMartino Посмотреть сообщение
Хорошо бы если ты себе вставил наработки izderadicka. Могу выложить что уже есть, посмотришь.
Выкладывайте. Информации много не бывает.
__________________
Координатор русского перевода 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 вне форума   Ответить с цитированием
Старый 02.08.2015, 20:40   #40
DiMartino
Senior Member
 
Аватар для DiMartino
 
Регистрация: 26.01.2013
Сообщений: 867
Отправить сообщение для DiMartino с помощью Skype™
По умолчанию

Цитата:
Сообщение от Roman_V_M Посмотреть сообщение
Выкладывайте. Информации много не бывает.
Выложил в свое репо тестовую версию, еще не все функции работают, но уже понятно как оно будет выглядеть.

Установить Torrenter 2.3.6 из репо, зависимости подтянутся
В настройках Libtorrent выбрать версию 1.0.6 (с 0.16.19 не работает)
В настройках Torrenter в качестве плеера установить BTClient

Лучше попробовать играть .torrent, хотя и через поиск должно работать. По результатам отпиши, интересно.
__________________
Плагин MyShows.ru (+оценка KinoPoisk.ru) для Kodi http://xbmc.ru/forum/showthread.php?t=3264
Торрент-стример Torrenter v2 http://xbmc.ru/forum/showthread.php?t=6837
DiMartino вне форума   Ответить с цитированием
Ответ
 


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Торрент ТВ для убунту dimmi777 Помощь по плагинам 226 11.05.2021 13:25
Торрент-ТВ и iPhone/iPad Alex2013 Поддержка платформы Mac 28 13.03.2015 17:13
торрент Алексей Подсказки, описания и FAQ по XBMC 1 14.01.2011 22:43


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


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