пятница, 12 августа 2011 г.

Устройство интернет-радиостанции


В статье я расскажу, наконец, как устроена наша радиостанция изнутри.





Речь пойдёт об основных используемых программах и общем подходе к организации круглосуточного вещания с возможностью прямых включений.



Итак, что такое интернет-радиостанция? Это программно-аппаратный комплекс, который формирует некоторый звуковой результат. В нашем случае это музыка, заставки, прямые эфиры. Слушатели могут подключаться к потоку любимым музыкальным плеером или слушать с сайта.



Проще всего рассказывать с конца, со слушателей. Слушатели подключаются к запущенному на стороне сервера демону вещания icecast2 (далее просто icecast), который раздаёт каждому готовый mp3-поток. При этом за формирование mp3 потока отвечает другая программа, icecast может только переключаться между входящими потоками.



В нашем случае в штатном режиме icecast вещает поток который формирует ices. Если к icecast присоединится ведущий чтобы провести прямой эфир, то icecast автоматически переключается на него, как на более приоритетный поток. Кстати, при этом модуль ices работает параллельно и ничего о произошедшем не знает, то есть продолжает формировать свой фоновый поток. Этим, кстати, может пользоваться (и пользуется) ведущий и ретранслировать его через себя, домешивая к голосу и разговаривая в паузах, но это тема прошлой статьи.



Icecast2: прямые эфиры и переключение потоков

Вообще говоря, Icecast2 это такой мультиплексор, у него есть несколько входных потоков, между которыми он переключается и есть слушатели, которым он раздаёт результат.



Как работает прямой эфир понятно: от ведущего должен идти сформированный поток, который icecast будет раздавать по слушателям. Если этот поток отсутствует, то icecast будет вещать основной поток формируемый ices, о чём ниже.



Несмотря на вроде бы довольно простое предназначение icecast имеет ряд уникально-интересных возможностей, при помощи которых можно здорово облегчить себе жизнь и разнообразить работу станции.



Например, icecast позволяет назначить скрипты на переключение потоков. Именно такие скрипты при начале эфиров отправляют сообщения в радийный твиттер и начинается автоматическая запись, а при окончании прямого эфира запись автоматически переносится в надлежащее место, обновляется rss, сообщение о появлении записи идёт в твиттер.



Такие вещи делают радио кроме всего прочего ещё и удобным для слушателей: легко попасть на эфир, даже если он не плановый, а если пропустили — послушать в режиме подкаста.



ices + ardj: основное вещание

Когда ведущего нет, то радио играет музыку, джинглы и микроподкасты; этим всем у нас занимается ices при мощной поддержке ardj.



Ices занимается декодированием mp3 или ogg файлов, формированием готового к ретрансляции сплошного потока, внутри него же происходит частичное смешивание дорожек (cross-fade).



Вообще у ices есть два основных режима работы:

      1) играть музыку по заданному плейлисту

      2) вызывать внешний скрипт, который скажет что играть.



Первый вариант довольно скучный, мы пользуемся вторым: за формирование эфира отвечает ardj. Когда очередная песня подходит к концу ices вызывает ardj, который возвращает ему имя файла с очередной песней или заставкой, которую сейчас следует проиграть.



ardj — это изобретение umonkey, логике работы ardj надо посвящать отдельную статью, а то и книгу, но если коротко, то он умеет:

    – рейтинги: за музыку у нас можно голосовать;

    – метки;

    – плейлисты;

    – прероллы: перед песнями можно делать заставки от музыкантов,

    – очередь проигрывания (имеет приоритет перед плейлистами, управляется людьми).



Накапливаемые голоса за или против песен позволяют вычислять условно «хорошую» и «плохую» музыку, этот рейтинг влияет на частоту ротации, есть специальное время когда играется отстой — кандидаты на вынос из ротации вообще, а после 13:00 наоборот играется музыка с повышенным рейтингом, которую просто приятно послушать.



Все эти возможности ardj позволяют оргазнизовать близкую к реальной жизни радиостанцию: например, играть утром что-то весёлое, а ночью только спокойную музыку, разбавлять всё это дело джинглами, днём у нас, например, есть час микроподкастов и так далее (наша сетка вещания).



В работу ardj могут вмешиваться администраторы и обычные пользователи при помощи сообщений jabber-боту.



Вместо заключения

«Тоже мне радио» плотно замешано на идеях open source и играет свободную музыку, с которой мы все довольно мало знакомы, а система голосования позволяет выстраивать удобоваримый эфир и находить интересную свободную музыку.



Описанный подход, конечно, всего лишь один из возможных и претендует он только на то, чтобы показать как может быть устроена действующая интернет-радиостанция.









Источник: Хабрахабр - Работа со звуком
Оригинальная страница: Устройство интернет-радиостанции

Комментариев нет:

Отправить комментарий