Библиотека сайта rus-linux.net
Интернет-радиостанция на Icecast
Оригинал: Broadcast your music with Icecast
Автор: Kurt Edelbrock
Дата: 17 апреля 2008
Перевод: Александр Тарасов aka oioki
Дата перевода: 28 апреля 2008
Знали ли вы, что на вашей Linux-машине можно устроить настоящую интернет-радиостанцию? Просто добавляете песни в плейлист, настраиваете Icecast-сервер и - вуаля! - у вас свой собственный аудиопоток. Можно слушать его самому удаленно, но гораздо интересней рассказать о новой радиостанции своим друзьям.
Icecast - это набор программ и библиотек, с помощью которых можно создать интернет-радиостанцию. Icecast забирает звуковой поток из программы-источника, и раздает всем, кто обратится по определенному URL-адресу. Прослушивать ваш поток пользователи могут с помощью программ типа VLC, MPlayer и Xine.
Для передачи звука Icecast-серверу требуется программа-источник. Мы будем использовать Ices, который распространяется в двух версиях: версия 0.x поддерживает MP3-потоки, а версия 2.x - потоки в формате Ogg Vorbis. К сожалению, настройка Icecast-сервера и клиента Ices довольно сложна, особенно для новичков.
Многие дистрибутивы, включая Ubuntu и Debian, уже содержат пакеты в репозиториях. Мы все же рассмотрим ручной процесс установки. Во-первых, нужно установить зависимости пакетов - libxml2, libxslt1-curl, libxslt1-dev, vorbis-tools, libogg-dev, libvorbis-dev и libshout3-dev. Затем нужно скачать файлы
Icecast и Ices. Извлеките исходные тексты из архивов, и отдайте обычные команды: ./configure
, make
, make install
.
Настройка Icecast
Конфигурационный файл Icecast находится в /usr/local/etc/icecast.xml
, либо в зависимости от дистрибутива, в другом месте. Здесь хранятся все основные настройки сервера. Нужно изменить поле <source-password>
- этот пароль защищает аудиопоток при его передаче от источника к Icecast. Пароль, указанный в поле <admin-password>
используется для аутентификации пользователя при попытке просмотра XML-статистики потока. Свой домен и порт можно указать в поле <listen-socket>
. В <logdir>
хранится путь, по которому будут сохраняться логи. Не забудьте установить соответствующие права на этот каталог, чтобы сервер смог в него писать.
Также нужно указать настройки монтирования, особенно в том случае, когда вы хотите опубликовать свой аудиопоток. Эти настройки включают в себя имя потока, веб-сайт и вступительный аудиофрагмент при подключении к потоку. Их можно найти в секции <mount>
. Среди них такие настройки как <max-listeners>
, <stream-name>
, <stream-description>
, <stream-url>
и <genre>
. stream-url ссылается на адрес в публичных каталогах. <mount-name>
- это то, что будет составлять URL-адрес вашего потока, после имени сервера, например, http://localhost/точка_монтирования. Если вы хотите иметь защищенный паролем поток, это можно сделать с помощью полей <username>
и <password>
. Если хотите, чтобы несколько точек монтирования использовали более чем один поток, можно продублировать всю секцию (включая поля <mount>
), поместить их под предыдущими настройками и отредактировать.
Теперь можно запустить сервер командой icecast -c /usr/local/etc/icecast.xml
. Возможно, придется указать свой путь до конфигурационного файла. Можно проверить работоспособность сервера с помощью команд top или htop, или сразу зайдя браузером на http://your_ip:port/admin/stats.xml
. Имя пользователя - admin
, а пароль вы указали в поле <admin-password>
.
Создание аудиопотока с помощью Ices
Итак, Icecast-сервер запущен, теперь нужно настроить источник, чтобы он отдавал аудиопоток серверу. В данном случае мы предполагаем, что как сервер Icecast, так и источник Ices установлены на одной машине, хотя это не обязательно.
Во-первых, нужно создать плейлист, в котором будет список песен, которые клиент должен проигрывать. Создайте файл playlist.txt с помощью текстового редактора и наполните его следующим образом:
/music/track1.mp3 /music/track2.ogg # и т.д...
Есть и простой способ создания плейлиста. Нужно лишь, чтобы все аудиофайлы располагались в одном каталоге. После выполнения следующей команды будет создан файл playlist.txt, содержащий все MP3-файлы из текущего каталога.
find /путь/к/каталогу -iname "*.mp3" > playlist.txt
Можно сделать то же самое и для OGG-файлов, изменив параметр -iname
, либо вообще можно опустить опцию -iname "*.mp3"
, чтобы добавились все файлы из указанного каталога. Однако в этом случае нужно проследить, чтобы в плейлист попали лишь аудиофайлы, иначе Ices выдаст ошибку. После создания файла плейлиста можно запускать Ices:
Ices -h имя_компьютера.com -P ваш_пароль -F /путь/к/файлу/playlist.txt
Случайный режим проигрывания песен включить просто. Сначала, как обычно, создайте плейлист. Затем откройте в текстовом редакторе файл /etc/Ices2/Ices-playlist.xml
и измените значение поля <param name="random">
на 1. Теперь Ices будет проигрывать файлы в случайном порядке.
Можно не указывать опцию -h
, тогда Ices будет отсылать поток не на удаленную, а на локальную машину. Можно указать опцию -p порт
, если Icecast работает на другом, отличном от установленного по умолчанию, порту.
Теперь откройте браузером или плеером адрес точки монтирования, указанный в конфигурационном файле, вы должны услышать первую песню плейлиста. Клиент-источник Ices будет продолжать передавать поток Icecast-серверу, и слушатели, подключившиеся позже, будут слышать поток в его текущей точке.
Завершив настройку аудиопотока, можно выключить все сервера отдачей команд killall Ices
и killall icecast
.
Перед тем, как анонсировать свою радиостанцию в интернете, подумайте о том, что в большинстве случаев владельцы радиостанций должны платить отчисления музыкантам, песни которых они вещают.
Установив свой потоковый сервер, вам сложно будет от него отказаться. К нему можно будет получить доступ с любого компьютера, подключенного к интернету. Можно показывать своим друзьям свои новые песни. Можно использовать его на работе для вещания записей собраний и конференций, если какой-нибудь сотрудник пропустит их. Или еще лучше, откажитесь от своей работы :-) и пускайтесь в борьбу среди лучших интернет-радиостанций. Все это и многое другое можно сделать, имея Icecast на своей Linux-машине.