![]() |
|
|
|
Опции темы | Опции просмотра |
![]() |
#1 | |
Junior Member
Регистрация: 05.03.2012
Адрес: Украина
Сообщений: 9
|
![]()
DISCLAIMER: Описанный мной способ – жуткий костыль, который может привести к нестабильной работе системы и, возможно, потере данных. Так же описанные ниже действия открывают потенциальную дыру в безопасности. Я не несу никакой ответственности за вред, который может быть причинен при выполнении данных инструкций. Все, что вы делаете – вы делаете на свой страх и риск.
Данная инструкция предназначена в первую очередь для опытных пользователей. Новичкам в мире Linux я бы советовал воспользоваться другими решениями, например такими как pvr.iptvsimple. Для чего это нужно. Существует не так много решений для просмотра IPTV в XBMC. Самый удачный, на мой счет, является использование tvheadend в качестве бэкенда. Его преимущества: 1. Прост в установке и настройке. 2. Есть все необходимые функции, такие как Timeshift, EPG, Automatic Recorder и пр. Среди подобных продуктов можно отметить mythtv и уже упомянутый выше pvr.iptvsimple, но первый, на мой взгляд, чересчур монструозный, а второй, как и следует из его названия, чересчур простой – он умеет только показывать, и, к тому же, не без проблем. Так же существует плагин IP-TV, который в 12-й версии XBMC перестал корректно работать и по функциям еще проще, чем pvr.iptvsimple. Так в чем же проблема? А проблема в том, что tvheadend может обрабатывать только multicast udp потоки. Но поскольку просмотр udp-multicast с использованием Wi-Fi роутера приводит к отваливанию всех беспроводных клиентов, приходтся использовать udpxy, который преобразует multicast udp на входе в unicast http на выходе. Т.е. на выходе мы получаем http-поток, который tvheadend обрабатывать не умеет. Решение проблемы описано здесь. Краткая цитата: Цитата:
Что же делать? Делать будем костыли ![]() Итак, поехали... Поскольку XBMC у меня установлен под Linux Cent OS 6.4 (Final), все команды я буду приводить относительно этой системы. Для Ubuntu, я думаю, будет достаточно заменить yum на atp-get. Так же в других дистрибутивах могут быть другие пути — следите за этим. Будем считать, что имя пользователя, от которого запускается XBMC, тоже xbmc. Не могу сказать, какие пакеты понадобятся для сборки, но как минимум, необходимо установить kernel-headers и git. Создаем (если еще не создана) папку Install и переходим в нее: Код:
mkdir ~/Install && cd ~/Install Код:
sudo yum install kernel-headers vlc git git clone https://github.com/stefansaraev/mproxy.git Код:
void accept_group_report(u_int32 group) { char cmd[128];; snprintf(cmd, sizeof(cmd), "%s %s %s", "ext.sh 2>/dev/null", inet_fmt(group, s1, sizeof(s1)), " start"); system(cmd); return; } /* * Process an incoming IGMPv2 Leave Group message. */ void accept_leave_message(u_int32 group) { char cmd[128];; snprintf(cmd, sizeof(cmd), "%s %s %s", "ext.sh 2>/dev/null", inet_fmt(group, s1, sizeof(s1)), " stop"); system(cmd); return; } Код:
void accept_group_report(u_int32 group) { char cmd[128];; snprintf(cmd, sizeof(cmd), "%s %s %s", "/home/xbmc/.xbmc/addons/service.network.mproxy/bin/ext.sh 2>/dev/null", inet_fmt(group, s1, sizeof(s1)), " start"); system(cmd); return; } /* * Process an incoming IGMPv2 Leave Group message. */ void accept_leave_message(u_int32 group) { char cmd[128];; snprintf(cmd, sizeof(cmd), "%s %s %s", "/home/xbmc/.xbmc/addons/service.network.mproxy/bin/ext.sh 2>/dev/null", inet_fmt(group, s1, sizeof(s1)), " stop"); system(cmd); return; } После чего компилируем mproxy: Код:
make И копируем скомпилированный mproxy: Код:
cp ~/Install/mproxy/mproxy ~/.xbmc/addons/service.network.mproxy/bin/mproxy.bin Код:
cd ~/Install git clone https://github.com/tvheadend/tvheadend.git cd tvheadend ./configure make Для rpm-based дистрибутивов (Redhat, Fefora, CentOS, etc.) можно использовать следующий .spec файл: Как собирать пакеты используя .spec файлы объяснять не буду, в интернете полно информации. И не забываем, что в самом начале я предупреждал — это руководство для опытных пользователей. Далее. Если еще не установлен pvr.hts addon, собираем из исходников: Код:
cd ~/Install git clone https://github.com/opdenkamp/xbmc-pvr-addons.git cd xbmc-pvr-addons ./bootstrap ./configure make zip Система — Дополнения — Установить из файла ZIP Запускаем tvheadend: Код:
cd ~/Install/tvheadend/build.linux/ ./tvheadend -C Почти готово, осталось совсем чуть-чуть ![]() Добавляем маршруты для правильной работы mproxy: Код:
sudo -i echo "ifconfig lo multicast" >> /etc/rc.local echo "ip route add 224.0.0.0/4 dev lo src 127.0.0.1" >> /etc/rc.local Формат файла должен быть таким: Код:
224.0.0.150 http://192.168.1.1:81/udp/225.225.225.203:1234 #Viasat History 224.0.0.151 http://192.168.1.1:81/udp/225.225.225.204:1234 #Viasat Explorer 224.0.0.152 http://192.168.1.1:81/udp/225.225.225.1:1234 #Perviy Natzional'niy Правим sudoers: Код:
sudo visudo Код:
root ALL=(ALL) ALL Код:
xbmc ALL=(ALL) ALL, NOPASSWD: /home/xbmc/.xbmc/addons/service.network.mproxy/bin/mproxy.bin,/usr/bin/killall -9 mproxy.bin Код:
Chanel name — название канал (произвольно) Interface — lo (обязательно) Group — xxx.xxx.xxx.xxx (адрес в соответствии с настройками в файле ~/.xbmc/addons/service.network.mproxy/config/ext.conf) UDP Port — 1234 (обязательно) Ну а дальше проверяем, работает ли вся эта кухня. Из главного меню XBMC выбираем ТВ и, если повезло, смотрим любимые каналы. Что еще не сделано? 1. EPG — как его настроить в tvheadend написано множество статей. Поищите в гугле по запросу tv_grab_file и посмотрите здесь. 2. Демонизация tvheadend. Для OpenSUSE есть готовый пример. Для CentOS (вероятно, подойдет для других rpm-based дистрибутивов) привожу свой вариант файла /etc/rc.d/init.d/tvheadend: А так же файл /etc/sysconfig/tvheadend Код:
OPTIONS="-f -u xbmc -s" Что делать, если не работает? 1. Существенные проблемы могут возникнуть, если имя пользователя не xbmc. Необходимо будет делать много правок как в аддоне mproxy, так и в исходниках и конфигурационных файлах. Будьте внимательны. 2. Проверить, запускается ли mproxy Код:
ps -A |grep mproxy 3. Проверить, добавился ли маршрут Код:
route -n Код:
224.0.0.0 0.0.0.0 240.0.0.0 U 0 0 0 lo 5. Остановить слжубу mproxy в XBMC, отредактировать файл ~/.xbmc/addons/service.network.mproxy/bin/ext.sh, раскоментировав все строки с командой echo, в терминале выполнить команду Код:
tail -f ~/.xbmc/addons/service.network.mproxy/service.log 6. Ознакомиться с этой темой. 7. Если уж совсем не получается, пишите здесь как можно подробнее (с выводом из предыдущих пунктов), постараюсь помочь. Желаю удачи ![]() |
|
![]() |
![]() |
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1) | |
Опции темы | |
Опции просмотра | |
|
|