Что можно делать в панели управления. Просмотр статуса вещания. Отключение и перемещение слушателей. Работа с источниками (ведущими)

У сервера вещания icecast есть собственный веб-интерфейс, позволяющий узнать текущий статус и управлять некоторыми вещами. Он разделён на две части: общедоступную и закрытую админку.

Веб-интерфейс построен на основе встроенного файл-сервера. Но кроме простой раздачи файлов он содержит некоторые дополнительные возможности. С их помощью можно послностью поменать оформление страниц.

Сейчас со всеми этими возможностями разберёмся. План урока:

Веб-интерфейс айскаста

Веб-интерфейс айскаста состоит из двух частей: общедоступных страниц статуса и закрытой (паролем) панели управления. Мы ранее уже заходили на страницу веб-интерфейса. Именно с неё мы брали ссылку на вещание для плеера.

Как вы помните, эта страница открывается в обычном браузере по адресу http://server:port. Вместо server и port будет соответственно адрес и порт вашего сервера.

Статус, общедоступная часть

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

Рассмотрим страницы общедоступной части.

Страница Version

Здесь отображается версия айскаста и общая информация — первые 4 строки. Все эти параметры информативные (если включен каталог, некоторые передаются в него). Их можно можно заменить на произвольные в файле настроек. Но если будете менять <hostname>, то необходимо прописать <bind-address> как описано в уроке «Устройство».

icecast: страница Version

ПолеПо умолчаниюОписаниеНастройка
Location Earth Место расположения сервера <location>
Admin [email protected] Почта админа <admin>
Host localhost Адрес сервера <hostname>
Version Icecast <версия> Версия айскаста <server-id>

В следующих 5 строках разработчики разместили ссылки на некоторые разделы оф.сайта. При желании, их можно спрятать, если исправить файл шаблона страницы (см. далее).

Страница Server Status

На странице расположена информация о идущих сейчас вещаниях. Если вещаний нет, может быть пустой. Для каждой точки подключения показан заголовок и несколько строк, описывающих поток. В заголовке указано имя точки подключения и две ссылки на плейлисты: M3U и XSPF. В описании:

icecast: страница Status

ПараметрОписание
1 Stream Title Название потока
2 Stream Description Описание потока
3 Content Type Тип контента (как задаётся для протокола HTTP)
4 Mount started Дата и время начала вещания
5 Bitrate Битейт потока (передаётся плеером, может быть неверным)
6 Current Listeners Сколько сейчас слушателей
7 Peak Listeners Пик слушателей (максимум за вещание)
8 Stream Genre Жанр потока
9 Stream URL Ссылка потока (на самом деле произвольная строка)
10 Current Song Проигрываемая сейчас песня

Некоторые из этих значений задаются в программе вещания, некоторые можно указать в конфиге. Остальные — вычисляются.

Если вы хотите скрыть точку подключения от посторонних глаз, пропишите для неё в файле настроек параметр <hidden>1</hidden>.

Administration

Этот пункт — переход в закрытую часть — админку (панель управления). При нажатии на ссылку появится окно с запросом имени и пароля. Имя и пароль задаются в конфиге в параметрах <admin-user> и <admin-password> секции <authentication>.

Закрытая часть

В закрытую часть без пароля не попасть. Если вы забыли имя или пароль, можете посмотреть их в файле настроек айскаста.

Страница Admin Home

Страница похожа на обе общедоступные страницы, объединённые вместе. Но здесь отображается более подробная общая информация о сервере (верхняя часть, Global Server Stats). В том числе отображается суммарная информация по всем точкам подключения.

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

icecast: страница Admin Home

СвойствоОписание
client_connections Число клиентских соединений (накапливается, не совсем ясно)
clients Число активных соединений прямо сейчас
connections Общее число соединений (накапливается)
file_connections Число запросов к файл-серверу (всего)
listener_connections Число слушательских соединений (накапливается)
listeners Сейчас слушателей
source_client_connections Число соединений источников - вещательных приложений
source_relay_connections Число соединений ретрансляторов
source_total_connections Всего соединений от источников (сумма 2 предыдущих значений)
sources Сейчас подключено источников
stats, stats_connections Соединения с каталогами

Под блоком Global Server Stats расположены сведения о точках подключения. Здесь показаны некоторые дополнительные свойства точки, которых нет на общедоступной странице статуса.

СвойствоОписание
audio_info Строка с характеристиками потока (передаётся источником)
authenticator Способ авторизации слешателей (если включена). См. урок «Пароль на вещание»
channels Число каналов (от источника)
listenurl Ссылка для прослушивания (может быть ошибочной, настоящая по ссылке M3U)
max_listeners Ограничение числа слушателей для точки (unlimited = неограничено)
public Дублирует этот же параметр из настройки точки подключения в конфиге
samplerate Частота дискретизации (от источника)
slow_listeners Число медленных слушателей. Похоже, которые не успевают опустошать буфер
source_ip IP источника (ведущего)
total_bytes_read Всего прочитано байт (пришло от источника)
total_bytes_sent Всего отправлено (слушателям) байт
user_agent Строка описания программы вещания. Обычно здесь название приложения и версия

Вы наверняка заметили, что вверху блока информации о каждой точке подключения есть несколько ссылок. Это управляющие команды, они дублируются и на странице List Mountpoints.

Страница List Mountpoints

