5 June 2011

Управление радиоэфиром через браузер

DIY
Airtime LogoВ процессе создания своей радиостанции поток идей дошел до ведения эфиров через веб-интерфейс. Сначала пытался найти готовые решения, но в рунете почти ничего не нашел. Начал продумывать способ реализации и чудом наткнулся на статью в английской версии Википедии про Airtime (до 18 января 2011 г. – Campcaster) от Sourcefabric.

Возможности Airtime:
  • Создание эфирной сетки и плейлистов через веб-интерфейс ;
  • Загрузка музыки через браузер (поддержка drag and drop);
  • Регистрация ведущих, которые имеют доступ к админке и могут управлять эфирами;
  • Создание виджетов с расписанием эфиров и треков для сторонних сайтов;
  • Возможность записывать эфиры для повторной трансляции;
  • Несколько вариантов трансляции аудиопотока.
Минимальные системные требования, описанные в официальной инструкции: 1Ghz процессор и 512Mb оперативной памяти.

Выбор параметров сервера


Первый тестовый сервер:
  • ОС: Ubuntu-10.10-x86_64;
  • CPU: 500Mhz;
  • Память: 256Mb;
  • Дисковое пространство: 5000Mb.

Нагрузка на «холостом ходу» без слушателей доходила до 90%. В обычном режиме сервер не смог бы поддерживать комфортное прослушивание радио. Да и все программные модули занимают почти 1Гб, что составляет 20% от общего дискового пространства.

Второй сервер:
  • ОС: Ubuntu-10.10-x86_64;
  • CPU: 750Mhz;
  • Память: 512Mb;
  • Дисковое пространство: 20Gb.

Этот сервер показал себя лучше. На «холостом ходу» нагрузка на процессор в среднем 25%, можно использовать в качестве сервера для небольшого количества слушателей.

Настройка сервера


Airtime со всеми необходимыми пакетами можно установить как в ручном режиме, так и автоматически. В любом случае нужно подготовиться, а именно добавить Surcefabric в список репозиториев, потому что у них есть все необходимые пакеты.
$ nano /etc/apt/sources.list

Для Ubuntu добавляем строку:
deb apt.sourcefabric.org lucid main
#или
deb apt.sourcefabric.org maverick main


Для Debian:
deb apt.sourcefabric.org squeeze main

Обновляем список репозиториев:
$ apt-get update

Устанавливаем ключ подписи:
$ apt-get install sourcefabric-keyring

Airtime для хранения плейлистов, информации о треках и пользователях использует базу данных PostgreSQL. Поэтому устанавливаем ее:
$ apt-get install postgresql

Для того чтобы пользователи могли услышать эфир нужно установить потоковый сервер. Я использую для этих целей Icecast2, так как он очень удобен для настройки и использует мало системных ресурсов.
$ apt-get install icecast2

Если трансляция планируется на аудиовыход звуковой карты, то нужно удалить аудиосервер PulseAudio, а вместо него поставить ALSA микшер.
$ apt-get purge pulseaudio

Для графического интерфейса:
$ apt-get install gnome-alsamixer

Для консоли:
$ apt-get install alsa-utils

Установка Airtime в ручном режиме

Установка всех необходимых пакетов:
$ apt-get install apache2 curl daemontools daemontools-run ecasound \
gzip libao-ocaml libapache2-mod-php5 libcamomile-ocaml-dev libesd0 \
libmad-ocaml libmp3lame0 libmp3lame-dev libportaudio2 libsamplerate0 \
libsoundtouch-ocaml libtaglib-ocaml libvorbis-ocaml-dev mpg123 multitail \
odbc-postgresql oggvideotools openssl php-pear php5-curl php5-gd \
php5-pgsql poc-streamer pwgen python python-configobj python-mutagen \
python-pip python-setuptools rabbitmq-server tar unzip


Далее устанавливаем необходимые для работы Airtima модули для Python:
$ pip install kombu
$ pip install poster


Устанавливаем phing:
$ mkdir -p /tmp/pear/cache
$ pear channel-discover pear.phing.info
$ pear install phing/phing-2.4.2


Скачиваем, распаковываем и устанавливаем Airtime:
$ wget downloads.sourceforge.net/project/Airtime/1.8.1/Airtime-1.8.1.tar.gz
$ tar -xvzf Airtime-1.8.1.tar.gz -C /var/lib/
$ chown -R root.root /var/lib/Airtime/
$ cd /var/lib/Airtime/install/
$ php Airtime-install.php


