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