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

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

Ответ
 
Опции темы Опции просмотра
Старый 31.12.2014, 16:56   #31
DiMartino
Senior Member
 
Аватар для DiMartino
 
Регистрация: 26.01.2013
Сообщений: 867
Отправить сообщение для DiMartino с помощью Skype™
По умолчанию

Цитата:
Сообщение от Roman_V_M Посмотреть сообщение
Здесь: https://cloud.mail.ru/public/500daa2...libtorrent.zip
Согласно моим опытам 1.0.3 качает быстрее.

Можно небольшой совет? Никогда не используйте инструкцию except без указания конкретных исключений, которые вы ловите. Иначе потенциально возможны проблемы при отладке.
1.0.3 заработал, не знаю насколько быстрее, но качает исправно, скоро заменю, правда хотел бы сразу для всех платформ.

Один раз у slng ломался плагин из-за ловли эксепшенов, потому что он ловил отсутствие модуля, а приходила ошибка версии питона, в итоге плагин он уже тогда забросил и никто не чинил. Можно так:
PHP код:
            except Exceptione:
                print 
'Error importing python_libtorrent.'+system+'. Exception: ' str(e)
                
pass 
__________________
Плагин MyShows.ru (+оценка KinoPoisk.ru) для Kodi http://xbmc.ru/forum/showthread.php?t=3264
Торрент-стример Torrenter v2 http://xbmc.ru/forum/showthread.php?t=6837
DiMartino вне форума   Ответить с цитированием
   
Старый 31.12.2014, 17:12   #32
HAL9000
Senior Member
 
Аватар для HAL9000
 
Регистрация: 15.03.2012
Сообщений: 1,094
По умолчанию

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

Цитата:
Сообщение от Roman_V_M Посмотреть сообщение
Компиляцию лучше проводить на чистой винде ХР/7 под виртуалкой.
Выполняете инструкцию отсюда до п. 5 включительно. В качестве компилятора устанавливаете VC++ 2008 Express (можно скачать с сайта Майкрософта).
После установки всех компонентов и компиляции Буста у вас должны быть следующие папки:
c:\OpenSSL-Win32\
C:\boost
C:\libtorrent-rasterbar
Далее выполняете следующий батник:
Код:
@echo off

copy "c:\OpenSSL-Win32\lib\VC\static\libeay32MT.lib" "C:\Program Files\Microsoft Visual Studio 9.0\VC\lib\libeay32.lib" /y
copy "c:\OpenSSL-Win32\lib\VC\static\ssleay32MT.lib" "C:\Program Files\Microsoft Visual Studio 9.0\VC\lib\ssleay32.lib" /y
copy "C:\OpenSSL-Win32\include\openssl" "C:\Program Files\Microsoft Visual Studio 9.0\VC\include" /y

call "C:\Program Files\Microsoft Visual Studio 9.0\VC\vcvarsall.bat" x86

set BOOST_ROOT=C:\boost
set BOOST_BUILD_PATH=%BOOST_ROOT%
set PATH=%BOOST_ROOT%;%PATH%

c:
cd C:\libtorrent-rasterbar\bindings\python

b2 boost=source link=static geoip=static boost-link=static runtime-link=static release optimization=space encryption=openssl
Если всё сделано правильно, в папке C:\libtorrent-rasterbar\bindings\python должен быть скомпилированный модуль.
Прикреплю этот текст в шапке этой ветки.
__________________
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 вне форума   Ответить с цитированием
Старый 31.12.2014, 17:22   #33
HAL9000
Senior Member
 
Аватар для HAL9000
 
Регистрация: 15.03.2012
Сообщений: 1,094
По умолчанию

У меня пока таже ошибка (все еще вожусь с linux64): Просит ключик -fPIC
Но, проблема в чем-то другом, так как этот ключ нужен для скрещивания статических либ с динамическими. А нам это не нужно.

И еще: без питоновской обвязки все нормально компилиться. Сейчас выложу в шапку последнюю свою версию (основана на libtorrent-go). Если убрать из буста ключик --with-python и из libtorrent ключик --enable-python-binding, то все компилиться без единого чиха. А вот с ними начинается беда...
__________________
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 вне форума   Ответить с цитированием
Старый 04.01.2015, 22:50   #34
Roman_V_M
Senior Member
 
Аватар для Roman_V_M
 
Регистрация: 12.06.2011
Адрес: Киев
Сообщений: 1,933
По умолчанию

Цитата:
Сообщение от DiMartino Посмотреть сообщение
Класс Torrent стримит так: создает сессию, подключает dht, добавляет торрент, обнуляет приоритет всех кусков, высчитывает первый и последний кусок файла, выставляет приоритет первый+сколько скажут в МБ и два последних, set_sequential_download, полностью скачивает буфер, МЕГАКОСТЫЛЬ, начинает играть и ставит все остальные куски в скачку.
Почитал тут на досуге некоторые теоретические статьи, посвященные стримингу торрентов. В них утверждается, к примеру, что set_sequential_download() скорее вредно, чем полезно (как ни странно). Т. е. лучше всего играться приоритетами кусков.
На основании этих статей также попробовал реализовать алгоритм "скользящего окна" (правда, в упрощенном виде) - вроде как получилось. В общем, как оказалось, в реализации стриминга торрентов нет ничего сложного.

Кстати, так до сих пор и не понял, зачем нужен мегакостыль.
__________________
Координатор русского перевода 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 вне форума   Ответить с цитированием
Старый 04.01.2015, 22:59   #35
DiMartino
Senior Member
 
Аватар для DiMartino
 
Регистрация: 26.01.2013
Сообщений: 867
Отправить сообщение для DiMartino с помощью Skype™
По умолчанию

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

Кстати, так до сих пор и не понял, зачем нужен мегакостыль.
Без мегакостыля одно и тоже видео то запускалось, а то нет. Прям вот запускаешь стриминг, скачался буфер, запустилось. Удалил буфер, опять повторил все, уже не запустилось. Причем это проблема была сугубо у xbmc.Play() и подобных команд, тот же кусок прекрасно каждый раз открывался с помощью VLC, а XBMC с помощью xbmc.Play() рандомно его не мог проиграть, но при заходе в папку с помощью "Файлы", xbmc.Play() тоже начинал его проигрывать, даже если зайдя в папку просто на него грозно посмотреть.
__________________
Плагин MyShows.ru (+оценка KinoPoisk.ru) для Kodi http://xbmc.ru/forum/showthread.php?t=3264
Торрент-стример Torrenter v2 http://xbmc.ru/forum/showthread.php?t=6837
DiMartino вне форума   Ответить с цитированием
Старый 05.01.2015, 01:22   #36
HAL9000
Senior Member
 
Аватар для HAL9000
 
Регистрация: 15.03.2012
Сообщений: 1,094
По умолчанию

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

Кстати, так до сих пор и не понял, зачем нужен мегакостыль.
Все так и есть.

set_sequential_download() сама по себе работает плохо. Хотя для проформы включать ее можно. После того, как начинаешь "играться" с приоритетами кусков, она вряд-ли будет на что-то влиять. В общем, включить ее можно из соображений "кашу маслом не испортишь".

По поводу приоритетов кусков - это единственный способ организовать стриминг видео-торрентов. Теперь, когда вы Roman_V_M разобрались как это работает, то наверника понимаете почему "сбоят" все плагины с торрент-плеерами. Какой-то кусочек не нашелся в p2p-рое и все - сбой воспроизведения.

Единственная возможность приблизиться к "потоковому качеству" - это четко расчитывать сколько кусочков нужно прямо сейчас xbmc-плееру. Чтобы в нужный момент поставить воспроизведение на паузу и дождаться когда недостающий кусочек придет из роя.

И вот тут включается "математика", которой задолбаешься заниматься. Нужно разбираться во всех видео-форматах, чтобы понимать сколько кусков нужно прямо сейчас.
Исходя из этих форматов как-то надо расчитывать прогноз когда доступных кусков станет уже мало для xbmc-плеера (чтобы вовремя поставить на паузу - плеер xbmc не отличается моментальной отзывчивостью к своему API). Прогнозируя это, нужно брать во внимание текущую личерскую скорость скачки. Размер файла. И т.д.

Дополнительный головняк добавляется, если есть желание прикрутить перемотку (а оно естественно есть). Опять нужно смотреть на каждый формат в отдельности - позволит-ли он "перепрыгнуть" сразу в новеое место файла? или ему надо все-равно все последовательно скармливать?

В общем, создание торрент-плеера - вещь интересная, но сложная. Достойна отдельного проекта.

Что у меня есть из наработок?

Есть DelugeStream. Заброшенный мной. Мечтаю найти время вернуться к нему. Вернее не к самому проекту, а только к части, которая занимается контролем libtorrent. Если скомпилим libtorrent - точно вернусь Если не скомпилим до конца зимы, все равно наверное постараюсь вернуться к проекту - буду писать питоновскую часть плеера с надеждой на появление на форуме какого-нибудь Джеймс Бонда, который скажет "Скомпилить libtorrent? Да я это перед сном каждый день делаю!".