Работаем с Apache. Настраиваем необходимые модули и создаем конфигурацию виртуального хоста:
$ a2enmod php5 rewrite
$ nano /etc/apache2/sites-available/Airtime


В открытом файле прописываем:
<VirtualHost *:80>
ServerName example.com
ServerAdmin admin@example.com
DocumentRoot /var/www/Airtime/public
SetEnv APPLICATION_ENV "development"

<Directory /var/www/Airtime/public>
DirectoryIndex index.php
AllowOverride all
Order allow,deny
Allow from all
</Directory>
</VirtualHost>

Сохраняем и перезагружаем Apache
$ /etc/init.d/apache2 reload

Настраиваем PHP под работу Airtime, для этого в файле /etc/php5/apache2/php.ini необходимо найти и изменить следующие параметры:
memory_limit = 256M
magic_quotes_gpc = Off
file_uploads = On
upload_tmp_dir = /tmp
phar.readonly = Off

Дальше нам не обходимо настроить Icecast2, для этого идем редактировать конфигурационный файл /etc/icecast2/icecast.xml. Наиболее важно прописать пароль для вещания из сторонних приложений, его нужно будет прописывать и в других конфигурационных файлах. Пароли прописываем между тегами <source-password>, <relay-password> и <admin-password>
<authentication>
        <source-password>somepassword</source-password>
        <relay-password>somepassword</relay-password>
        <!-- Доступ к админке icecast2 -->
        <admin-user>admin</admin-user>
        <admin-password>adminpassword</admin-password>
</authentication>

После этого нам надо разрешить запуск icecast2:
$ nano /etc/default/icecast2

Заменить строку ENABLE=false на ENABLE=true, сохранить и перезапустить IceCast2:
$ service icecast2 start

Далее нам нужно настроить liquidsoap, который будет направлять поток с Airtime на IceCast2:
$ nano /etc/Airtime/liquidsoap.cfg

В секции «stream settings» прописываем параметры доступа к icecast2.
# Необходимо прописать тот же пароль, что и в icecast.xml
Icecast_pass = “somepassword”
# Какой поток, будем отправлять. Можно со звуковой карты или отправлять в формате
# Ogg Vorbis и MP3. Для свого сервера я формировал поток в MP3, без использования
# звуковой карты.
output_sound_device = false
output_icecast_vorbis = false
output_icecast_mp3 = true

Перезапускаем сервер и можем начинать эфир.

Установка в автоматическом режиме

$ mkdir -p /tmp/pear/cache
$ apt-get install Airtime


Во время установки будут заданы вопросы по конфигурации Apache2 и RabbitMQ.
После установки необходимо настроить PHP, IceCast2, Liquidsoap и Airtime. Перезапускаем сервер и можем начинать эфир.

Настройка эфира через веб-панель


Идем на виртульный хост, который прописан в /etc/apache2/sites-available/Airtime (в нашем случае example.com), нас приветствует форма авторизации. С самого начала логин и пароль – «admin».


После входа выбираем в меню «CONFIGURE -> Manage Users» и меняем пароль администратора, тут же можно создать новых пользователей, с разными типами доступа.


Во вкладке «ADD MEDIA» у нас есть возможность загрузить музыку, которую мы планируем использовать на радио. Поддерживается мультизагрузка и «drag and drop».


Вкладка «PLAYLIST BUILDER» позволяет создать новые плейлисты. Это осуществляется путем перетаскивания треков из списка загруженных в плейлист.


Во вкладке «CALENDAR» мы создаем и редактируем сетку эфиров.


Как только мы настроим эфиры, добавим музыку и плейлисты, то нужная музыка будет играть четко по расписанию.
Идем на example.com:8000 и можем прослушать свое радио.

Заключение


Достоинства Airtime:
  • Простая установка;
  • Понятный графический интерфейс;
  • Гибкость настройки;
  • Возможность транслировать эфир на звуковую карту.

Недостатки:
  • Сильно нагружает систему;
  • Плохая поддержка кириллицы.

Если вы планируете транслировать свою радиостанцию для большого количества слушателей, то лучше использовать несколько серверов:
  1. Сервер средней мощности для установки на него Airtime и всех сопутствующих утилит;
  2. Мощный сервер для установки на него Icescast2, который будет ретранслировать поток с первого сервера.


Больше информации про Airtime и его настройку можно найти на сайте разработчика: www.sourcefabric.org/en/products/Airtime_overview
Tags:Airtimeicecast2потоковое вещаниерадио
Hubs: DIY
+60
17k 156
Comments 34