IceCast. Разбор параметров конфига

Главная страница IceCast

Сразу хочется сказать, что данная статья является моим вольным переводом официальной документации к IceCast, по этому если вам легче читать всё в оригинале, то вот — Icecast 2.4.1 Docs — Config File

Делать перевод всех параметров я не нашёл нужным, так как это только нас напряжёт, а рассмотрел только те, которые могут пригодиться начинающему и «продолжающему» вещателю.

Limits

Как гласит официальная документация, эти настройки из коробки хороши и не стоит их менять, но стоит обратить внимание на clients и sources.

<limits>
 <clients>100</clients>
 <sources>2</sources>
 <queue-size>102400</queue-size>
 <client-timeout>30</client-timeout>
 <header-timeout>15</header-timeout>
 <source-timeout>10</source-timeout>
 <burst-on-connect>1</burst-on-connect>
 <burst-size>65536</burst-size>
</limits>

clients
Количество клиентов подключенных к серверу, и не только к точкам монтирования но и к админке или страничкой со статистикой.
sources
Максимальное число потоков поддерживаемых сервером, имейте в виду, что иногда для ведения прямых эфиров не из студии создаётся ещё один дополнительный поток для ретрансляции, по этому лучше выставить это число с запасом что бы потом не гадать — «Почему RadioBOSS не подключается?»

Authentication

Тоже довольно важная секция — в ней хранятся пароли которые мы будем довольно часто использовать. Обратите внимание, что когда вы будете где то просить помощи по настройке IceCast — не копируйте её или «затирайте» её содержимое.

<authentication>
 <source-password>hackme</source-password>
 <relay-user>relay</relay-user>
 <relay-password>hackme</relay-password>
 <admin-user>admin</admin-user>
 <admin-password>hackme</admin-password>
</authentication>

source-password
Пароль для подключения к серверу из вещательной программы
admin-user
Имя пользователя для администрирования сервера через браузер
admin-password
Пароль пользователя для администрирования сервера через браузер

Stream Directory Settings

