Как оставить слушателей онлайн при отключении ведущего. Включение второго ведущего

Отключение источника

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

Как вы помните, источники и слушатели в icecast подключаются к точке подключения (она же точка монтирования, mount point). Стрелками на рисунках показано движение звукового потока.

icecast точка монтирования

Одновременно может существовать несколько точек подключения. И у каждой из них есть имя. С помощью имени источники и слушатели находят определённую точку, к которой они хотят подключиться.

icecast несколько mount point

Точку подключения айскаста можно настроить так, что при отключении ведущего слушатели будут переброшены на другую точку подключения. «Запасная» точка подключенияfallback — точка, на которую будут переброшены слушатели. Например, на следующем рисунке для точки подключения /live запасной назначена /muz.

icecast запасная точка подключения — fallback

Но схема, когда одновременно можно слушать вещание и на основной, и на запасной точке не всегда уместна. Иногда желательно, чтобы запасная точка не была видна и к ней нельзя было подключиться. Icecast может скрывать точки подключения, показываемые на странице статуса, с помощью настройки <hidden>.

icecast скрытая запасная точка

Настройку <hidden> мы рассматривали в уроке «Точки подключения».

Возвращение источника

Что же произойдёт, когда ведущий после отключения вновь подключился? Его слушатели уже перенесены на другую точку подключения. Значит есть две возможности: оставить их на запасной точке или вернуть источнику. Причём, вернуть следует только тех, кто «свалился» (fall) на запасную точку при отключении источника.

Icecast поддерживает обе эти возможности. Задать нужное поведение можно с помощью настройки <fallback-override> (см. далее).

Переполнение точки

Как вы помните, для каждой точки подключения можно указать настройку <max-listeners>. С её помощью мы ограничиваем «вместимость» точки — задаём максимальное допустимое число слушателей. Слушатели, пытающиеся подключиться к точке, которая достигла предела будут отключены.

Сервер вещания icecast можно настроить так, чтобы «не поместившиеся» слушатели также переносились на запасную точку. Для этого служит настройка <fallback-when-full> (см. ниже). Отдельную точку для этого случая указать нельзя, перемещение будет на ту же запасную точку, что и при отключении.

Файл настроек

«Запасная» точка подключения настраивается в секции <mount>. Для этого есть три настройки, начинающиеся с fallback:

    <mount>
        <mount-name>/live</mount-name>
        <fallback-mount>/muz</fallback-mount>
        <fallback-override>1</fallback-override>
        <fallback-when-full>1</fallback-when-full>
        <hidden>1</hidden>
    </mount>

fallback-mount

Указывает имя «запасной» точки подключения. Когда источник данной точки отключается, слушатель автоматически переводится («падает» — fall) на запасную точку. Причём, переносится он также в том случае, когда источник отсутствует изначально (а не отключается в процессе).

Для любой точки подключения может быть указана только одна запасная. Если не указано ни одной, слушатели будут отключены при отключении источника.

Формат запасной точки

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

Кодек должен совпадать обязательно. Иначе, даже если айскаст и сумеет переключиться, плеер просто не сможет переварить те данные, которые он получит. Для кождого кодека используются свои алгоритмы сжатия, соединить разные потоки просто так нельзя.

Желательно, чтобы совпадали и остальные характеристики звука. Некоторые MP3-плееры испытывают трудности при переключении на звук с другими характеристиками. Некоторые, такие как VLC, переключаются почти незаметно.

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

fallback-override

Параметр типа да/нет. Если разрешено, позволяет источнику при подключении вернуть слушателей обратно (из «запасной» точки).

Например,

  • Мы вещали через точку /a, и в качестве запасной точки у нас прописана /z, на которой тоже идёт вещание.
  • Мы отключаемся (от точки /a), слушатели будут переброшены на точку /z.
  • Теперь если мы снова подключаемся к /a и продолжаем вещание.
    • Слушатели, перемещённые ранее на /z могут быть возвращены.
    • Возвращаются они только если в <fallback-override> задано 1.

fallback-when-full

Параметр типа да/нет. Когда включено, новые слушатели при превышении <max-listeners> будут перемещены на «запасную» точку. Иначе — они будут отключены.

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

Применение

Посмотрим, как можно использовать запасные точки подключения.

Почти радио

Чаще всего запасные точки подключения используются для радио. С помощью запасных точек можно настроить радио, которое будет автоматически «уступать» канал ведущему при запуске вещания.

  1. Вещание (прямой эфир) проводится на точке с именем /live. К ней подключается ведущий и слушатели.
  2. Вторая точка вещания — /hide — транслирует музыку или запись. Она скрыта при помощи настройки <hidden>.
  3. А настройка <fallback-mount> (см. ниже) точки /live указывает на /hide.

icecast радио

Фишка из премиума

Палю фишку: В настройке <fallback-mount> можно задать не только имя точки подключения. Кроме него можно указать имя файла. Тогда вместо перемещения слушателей на другую точку, им будет транслироваться звук из файла.

Имя файла указывается относительно директории файл-сервера (путь задан в <webroot>). Кроме музыки, это может быть файл с каким-либо сообщением. Например, вы можете до вещания запускать mp3 с фразой «Вещание начнётся в 19:00, ...». Или наоборот после окончания «Вещание окончено, акция действует до 24:00». Но для этого понадобится вручную переименовать файл до/после вещания. Или записать универсальный.

Обратите внимание: Файл должен быть в том же формате (звуковом), что и вещание на точке подключения.

Подробности и другие способы настройки радио вы узнаете из урока «Онлайн-Радио».

Комната, ограниченной вместимости

С помощью <fallback-when-full> вы можете например, только первым 100 подключившимся слушателям выдавать премиум-контент на вебинаре. А остальных перенаправлять на другое вещание или радио. Или воспроизводить им сообщение, как описано в предыдущем разделе.

Несколько ведущих (передача микрофона)

У запасной точки может быть указана собственная запасная точка. То есть слушатель будет «падать» пока не найдётся вещающий источник. Либо пока не будет отключен. Таким образом можно провести вещание с несколькими ведущими, без остановок и отключения слушателей.

icecast радио

Для этого всех слушателей приглашаем на точку /live. Точнее, слушатели и не знают ни про какие точки подключения. Просто плеер и ссылки в комнате вещания настроены именно на /live. К этой точке будет подключаться первый ведущий.

Для неё настроена запасная точка, например /hide1. Она скрыта, к ней будет подключаться второй ведущий.

Для точки второго ведущего также может быть настроена следующая точка подключения /hide2. Она тоже скрыта, на ней играет радио.

Теперь, когда вещание началось, все слушают первого ведущего, подключенного к /live. Чтобы передать микрофон второму ведущему, первый отключается. Тут необходимо помнить про задержку.

Первый ведущий может в любой момент «забрать» микрофон обратно. Это произойдёт сразу как он подключится, если указана настройка <fallback-override>.

У этого способа есть недостатки. Он может показаться вам немного громоздским. Но свою задачу решает. К сожалению, айскаст не предназначен для телефонии и конференций в реальном времени. То есть вы не сможете общаться со вторым ведущим как в скайпе.

Виной тому задержка. Если её уменьшить, можно добиться приемлемой паузы на передачу микрофона около 1-2 секунд.

А в уроке «Продвинутое вещание +» мы разберём, как можно с помощью сторонних утилит передавать разговор без пауз.