Если интересно, то работа с приоритетами кусков запрограммирована там в функции update и, следующей за ней, prioritize_up. Там, конечно, еще надо допиливать, но сделано очень много. Включая поддержку просмотра отдельных серий в сериальной раздаче, поддержку сразу одновременной закачки нескольких раздач (для одновременного просмотра с разных устройств разного контента) и многое другое. Если будут вопросы по коду или неясности в стиле "зачем там что-нибудь сделано", пишите - я отвечу.

P.S.:
Оффтоп:
Торренты не предназначены для потока. И НИКОГДА не будут для этого предназначены. Повышенный интерес к этой технологии существует исключительно из-за мегатонны контента, который доступен на трекерах. Как только в таком же объеме будут представленны обычные пиратские сайты, смысл в торрент-плеерах пропадет.
__________________
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 вне форума   Ответить с цитированием
Старый 05.01.2015, 02:17   #37
DiMartino
Senior Member
 
Аватар для DiMartino
 
Регистрация: 26.01.2013
Сообщений: 867
Отправить сообщение для DiMartino с помощью Skype™
По умолчанию

Цитата:
Сообщение от HAL9000 Посмотреть сообщение
Если интересно, то работа с приоритетами кусков запрограммирована там в функции update и, следующей за ней, prioritize_up. Там, конечно, еще надо допиливать, но сделано очень много. Включая поддержку просмотра отдельных серий в сериальной раздаче, поддержку сразу одновременной закачки нескольких раздач (для одновременного просмотра с разных устройств разного контента) и многое другое. Если будут вопросы по коду или неясности в стиле "зачем там что-нибудь сделано", пишите - я отвечу.
По сути вопроса мне нечего сказать, просто хочу донести мнение некого arvid.no...@gmail.com, что для стриминга лучше использовать set_piece_deadline(). Большой разницы с постоянной сменой приоритетов нет, но раз уже задумали так.
__________________
Плагин MyShows.ru (+оценка KinoPoisk.ru) для Kodi http://xbmc.ru/forum/showthread.php?t=3264
Торрент-стример Torrenter v2 http://xbmc.ru/forum/showthread.php?t=6837
DiMartino вне форума   Ответить с цитированием
Старый 05.01.2015, 16:05   #38
HAL9000
Senior Member
 
Аватар для HAL9000
 
Регистрация: 15.03.2012
Сообщений: 1,094
По умолчанию

Цитата:
Сообщение от DiMartino Посмотреть сообщение
По сути вопроса мне нечего сказать, просто хочу донести мнение некого arvid.no...@gmail.com, что для стриминга лучше использовать set_piece_deadline(). Большой разницы с постоянной сменой приоритетов нет, но раз уже задумали так.
Не обращал раньше внимание на эту функцию. Хотя на первый взгляд из документации не понятно, чем она лучше piece_priority().
Но раз чувак из команды libtorrent рекомендует использовать именно ее, то надо разбираться с ней.
__________________
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 вне форума   Ответить с цитированием
Старый 05.01.2015, 16:13   #39
DiMartino
Senior Member
 
Аватар для DiMartino
 
Регистрация: 26.01.2013
Сообщений: 867
Отправить сообщение для DiMartino с помощью Skype™
По умолчанию

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

Цитата:
Сообщение от DiMartino Посмотреть сообщение
Ну как ты знаешь либторрент любит всякие алерты посылать, она лучше, видимо, тем, что увидев просроченный кусок можно сделать автопаузу, что бы дойдя до края скаченного не навернулся плеер. Но это мои догадки.
А я ушел от этих алертов. Они есть в Torrenter и в RuTracker (я писал там плеер, подсматривая в Torrenter). Но DelugeStream уже писал без них. Схему подсмотрел у какого-то популярного плагина для Deluge. В цикле постоянно идет опрос статуса раздачи (вся инфа по всем кускам) и с каждой итерацией цикла заново рассчитываются дальнейшие действия.

Что лучше? Не знаю. Ни у первого, ни у второго способа не вижу никаких особенных плюсов или минусов.
__________________
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 вне форума   Ответить с цитированием
Ответ
 


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
OpenELEC с поддержкой ACEStream и LibTorrent-Rasterbar OneEvil Поддержка платформы Linux \ Live 383 29.07.2015 06:21
Рзделы для видео библиотеки mdog288 Подсказки, описания и FAQ по XBMC 3 16.09.2011 10:17


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


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