Секция благодаря которой можно включить наши потоки в streaming directory (каталог радиостанций от разработчиков IceCast. Тут лучше ничего не трогать.

<directory>
 <yp-url-timeout>15</yp-url-timeout>
 <yp-url>http://dir.xiph.org/cgi-bin/yp-cgi</yp-url>
</directory>

Misc Server Settings

IceCast Server Information

По факту в этой секции находится информация которая отображается на вкладке Server Information.

<hostname>localhost</hostname>
<location>earth</location>
<admin>icemaster@localhost</admin>
<fileserve>1</fileserve>
<server-id>icecast 2.4.1</server-id>

hostname
Домен или ip адрес (если нет домена) на котором находится сервер
location
Местонахождение сервера
admin
Контактные данные администратора сервера
fileserve
Включает сервер для статических файлов, для корректной работы админки — выключать его не рекомендуется

Global HTTP header

Заголовки с которыми сервер отвечает при запросах. Не стоит этим заморачиваться, нам это никак не поможет.

<http-headers>
 <header name="Access-Control-Allow-Origin" value="*" />
 <header name="X-Robots-Tag" value="index, noarchive" />
 <header name="foo" value="bar" status="200" />
 <header name="Nelson" value="Ha-Ha!" status="404" />
</http-headers>

Mount Specific Settings

Самая важная секция, именно в ней настраивается каждый поток, на ней мы остановимся подробнее.

<mount type="normal">
<mount-name>/example-complex.ogg</mount-name>
<username>othersource</username>
<password>hackmemore</password>
<max-listeners>1</max-listeners>
<max-listener-duration>3600</max-listener-duration>
<dump-file>/tmp/dump-example1.ogg</dump-file>
<intro>/intro.ogg</intro>
<fallback-mount>/example2.ogg</fallback-mount>
<fallback-override>1</fallback-override>
<fallback-when-full>1</fallback-when-full>
<charset>ISO8859-1</charset>
<public>1</public>
<stream-name>My audio stream</stream-name>
<stream-description>My audio description</stream-description>
<stream-url>http://some.place.com</stream-url>
<genre>classical</genre>
<bitrate>64</bitrate>
<type>application/ogg</type>
<subtype>vorbis</subtype>
<hidden>1</hidden>
<burst-size>65536</burst-size>
<mp3-metadata-interval>4096</mp3-metadata-interval>
<authentication type="xxxxxx">
<!-- See listener authentiaction documentation -->
</authentication>
<http-headers>
<header name="Access-Control-Allow-Origin" value="*" />
<header name="X-Robots-Tag" value="index, noarchive" />
<header name="foo" value="bar" status="200" />
<header name="Nelson" value="Ha-Ha!" status="404" />
</http-headers>
<on-connect>/home/icecast/bin/source-start</on-connect>
<on-disconnect>/home/icecast/bin/source-end</on-disconnect>
</mount>

mount-name
Имя точки монтирования
username
Имя пользователя для программы которая этот поток транслирует, если его не задавать то используется только пароль из ветки Authentication
password
Пароль к конкретно этой точке монтирования,  рекомендуется ставить если хочется дать доступ к серверу какому либо дружественному проекту, так как не потребуется давать глобальный пароль
max-listeners
Максимальное число слушателей конкретного потока
max-listener-duration
Максимальная длительность прослушивания потока. Как правило — лучше ей не пользоваться, вдруг у кого то эта станция играет круглосуточно на компьютере.
intro
Файл который будет проигрываться при подключении к потоку. Категорически не рекомендую пользоваться — так как это сильно надоест слушателю.
fallback-mount
Поток который будет проигрываться в случае отсутствия вещания. Полезная опция, ведь если указать путь к резервному потоку (желательно поднятом на этом же сервере). То в случае отвала сигнала со студии в эфире будет не тишина, а тот самый резервный поток.
fallback-override
Позволяет обратно возвращать слушателей если основной поток — восстановился
charset
Позволяет указать кодировку для метаданных (применять на случай появления «кракозябр» вместо названия композиции)
public
Указывает на возможность индексации радиостанции каталогом (http://dir.xiph.org/). Данный параметр поддерживает и RadioBOSS, не обязательно его прописывать в конфиге.
stream-name
Имя станции. Именно это имя подхватывают плееры, если его не указали вручную. Стоит отнестить к этому параметру внимательнее.
stream-description
Описание станции. Так же может где то отображаться, следует заполнить корректно.
stream-url
Сайт радиостанции
genre
Жанр радиостанции
bitrate
Битрейт потока
on-connect
Позволяет запустить что-либо при подключении слушателя (например дёрнуть php файл для отображения количества слушателей)
on-disconnect
То же самое что и предыдущий пункт, только при отключении слушателя

Path Settings

Секция с настройкой путей к различным файлам

<paths>
<basedir>./</basedir>
<logdir>./logs</logdir>
<pidfile>./icecast.pid</pidfile>
<webroot>./web</webroot>
<adminroot>./admin</adminroot>
<allow-ip>/path/to/ip_allowlist</allow-ip>
<deny-ip>/path_to_ip_denylist</deny-ip>
<ssl-certificate>/path/to/certificate.pem</ssl-certificate>
<ssl-allowed-ciphers>ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS</ssl-allowed-ciphers>
<alias source="/foo" dest="/bar"/>
</paths>

logdir
Путь к «логам» IceCast. Позволяет мониторить статистику и отслеживать проблемы.

Logging Settings

Настройки логирования

<logging>
<accesslog>access.log</accesslog>
<errorlog>error.log</errorlog>
<playlistlog>playlist.log</playlistlog>
<loglevel>4</loglevel> <!-- 4 Debug, 3 Info, 2 Warn, 1 Error -->
</logging>

accesslog
Имя файла с логом подключений (IP всех кто подключался к серверу)
errorlog
Имя файла с логом ошибок.
playlistlog
Имя файла куда складываются проигранные треки
loglevel
Уровень логирования
4 debug — необходимый для отладки, включать только при поиске какой либо проблемы
3 info — записывать все сообщения
2 warn — записывать сообщения об ошибках и некритичных вещах
1 error — записывать сообщения только о критичных ошибках

Делаем выводы

При установке IceCast и старте вещания стоит один раз потратить время, изучить все нюансы, настроить сервер и забыть. Он будет молча и стабильно работать, а это нам и требуется. И в будущем вы только будете переносить icecast.xml с сервера на сервер, если это потребуется.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *