Своє інтернет-радіо з icecast
Опис конфігурації сервера для інтернет-мовлення радіо за допомогою вільного рішення Icecast і клієнта-джерела IceS.
Час від часу у мене виникала думка зробити свій домашній сервер. Однак відсутність знань з цього питання і лінь гасили думка на корені, як сильний вітер розкидає червоні вугілля догоряє багаття ... Незважаючи на цю лірику, в кінці минулого року я дозрів і зібрав такий сервер. Вийшло відносно дешево і сердито: материнська плата з вбудованим процесором AMD E450 і поки 4 Гб RAM. Мені цього вистачає: адронний коллайдер не запускати.
Освоївши рішення типових задач адміністратора (Apache, різні веб-движки і т.п.), я вирішив піти далі. Виникло бажання транслювати в мережу свою музику ...
Знайомство з Icecast
Мій вибір припав на сервер потокового звуку Icecast (www.icecast.org). У нього є конкурент - пропріетарний SHOUTCast, розроблений в Nullsoft і нині належить AOL. Судячи з усього, розробка Icecast почалася на рік раніше, ніж SHOUTCast. При цьому Icecast «віщає» потоки Vorbis і Theora по протоколу HTTP, а MP3, AAC і NSV - по протоколу SHOUTcast. Для прослуховування інтернет-радіо користувачеві потрібен мультимедійний програвач, що підтримує його, - наприклад, VLC, Mplayer, Audacious або Winamp. Користувач отримує від вас (тобто від сайту, де ви розмістите посилання, або з особливого каталогу каналів інтернет-радіо) список пісень в форматі M3U, але цей список не зовсім звичайний: завантажуючи його в свій плеєр, користувач буде чути те, що транслюється вашим сервером зараз.
А як це виглядає з серверної сторони? Тут потрібно зв'язка з безпосередньо сервера Icecast і так званого клієнта-джерела (source client). Останній поставляє для Icecast звуковий потік. Клієнтом може бути як програма, що зчитує звук з мікрофона, так і програвач на кшталт mpd (або навіть Winamp з особливим плагіном).
Тепер про налаштування Icecast і IceS. Самі додатки є в репозиторії будь-якого популярного Linux-дистрибутива, BSD-системи і т.п. Існує і версія Icecast під Windows. Збірка з вихідних також не складе труднощів: ніяких екзотичних залежностей немає. І сервер, і клієнт-джерело управляються через конфігураційні файли в форматі XML, які треба вказати в командному рядку при запуску Icecast і IceS. При установці з пакетів ці конфіги зазвичай поміщаються в / etc, а при установці з исходника - де ви самі вкажете. І в «пакетному» варіанті, і в исходниках, в складі Icecast і IceS йде набір конфігов-прикладів, які можна (і навіть потрібно) брати в якості основи для свого конфіга.
Оскільки файли конфігурації можуть мати довільні назви, далі в статті буду використовувати icecast.xml в якості імені файлу з настройками Icecast, а ices.xml - для Ices. Відповідно, команди запуску служб будуть виглядати приблизно так (потрібні права root):
Щоб не захаращувати статтю «зайвим» вмістом icecast.xml, наведу тільки фрагменти з важливими (зміненими) параметрами - інші значення залишаться за замовчуванням. У разі складання з исходника готовий до виправлення шаблон файлу налаштувань можна знайти в каталозі conf (icecast.xml.in), а при установці з пакету можна відразу редагувати /etc/icecast.xml (інші шаблони будуть знаходитися в / usr / share / icecast / doc /). Втім, в деяких дистрибутивах Linux шляху можуть відрізнятися.
Конфиг є звичайним XML, що включає в себе вкладені блоки налаштувань. Тут діє звичне правило, що більш точні налаштування (тобто з великим вкладеним рівнем) мають пріоритет. Це дозволяє визначати глобальні настройки і одночасно ставити «локальні» правила для окремих випадків.
Параметри начебто webroot, adminroot я не чіпав. Вони знадобляться, якщо ви захочете змінити веб-інтерфейс Icecaset за замовчуванням і подібні речі. Те ж саме відноситься до розділу paths в цілому: тут можна нічого не чіпати, якщо вам це свідомо не потрібно. За паролі відповідають параметри розділу authentication:
Інші важливі параметри:
А наступна нижче конструкція визначає, з якого порту йдуть запити:
Ось і все, для базової установки більше нічого налаштовувати не потрібно (звичайно, якщо ви використовуєте файл-шаблон, де все інше вже прописано). Запуск сервера:
Тепер треба налаштувати клієнт-джерело - IceS. Для початку створимо файл M3U зі списком пісень. Це буде просто текстовий файл з повними іменами файлів. У його створенні допоможе команда:
У ній результати пошуку (всіх файлів поточного каталогу з розширенням .ogg) запишуться в playlist.m3u, який буде використовуватися в IceS.
Щоб потік потрапив в каталог YP, на рівні розділу stream додаємо:
Там же треба прописати розділ metadata. Хоча в документації сказано, що він поки не використовується, вихідні зробили крок вперед: дані з metadata передаються в Yellow Pages і відображаються там. Розділ буде виглядати так:
Тепер підключимо список пісень:
- random = 0 - відтворювати всі пісні послідовно (значення 1 активує випадковий порядок);
- once = 0 - після закінчення відтворення всіх пісень почати все з початку списку.
Плейлист готовий. Пропишемо параметри підключення до Ices, в розділі instance.
І тут public виставлений в 1, що називається, «для вірності». Для мене залишилося таємницею, в яких версіях Ices ці параметри дублюють один одного, а в яких - застаріли. Можливо, public на рівні stream і не потрібен, якщо включений на рівні instance.
На цьому настройка завершена. Запускаємо Ices:
І заходимо на веб-сторінку радіостанції. На ній повинен з'явитися ваш потік, тобто буде вказана точка підключення і статистика по ній. З веб-інтерфейсу можна скачати посилання на «трансльований» M3U і розмістити його на своїх сайтах. Вітаю, у вас з'явився свій Icecast-сервер.
