Pull to refresh

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

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


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

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

Проще всего рассказывать с конца, со слушателей. Слушатели подключаются к запущенному на стороне сервера демону вещания 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 и играет свободную музыку, с которой мы все довольно мало знакомы, а система голосования позволяет выстраивать удобоваримый эфир и находить интересную свободную музыку.

Описанный подход, конечно, всего лишь один из возможных и претендует он только на то, чтобы показать как может быть устроена действующая интернет-радиостанция.
Tags:
Hubs:
Total votes 42: ↑40 and ↓2 +38
Views 14K
Comments Comments 36