Смотрим Торрент-ТВ на Raspberry Pi

в 9:21, , рубрики: ace stream, kodi, Raspberry Pi, Медиаплееры, потоковое видео

Всё началось с того, что любимая супруга попросила полноценное ТВ (дело в том, что мы не живем в России). Понятно, что IPTV в наше время не является проблемой, но подключать спутник ради пары каналов никакого желания не было, а смотреть ТВ на ПК супруга сразу отказалась. Как нельзя кстати, под рукой оказалась Raspberry Pi B+. О ней и пойдёт речь далее.

В качестве основного дистрибутива для «малинки» был выбран Raspbmc (теперь называется OSMC). Не буду детально описывать процесс установки, поскольку он банально прост и заключается в разворачивании архива на Micro SD карточку. А с настройкой самой «малинки» для выхода в сеть справится любой айтишник.

Забегая вперёд не могу не упомянуть, что на Хабре уже была статья про Torrent-TV на базе XBMC, но там совсем иная реализация и, как мне показалось, она менее удобна:

  • каналы идут общим списком;
  • нет программы передач;
  • нет архива прошедших передач.

Что ж, переходим к более интересной части.

Проблема

Казалось бы, всё проще некуда — берем инструкцию и радуемся, но не тут то было! Именно здесь и начинаются подводные камни. Теперь по порядку:

  1. Ace Engine — не работает на Raspberry;
  2. Ace Engine работает только с localhost.

С ними и будем разбираться.

Камень №1 принимаем «as is» и двигаемся к камню №2.

Если кратко, Ace Engine работает на двух портах — 6878 для управления потоком и произвольный порт, для непосредственно стриминга видео. Первый формально слушает все интерфейсы, но команды принимает только с localhost, второй изначально слушает только 127.0.0.1. А для подключения с «малинки» нам нужен доступ на оба порта.

Поэтому, другого выхода кроме как использовать клиент-сервер («малинка» — ПК) вариантов нет. С моделью определились, идём дальше.

Настройка ПК

Конечно, в первую очередь ставим сам AceStream. Можно поставить всё (движок+плеер+плагин для браузера), я же поставил только сам движок. Смотреть ТВ на ПК я не собираюсь.

Теперь нам нужно сделать port forwarding. Самый очевидный вариант netsh, к сожалению, не умеет делать portproxy на 127.0.0.1. А городить на Windows 7 полноценный NAT с forward никакого желания не было. Спасение нашлось на просторах интернета в виде порта unix утилиты rinetd под ОС Windows.
Итак, нам нужно перенаправить два порта, один мы знаем, второй обновляется при каждом запуске Ace Engine и прописывается в файле acestream.port (в папке, где установлен AceStream). В моем случае, Ace будет работать постоянно, так что вполне устроит вариант с автозапуском вместе с ПК.

В этом месте каждый может сделать так, как ему будет удобно, я же поставил в автозагрузку batch файл следующего содержания:

start /d "c:UsersLexsAppDataRoamingACEStreamengine" ace_engine.exe
ping 127.0.0.1 -n 10 > nul
cd "c:UsersLexsAppDataRoamingACEStreamengine"
set /p port=<acestream.port
@echo 10.100.0.50 36001 127.0.0.1 6878 > rinetd.conf
@echo 10.100.0.50 36002 127.0.0.1 %port% >> rinetd.conf
start /d "c:UsersLexsAppDataRoamingACEStreamengine" rinetd.exe

10.100.0.50 — адрес ПК в домашней сети. С настройкой ПК закончили, идём дальше.

Настройка плагина

IP адрес для подключения к AceStream можно задать через GUI настройку плагина, а с портами придется сделать «грязный хак». Берём в руки напильник SSH и подключаемся к «малинке». Далее нам нужно отредактировать Python'овский скрипт, расположенный по адресу:

/home/pi/.kodi/addons/script.torrent-tv.ru/ts.py

В нём нужно указать порты, которые мы выбрали для перенаправления, в моём случае вот так:

    239         if defines.ADDON.getSetting('web_port'):
    240             self.webport = defines.ADDON.getSetting('webport')
    241         else:
    242             self.webport = '36001'
    243         if defines.ADDON.getSetting('port'):
    244             self.aceport = int(defines.ADDON.getSetting('port'))
    245         else:
    246             self.aceport = 36002

Сохраняем, перезапускаем плагин Torrent-TV и наслаждаемся полноценной работой плагина на «малинке»!

Автор: lexs

Источник

Поделиться новостью

* - обязательные к заполнению поля