На странице перечислены вещающие сейчас точки подключения. Подробной информации, как на прошлой странице, нет. Показаны лишь количества слушателей и команды для управления точками.

Команда List Clients

Эта команда выводит список слушателей, подключенных в данный момент к точке. В списке вы увидите следующую информацию о каждом слушателе:

icecast: страница Admin Home

СтолбецОписание
IP IP-адрес слушателя (в скобках — имя, см. урок «Пароль на вещание»)
Seconds Connected Сколько секунд слушатель подключен
User Agent Используемый для прослушивания браузер или программа-плеер
Action Действия. Обычно здесь одна команда отключения Kick.

Кнопка Kick позволяет отключить слушателя. Но некоторые плееры, например VLC, автоматически переподключаются при разрыве соединения. Обычно переподключение полезно, но если вы хотите отключить слушателя самостоятельно, оно мешает. В случае с flash-плеерами переподключения часто нет.

Если вы намерены заблокировать слушателя, это можно сделать. Например, настройкой чёрных списков — параметр <deny-ip> в секции <paths>. В файл чёрного списка следует добавить IP-адрес слушателя.

Если же у вас вещание не для всех, то гораздо удобнее чёрного списка просто установить пароль для доступа. Об этом поговорим в следующем уроке, который так и называется: «Пароль на вещание».

Команда Move Listeners

Команда для переноса всех слушателей точки на другую точку подключения. После её выбора откроется страница, на которой будут перечислены точки подключения, куда можно слушателей перенести. Рядом пишется число слушателей, подключенных к точкам. А справа от каждой расположена кнопка Move Clients, которая слушателей перенесёт.

Warinig

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

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

Note

На странице Admin Home эта команда почему-то названа Move MountPoints.

Команда Update Metadata

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

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

Команда Kill Source

Предназначена для отключения источника (ведущего). Но следует учитывать, что некоторые вещательные программы при потере соединения автоматически переподключаются.

При отключении источника все слушатели точки подключения будут отсоединены. Если прописана запасная точка, слушатели будут перенесены на неё.

Warning

Будьте внимательны. Команда выполняется сразу при нажатии на ссылку, без лишних вопросов.

Страница Move Listeners

Перенос слушателей на другую точку, работает так же как в соответствующей команде. В айскасте 2.3.2 на ubuntu видимо ошибка в шаблоне страницы — открывается такая же страница как List Mountpoints.

Index

Эта ссылка вернёт вас обратно в общий открытый раздел веб-интерфейса.


Warning

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

Получение статистики с помощью скрипта

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

Статистика показывается при обращении к «файлу» http://server:port/admin/stats.xml. Для доступа к нему нужно указать имя и пароль админстратора, т.к. «файл» находится в закрытом разделе. «Файл» в кавычках, потому что на самом деле его содержимое генерируется на лету, файла такого не существует.

Краткую информацию о точках подключения или об определённой точке можно получить при обращении по адреcу /status2.xsl или /status2.xsl?mount=/name. Первый покажет всю информацию, второй — для точки с именем name. Но в похоже файл status2.xsl в репозитории оказался устаревший, доставать информацию из него не очень удобно.

Но вы можете создать собственный .xsl файл и положить его в папку файл-сервера (в которую мы переносили запись вещания). Файл этот задаётся в формате XSLT. Он предназначен для трансформации XML в произвольный вид.

Например, далее показано XSLT-преобразование для получения информации о точках подключения в формате JSON:

<xsl:stylesheet xmlns:xsl = "http://www.w3.org/1999/XSL/Transform" version = "1.0" >
<xsl:output omit-xml-declaration="yes" method="text" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" indent="no" encoding="UTF-8" />
<xsl:strip-space elements="*"/>
<xsl:template match = "/icestats" >{<xsl:for-each select="source">
"<xsl:value-of select="@mount" />":
      {
      "name" : "<xsl:value-of select="server_name"/>",
      "listeners" : "<xsl:value-of select="listeners" />",
      "description" : "<xsl:value-of select="server_description" />",
      "title" : "<xsl:value-of select="title" />",
      "genre" : "<xsl:value-of select="genre" />",
      "url" : "<xsl:value-of select="server_url" />"
}<xsl:if test="position() != last()"><xsl:text>,</xsl:text></xsl:if>
    </xsl:for-each>
}
  </xsl:template>
</xsl:stylesheet>

Cохраните этот файл в папке файл-сервера под именем json.xsl. Теперь при открытии в браузере или из скрипта адреса http://server:port/json.xsl вы получите объект JavaScript c информацией о точках подключения. В параметре можете указать конкретную точку подключения, для которой нужно вернуть информацию: /json.xsl?mount=/name.

Таким же образом вы можете добавить произвольные .xsl файлы и получать любую информацию айскаста в нужном вам виде.

Произвольная настройка веб-интерфейса

Весь веб-интерфейс айскаста построен на XSLT. В директории файл-сервера <webroot> и админки <adminroot> лежит несколько файлов, отвечающих за преобразование XML в HTML. И эти файлы можно отредактировать или вообще заменить собственными.

Например, вы можете вообще спрятать веб-интерфейс айскаста, поменяв содержимое файлов status.xsl и server_version.xsl. Или если захотите, вы можете убрать ссылки на сайты создателей icecast, перевести интерфейс на русский язык. Или даже полностью создать комнату вещания с помощью веб-интерфейса айскаста.

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

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