Astra — программное обеспечение с открытым исходным кодом (для Linux), модульной архитектурой и встроенным языком программирования на LUA для решения широкого спектра задач в области цифрового телевидения. Идеально подходит для операторов связи, гостиниц и курортов.
Официальный сайт — cesbo.com
Разработчик ПО — Андрей Дылдин (Екатеринбург)
Как известно, создание IPTV на основе профессиональных аппаратных решений является достаточно дорогостоящим удовольствием и для мелких кабельных операторов такие суммы не всегда подъёмны в качестве инвестиций и последующей окупаемости. Поэтому лучшим решением для них остаётся использование относительно недорогих тюнеров, встраиваемых в персональный компьютер — SkyStar, TBS, DVBSky и т.п., приобрести которые можно через интернет-магазин на aliexpress.com.
1. Собираем сервер. В качестве сервера можно использовать обычную персоналку. Главными критериями — при выборе железа для будущего сервера — являются такие условия:
— какие платы планируется использовать в качестве спутниковых приёмников
— сколько каналов планируется вещать в сеть.
Если у тюнера один вход (например SkyStar 2), то принять более одного транспондера не получится, отсюда максимальное количество каналов ограничено их количеством на данном транспондере — обычно не более 15 тв-каналов. Если плата с несколькими адаптерами, то соответственно принять и вещать можно будет уже каналы с нескольких транспондеров. Из опыта использования, среди кабельщиков популярны следующие модели спутниковых тюнеров: TBS6984, TBS6985, S952.
Если планируется вещать достаточно большое количество каналов не забываем о хорошей сетевой карте, например Intel 1Gb. В целом, для сервера (стримера IPTV на 60-70 каналов) можно рекомендовать следующее оборудование:
Материнская плата — Gigabyte GA-Z77
Процессор — LGA1155
Блок питания — не менее 700 ватт, выбираем понадёжнее — не экономим
Оперативная память — не менее 2 Gb
Жёсткий диск — флешка Transcend 8 Gb (но не китайская!)
2. Установка Linux.
— качаем образ netinstall дистрибутива: http://cdimage.debian.org/debian-cd/6.0.7/amd64/iso-cd/debian-6.0.7-amd64-netinst.iso
— разворачиваем скачанный образ на флешку не менее 512 Mb (любую, хоть китайскую) при помощи UltraISO или unetbootin (гуглим)
— загружаемся с данной флешки и проводим процесс установки ОС на флешку с которой будет работать наш сервер. Как правило, в процессе установки никаких сложностей не возникает. Единственное, что при выборе дополнительного ПО поставьте галки напротив: «Сервер SSH»(для возможности удалённого управления с помощью PuTTY) и «Стандартные программы…». После окончания установки вынимаем установочную и загружаем Linux.
Устанавливаем дополнительные пакеты, необходимые нам для работы:
apt-get install mc openssl gettext libssl-dev screen monit dvb-apps htop iftop ifstat vlan build-essential mercurial libncurses-dev libevent-dev libglib2.0-dev unzip linux-headers-`uname -r` gpm command-not-found
3. Установка драйверов для плат. Как установить драйвера для конкретной карты ищем на официальном сайте производителя.
Пример для DVBSky s952. Для начала качаем Linux Firmware (см. на странице http://dvbsky.net/Support.html)
root@dvbsky:~# cd /usr/src root@dvbsky:/usr/src# wget http://dvbsky.net/download/dvbsky-firmware.zip
Внутри данного архива есть два файла: dvb-fe-ds300x.fw и dvb-fe-ds3103.fw. Копируем их в папку /lib/firmware.
Качаем непосредственно драйвера для ядра 2.6.x (именно такое ядро в установленной нами Debian):
root@dvbsky:~# cd /usr/src root@dvbsky:/usr/src# wget http://dvbsky.net/download/s2-liplianin-f5cd7d75370e-bst-20120711.zip
Распаковываем и переименовываем папку для удобства:
root@dvbsky:/usr/src# unzip s2-liplianin-f5cd7d75370e-bst-20120711.zip root@dvbsky:/usr/src# mv s2-liplianin-f5cd7d75370e-bst s2-liplianin
Открываем любимый mc , заходим в папку: /usr/src/s2-liplianin/v4l/scripts/ и устанавливаем на все файлы права доступа 0777.
Устанавливаем липлянинские драйвера:
root@dvbsky: cd /usr/src/s2-liplianin root@dvbsky:/usr/src/s2-liplianin# make root@dvbsky:/usr/src/s2-liplianin# make install
После установки драйверов, желательно перезагрузиться и посмотреть обнаружила ли ваша система адаптеры. В случае установки 5 плат, должно быть 10 адаптеров(по общему количеству входов):
4. Монтируем папки в оперативку. Так как наша операционка установлена на флешке, для снижения количества чтений-записей на неё, лучше смонтировать папки в оперативку:
root@dvbsky: mkdir /usr/tmpfs root@dvbsky: chmod 0777 /usr/tmpfs root@dvbsky: tmpfs /var/log tmpfs defaults,noatime,mode=0755 0 0 root@dvbsky: tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0 root@dvbsky: tmpfs /var/tmp tmpfs defaults,noatime,mode=1777 0 0 root@dvbsky: tmpfs /var/run tmpfs defaults 0 0 root@dvbsky: tmpfs /usr/tmpfs tmpfs defaults,noatime,mode=0755 0 0
5. Установка Astra. На начальном этапе, разработчик рекомендует настроить сетевой буфер. Для этого необходимо создать файл net.conf в каталоге /etc/sysctl.d со следующим содержимым:
net.core.rmem_default=262144 net.core.rmem_max=8388608 net.core.wmem_default=262144 net.core.wmem_max=8388608
Изменения вступят в силу после перезагрузки (можно выполнить позже).
Качаем и распаковываем последнюю версию Astra:
root@dvbsky:/# cd /usr/src root@dvbsky:/usr/src# wget http://cesbo.com/download/astra-stable.tar.gz
Заходим в каталог с распакованной астрой и запускаем configure.sh:
Компилируем и устанавливаем:
root@dvbsky:/# cd /usr/src/cesbo-astra-64c4a168c471 root@dvbsky:/usr/src/cesbo-astra-64c4a168c471# make root@dvbsky:/usr/src/cesbo-astra-64c4a168c471# make install
После установки можно выполнить команду astra, в результате которой увидим версию установленной в системе программы:
root@dvbsky:/usr/src/cesbo-astra-64c4a168c471# cd / root@dvbsky:/# astra Astra v.3.10 Usage: astra script [argv] root@dvbsky:/#
6. Конфиг-файл для Astra. Вещаем в сеть.
Создадим файл конфига a0.lua в директории /usr/src , который будет брать с транспондера 12015 МГц телеканал «Восьмой» (нтв+):
#!/usr/bin/astra require("base") log.set({ filename = "/var/log/astra.log", debug = true }) pidfile("/var/run/astra.pid") make_stream( { name = "My_super_test", dvb = { type = "S", adapter = 0, lnb = "10750:10750:10750", tp = "12015:R:27500", lnb_sharing = false } }, { { name = "8 kanal", pnr = 22101, output = {"udp://192.168.1.22@239.0.100.1:1234"}}, } )
Каналов, естественно, может быть и больше (см.открытые каналы на этой странице). Достаточно размножить строку:
{ name = "NAZVANIE_KANALA", pnr = PNR_KANALA, output = {"udp://ADRES_SETEVOY_KARTY@239.0.100.XXX:1234"}},
Устанавливаем права доступа на запуск файла a0.lua.
Теперь файл-конфига можно запустить и если к нулевому адаптеру действительно подключен выход конвектора на 36-ой градус, то по адресу в вашей сети «udp://@239.0.100.1:1234» лицезреем вещаемый телеканал (к примеру, с помощью проигрывателя VLC).
Для каждого адаптера создаётся свой файл-конфиг, как на скрине:
О том, как запускать конфиги в фоновом режиме, с помощью программы screen, я писал здесь: http://conture.by/post/819