Всё началось с того, что любимая супруга попросила полноценное ТВ (дело в том, что мы не живем в России). Понятно, что IPTV в наше время не является проблемой, но подключать спутник ради пары каналов никакого желания не было, а смотреть ТВ на ПК супруга сразу отказалась. Как нельзя кстати, под рукой оказалась Raspberry Pi B+. О ней и пойдёт речь далее.
В качестве основного дистрибутива для «малинки» был выбран Raspbmc (теперь называется OSMC). Не буду детально описывать процесс установки, поскольку он банально прост и заключается в разворачивании архива на Micro SD карточку. А с настройкой самой «малинки» для выхода в сеть справится любой айтишник.
Забегая вперёд не могу не упомянуть, что на Хабре уже была статья про Torrent-TV на базе XBMC, но там совсем иная реализация и, как мне показалось, она менее удобна:
Что ж, переходим к более интересной части.
Казалось бы, всё проще некуда — берем инструкцию и радуемся, но не тут то было! Именно здесь и начинаются подводные камни. Теперь по порядку:
С ними и будем разбираться.
Камень №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 файл следующего содержания:
10.100.0.50 — адрес ПК в домашней сети. С настройкой ПК закончили, идём дальше.
IP адрес для подключения к AceStream можно задать через GUI настройку плагина, а с портами придется сделать «грязный хак». Берём в рукинапильник SSH и подключаемся к «малинке». Далее нам нужно отредактировать Python'овский скрипт, расположенный по адресу:
В нём нужно указать порты, которые мы выбрали для перенаправления, в моём случае вот так:
Сохраняем, перезапускаем плагин Torrent-TV и наслаждаемся полноценной работой плагина на «малинке»!
В качестве основного дистрибутива для «малинки» был выбран Raspbmc (теперь называется OSMC). Не буду детально описывать процесс установки, поскольку он банально прост и заключается в разворачивании архива на Micro SD карточку. А с настройкой самой «малинки» для выхода в сеть справится любой айтишник.
Забегая вперёд не могу не упомянуть, что на Хабре уже была статья про Torrent-TV на базе XBMC, но там совсем иная реализация и, как мне показалось, она менее удобна:
- каналы идут общим списком;
- нет программы передач;
- нет архива прошедших передач.
Что ж, переходим к более интересной части.
Проблема
Казалось бы, всё проще некуда — берем инструкцию и радуемся, но не тут то было! Именно здесь и начинаются подводные камни. Теперь по порядку:
- Ace Engine — не работает на Raspberry;
- 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:\Users\Lexs\AppData\Roaming\ACEStream\engine\" ace_engine.exe
ping 127.0.0.1 -n 10 > nul
cd "c:\Users\Lexs\AppData\Roaming\ACEStream\engine\"
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:\Users\Lexs\AppData\Roaming\ACEStream\engine\" rinetd.exe
10.100.0.50 — адрес ПК в домашней сети. С настройкой ПК закончили, идём дальше.
Настройка плагина
IP адрес для подключения к AceStream можно задать через GUI настройку плагина, а с портами придется сделать «грязный хак». Берём в руки
/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 и наслаждаемся полноценной работой плагина на «малинке»!
Комментарии (6)
xRay
26.11.2015 15:57+1На linux использую github.com/ValdikSS/aceproxy от ValdikSS
Работает отлично + сам запускает AceStream Engine.
Для борьбы с рывками в aceproxy можно использовать запущенный в фоне VLC. Подробнее описано в wiki проекта.
Можно и не на linux использовать проект написан на Python и в wiki описано как под Windows его запускать.
nesmit
Как показала практика, глючат и отваливаются каналы.
Такая схема, но на linux проработала пол года и не прижилась.
Все прокси виды aceproxy, а так же попытка проброса порта с нормальной машины только частично решают проблему.
Проблема в глючности движка.