January 8, 2010

Icecast Mountpoint Fallback или как настроить автопереключение каналов

Бывает что необходимо настроить Icecast на работу с двумя источниками на одной точке монтирования (т.н. mountpoint), например когда у Вас есть круглосуточно транслирующий музыку компьютер (источник №2), и Вы хотите время от времени включаться в эфир со своего компьютера (основной источник №1), вести этот эфир, но так, чтобы в процессе этих переключений слушателей не отсоединяло, а они оставались подключенными к трансляции, чтобы их перебрасывало автоматически. Ниже я опишу один из возможных вариантов реализации такой схемы.

Допустим, у нас есть канал /radio_128, работающий в формате MP3 и качестве 128 килобит в секунду. Это — основной канал, и к нему будет подключаться основной источник (в нашей ситуации — домашний компьютер). Для резервного источника №2 мы создадим вторую точку монтирования — /radio_128_fallback, и настроим вещание со второго источника именно на неё. Важно: сигнал на второй точке монтирования должен иметь такие же битрейт, частоту и формат, иначе айскаст не сможет, переключившись, воспроизвести сигнал.

Теперь настроим связь между этими точками. Нам нужно, чтобы вторая точка использовалась в качестве резервной. Для этого пропишите в конфиге icecast.xml (в системе FreeBSD он расположен по /usr/local/etc/icecast.xml) в настройках первой (основной) точки /radio_128 следующее:
<mount>
<mount-name>/radio_128</mount-name>
<fallback-mount>/radio_128_fallback</fallback-mount>
<fallback-override>1</fallback-override>
</mount>
Как видим, добавлены опции fallback-mount и fallback-override:
  • fallback-mount определяет точку монтирования (mountpoint), на которую следует переадресовывать слушателей если этот источник выключен
  • fallback-override определяет возвращать ли слушателей назад если источник вновь подключится и точка монтирования заработает

Внимание! У Вас в icecast.xml, вполне вероятно, может не оказаться секции <mount>* — в таком случае впишите её вручную в соответствии с этим описанием настройки секции <mount>.

* значит icecast автоматически создавал mountpoint на время работы подключившегося источника

2 comments:

Anonymous said...

Как реализовать данную функцию на Линуксе с Icecastom? И если для этого надо ices, то какой конфиг в него прописывать?

01001 said...

Реализуйте эту функцию в icecast, а ices'ом просто передавайте в него данные.