Настройка iptv своими руками
В этой статье я поделюсь первым опытом настойки и эксплуатации цифрового телевидения или IPTV, собранного «на коленке», расскажу о некоторых «подводных камнях», а так же дам советы новичкам.
Данная статься основана на личном опыте автора и не претендует на звание идеального руководства по настройке IPTV |
Вообще, данный, так сказать «проект» был реализован где-то в далеком 2010 году, и может уже считаться устаревшим. С тех пор уже много чего изменилось. Добавлю лишь, что добиться стабильной работы, описанного ниже примера, на современном железе и софте не удалось, но принципиальная идея, конечно же осталась неизменна. В будущем (я надеюсь) поделюсь опытом реализации кабельного ТВ в небольшом общежитии. |
Аппаратная часть
Необходимые и достаточные условия для приема видеопотока со спутника и его вещания в локальную сеть.
Сервер IPTV — собственно, устройство, которое будет принимать, обрабатывать и вещать в локальную сеть видеопоток со спутника. В моем случае это обычный ПК под управлением MS Windows 2003 SP2, с одноядерным Intel Pentium4 тактовой частотой 2.6Ггц, 512Мб оперативной памяти, двумя сетевыми платами(можно обойтись и одной) и самое главное — спутниковым ресивером TechniSat SkyStar USB 2. Очевидно, чтобы обеспечить прием сигнала со спутника необходима тарелка и так называемый спутниковый конвертер. Я использовал тарелку триколор(55 см) и универсальный спутниковый конвертер (Ku-диаразона) Golden Interstar GI-201. Теперь нужно определиться со спутником и транспондером, с которого мы хотим получать видео поток. Большая их часть транслируют каналы в шифрованном виде, посмотреть без «танцев с бубном» их не удастся. Но на некоторых спутниках есть транспондеры вещающие часть каналов в открытом виде. Посмотреть спутники и их транспондеры можно, например, на постоянно обновляющемся, сайте lyngsat.com. Я настраивался на сигнал одного из транспондеров спутника ABS1. | |
Поймать сигнал со спутника дело не легкое, кропотливое и с первого раза не всегда удачное, в общем, статей на тему как и куда направлять тарелку в интернете предостаточно, подробно описывать процесс не буду. Скажу лишь, что в комплекте с драйверами спутниковых ресиверов SkyStar, поставляется приложение Server4PC, которое облегчит поиск сигнала. Можно воспользоваться приложениями сторонних разработчиков, типа Fast Satfinder. Так же хочу заметить, что одновременно принимать и обрабатывать сигнал можно только с одного транспондера, одним спутниковым ресивером. Но существуют спутниковые конвертеры с двумя или более выходами, т.е. имея несколько спутниковых ресиверов можно обрабатывать сигнал нескольких транспондеров, увеличивая таким образом количество каналов, принимаемых с одной тарелки. |
Программная часть: SkyCast Server
Подробнее о настройках SkyCast Server
Для обработки и передачи видеопотка по локальной сети, будем использовать связку бесплатных утилит: SkyCast Server + VLC. SkyCast Server — программа, разработанная только для ресиверов SkyStar. Позволяет получить поток со спутникового ресивера SkyStar и передать его по сети. В нашем случае используем эту программу как мост между ресивером SkyStar и программой VLC. | ||||
Загружаем программу, в установке она не нуждается, просто распаковываем архив. Открываем блокнотом файл skycast.ini:
MACSS2=01020304 — последние 8 цифр МАС адреса SS2/SS3 без разделителей (узнать MAC или физический адрес можно набрав в командной строке команду ipconfig /all). Секция [MULTICAST1] — параметры мултикаста MULTICAST=239.1.1.1 — мултикаст адрес.
ENABLED=1 — активируем вышеописанные параметры. К слову сказать, можно настроить до 4х различных параметров вещания мультикаста. В нашем случае выключаем оставшиеся секции, установив значения ключа равным 0. Теперь произведем некоторые настройки уже в оболочке программы:
— Раздел LNB — параметры спутникового ковертора После установки необходимых параметров нужно нажать кнопку Tune. Если все выполнено правильно в разделе Current отобразятся две шкалы, показывающие уровень сигнала (шкалы в режиме реального времени не обновляются). Вкладка Common — общие настройки В этом разделе нас интересует только значение выпадающего списка — Config. В нем необходимо выбрать имя файла параметров приема сигнала, созданный и сохраненный во вкладке Tuner/LNB/Net. Вкладка MultiCast Filter — настройка фильтра видеопотока, вещаемого в сеть средствами multicast. Видеопоток принятый с выбранного нами транспондера, может содержать ненужные нам данные, например шифрованные или «промо» каналы, дабы уменьшить нагрузку на ресурсы компьютера и сети можно (и нужно) их исключить, настроив фильтр. После нажатия кнопки Scan будет выполнен анализ потока, в правом списке отобразятся доступные каналы. Далее, кнопкой «Информация кодека» можно увидеть PIDы каждого аудио и видео ряда Как вы могли заметить, ключ dst= содержит мултикаст адрес:порт для каждого из каналов.
|
Настройка сетевого оборудования
Настройка сетевого оборудования, необходимая для «правильной» работы IPTV
Для нормальной работы IPTV (точнее для нормальной работы мультикаста) необходим сетевой коммутатор (или просто свитч) с поддержкой IGMP snooping. В принципе IPTV будет работать и с коммутаторами без поддержки этой функции (обычно это неуправляемые офисные свитчи за несколько сотен рублей, так или иначе в технических характеристиках коммутатора производитель указывает поддерживаемые протоколы). Разница между этими коммутаторами заключается в обработке мультикаст трафика. Свитч без поддержки IGMP обрабатывает мултикаст как широковещательную рассылку т.е. весь приходящий поток отправляет во все порты. Коммутатор же с поддержкой IGMP ресурсы расходует разумнее и отправляет мультикаст трафик только тем клиентам, которые его запросили. | ||
По умолчанию поддержка IGMP snooping у большинства коммутаторов выключена, поэтому её достаточно просто включить (в административных настройках устройства активировать функцию IGMP snoping). Пример для Cisco 2960: Всё! Теперь поток мультикаст будет отправляться только тем клиентам, которые запросили. Хочу заметить, что если в сети есть еще коммутаторы на них тоже необходимо включить IGMP snooping (querier включать на них НЕ нужно) Теперь о подводных камнях: По какой-то причине мой коммутатор ни в какую не понимал эту команду (не исключено, что дело в кривых руках), хотя модель и версия ios входят в список поддерживаемых устройств.
|
Настройка клиентского оборудования
Настройка клиентского оборудования, для просмотра IPTV на телевизоре, на примере цифровой ТВ-приставки D-Link DIB-120
WEB сервер для middleware можно поднять там же, где настроен сервер IPTV, либо на отдельной платформе. Если у вас установлен MS Windows можно добавить компонент Internet Information Service, либо воспользоваться продуктами сторонних разработчиков. После этого, на WEB сервере, в каталог сайта по умолчанию, добавляем файлы mw.html и DIB120_API.js — это и есть тот самый middleware.
Для проверки можно воспользоваться компьютером, подключенным к локальной сети, открыв в браузере WEB страницу: http://адрес_WEB_сервера/mw.html. Если браузер открывает пустую страницу значит все работает.
Ознакомиться и загрузить файлы можно на странице нашего сайта: Middleware для D-Link DIB-120.
Настройка приставки
Теперь настраиваем приставку, для этого в главном меню переходим в раздел Settings, далее в Service, после выбираем IPTV и указываем адрес нашей страницы: http://адрес_WEB_сервера/mw.html. Нажимаем на пульте кнопку Play, если все сделали правильно, телевизор начнет показывать канал.
Немного о файлах mw.html и DIB120_API.js.
Внутри файла mw.html можно увидеть следующие строчки:
Это и есть список каналов, вещание которых мы настраивали выше. Первый параметр – это мультикаст адрес канала, второй его заголовок (будет отображаться на экране телевизора при переключении канала).
Вообще эту веб страничку можно оформлять как душе угодно, все зависит от фантазии, главное указать функцию инициализации приставки, при загрузке веб страницы:
Где:
stream – массив содержащий адреса и названия каналов (о котором я упоминал выше)
«Info» — имя идентификатора html блока (например div) в котором будет отображаться информация о канале
5000 — таймаут отображения информации о канале (миллисек.)
«Status» – имя идентификатора html блока (например div) в котором отображается текущее состояние канала
1000 – таймаут отображения состояния (миллисек.)
Что касается файла DIB120_API.js – там реализованы некоторые функции управления приставкой.
Обрабатывает нажатия кнопок пульта. На данный момент в ней реализовано переключение каналов, нажатием на цифровые кнопки и кнопки страничного переключения каналов, кнопки Play(запуск)/Stop(остановка), а так же отображение информации о текущем состоянии и номере канала.
Еще в скрипте реализованы некоторые другие функции (в комментариях написаны их назначения), но они не используются. При необходимости, их можно задействовать, добавив обработку этих функций в вышеописанную функцию обработки нажатия кнопок пульта.
Источник