В процессе создания своей радиостанции поток идей дошел до ведения эфиров через веб-интерфейс. Сначала пытался найти готовые решения, но в рунете почти ничего не нашел. Начал продумывать способ реализации и чудом наткнулся на статью в английской версии Википедии про Airtime (до 18 января 2011 г. – Campcaster) от Sourcefabric.
Возможности Airtime:
Первый тестовый сервер:
Нагрузка на «холостом ходу» без слушателей доходила до 90%. В обычном режиме сервер не смог бы поддерживать комфортное прослушивание радио. Да и все программные модули занимают почти 1Гб, что составляет 20% от общего дискового пространства.
Второй сервер:
Этот сервер показал себя лучше. На «холостом ходу» нагрузка на процессор в среднем 25%, можно использовать в качестве сервера для небольшого количества слушателей.
Airtime со всеми необходимыми пакетами можно установить как в ручном режиме, так и автоматически. В любом случае нужно подготовиться, а именно добавить Surcefabric в список репозиториев, потому что у них есть все необходимые пакеты.
Для Ubuntu добавляем строку:
Для Debian:
Обновляем список репозиториев:
Устанавливаем ключ подписи:
Airtime для хранения плейлистов, информации о треках и пользователях использует базу данных PostgreSQL. Поэтому устанавливаем ее:
Для того чтобы пользователи могли услышать эфир нужно установить потоковый сервер. Я использую для этих целей Icecast2, так как он очень удобен для настройки и использует мало системных ресурсов.
Если трансляция планируется на аудиовыход звуковой карты, то нужно удалить аудиосервер PulseAudio, а вместо него поставить ALSA микшер.
Для графического интерфейса:
Для консоли:
Установка всех необходимых пакетов:
Далее устанавливаем необходимые для работы Airtima модули для Python:
Устанавливаем phing:
Скачиваем, распаковываем и устанавливаем Airtime:
Работаем с Apache. Настраиваем необходимые модули и создаем конфигурацию виртуального хоста:
В открытом файле прописываем:
Сохраняем и перезагружаем Apache
Настраиваем PHP под работу Airtime, для этого в файле /etc/php5/apache2/php.ini необходимо найти и изменить следующие параметры:
Дальше нам не обходимо настроить Icecast2, для этого идем редактировать конфигурационный файл /etc/icecast2/icecast.xml. Наиболее важно прописать пароль для вещания из сторонних приложений, его нужно будет прописывать и в других конфигурационных файлах. Пароли прописываем между тегами <source-password>, <relay-password> и <admin-password>
После этого нам надо разрешить запуск icecast2:
Заменить строку ENABLE=false на ENABLE=true, сохранить и перезапустить IceCast2:
Далее нам нужно настроить liquidsoap, который будет направлять поток с Airtime на IceCast2:
В секции «stream settings» прописываем параметры доступа к icecast2.
Перезапускаем сервер и можем начинать эфир.
Во время установки будут заданы вопросы по конфигурации 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:
Недостатки:
Если вы планируете транслировать свою радиостанцию для большого количества слушателей, то лучше использовать несколько серверов:
Больше информации про Airtime и его настройку можно найти на сайте разработчика: www.sourcefabric.org/en/products/Airtime_overview
Возможности Airtime:
- Создание эфирной сетки и плейлистов через веб-интерфейс ;
- Загрузка музыки через браузер (поддержка drag and drop);
- Регистрация ведущих, которые имеют доступ к админке и могут управлять эфирами;
- Создание виджетов с расписанием эфиров и треков для сторонних сайтов;
- Возможность записывать эфиры для повторной трансляции;
- Несколько вариантов трансляции аудиопотока.
Выбор параметров сервера
Первый тестовый сервер:
- ОС: 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:
- Простая установка;
- Понятный графический интерфейс;
- Гибкость настройки;
- Возможность транслировать эфир на звуковую карту.
Недостатки:
- Сильно нагружает систему;
- Плохая поддержка кириллицы.
Если вы планируете транслировать свою радиостанцию для большого количества слушателей, то лучше использовать несколько серверов:
- Сервер средней мощности для установки на него Airtime и всех сопутствующих утилит;
- Мощный сервер для установки на него Icescast2, который будет ретранслировать поток с первого сервера.
Больше информации про Airtime и его настройку можно найти на сайте разработчика: www.sourcefabric.org/en/products/Airtime_overview