Сразу хочется сказать, что данная статья является моим вольным переводом официальной документации к IceCast, по этому если вам легче читать всё в оригинале, то вот — Icecast 2.4.1 Docs — Config File
Делать перевод всех параметров я не нашёл нужным, так как это только нас напряжёт, а рассмотрел только те, которые могут пригодиться начинающему и «продолжающему» вещателю.
Limits
Как гласит официальная документация, эти настройки из коробки хороши и не стоит их менять, но стоит обратить внимание на clients и sources.
1 2 3 4 5 6 7 8 9 10 | < 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 — не копируйте её или «затирайте» её содержимое.
1 2 3 4 5 6 7 | < 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. Тут лучше ничего не трогать.
1 2 3 4 | < directory > < yp-url-timeout >15</ yp-url-timeout > </ directory > |
Misc Server Settings
По факту в этой секции находится информация которая отображается на вкладке Server Information.
1 2 3 4 5 | < 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
Заголовки с которыми сервер отвечает при запросах. Не стоит этим заморачиваться, нам это никак не поможет.
1 2 3 4 5 6 | < 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
Самая важная секция, именно в ней настраивается каждый поток, на ней мы остановимся подробнее.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | < 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 > < 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
Секция с настройкой путей к различным файлам
1 2 3 4 5 6 7 8 9 10 11 12 | < 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
Настройки логирования
1 2 3 4 5 6 | < 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 с сервера на сервер, если это потребуется.