Довольно часто слушаю Internet-радио. Решил организовать ретрансляцию на собственном сервере, чтобы не "бегать" по разным сайтам. Да и опыт уже есть - есть уже медиа-сервер в локальной сети, который ретранслирует около сотни Интернет-радиостанций. Это еще один плюс - есть уже откуда брать потоки...
Итак, приступим... Для ретрансляции воспользуемся возможностями медиа-сервера Icecast. В портах есть две ветки - Icecast и Icecast2:
# cd /usr/ports && make search name='icecast'
Port: icecast-1.3.12_2 Path: /usr/ports/audio/icecast Info: A streaming mp3 audio server Maint: ports [at] FreeBSD [dot] org B-deps: R-deps: WWW: http://www.icecast.org/ Port: icecast2-2.3.2_2,1
Path: /usr/ports/audio/icecast2 Info: A streaming mp3/ogg-vorbis audio server Maint: sunpoet [at] sunpoet [dot] net B-deps: ca_root_nss-3.11.9_2 curl-7.19.6_1 gettext-0.17_1 gmake-3.81_3 libiconv-1.13.1 libogg-1.1.4,4 libshout2-2.2.2_3,1 libtheora-1.0_1 libvorbis-1.2.3,3 libxml2-2.7.3 libxslt-1.1.24_2 pkg-config-0.23_1 speex-1.2.r1_2,1 R-deps: ca_root_nss-3.11.9_2 curl-7.19.6_1 libiconv-1.13.1 libogg-1.1.4,4 libshout2-2.2.2_3,1 libtheora-1.0_1 libvorbis-1.2.3,3 libxml2-2.7.3 libxslt-1.1.24_2 pkg-config-0.23_1 speex-1.2.r1_2,1 WWW: http://www.icecast.org/ |
Информацию о том, какие именно различия в проектах - не искал. Но из описания можно понять, что Icecast2 поддерживает кроме Mp3 еще и Ogg. Соответственно выполним из системы портов установку Icecast2:
# cd /usr/ports/audio/icecast2 && make install clean && rehash |
По завершению установки Icecast2 выводит инструкции к подальшим действиям, что не может не радовать:
To start icecast at system boot, copy /usr/local/etc/icecast.xml.sample to /usr/local/etc/icecast.xml, customize to your environment as desired and add: icecast_enable="YES" to /etc/rc.conf. See the icecast -h command for optional additional flags. To specify an alternative config file for example add: icecast_flags="-c /path/to/your/configuration.xml" ********************************************************************** ** Make sure the <changeowner> section in your configuration file ** ** is NOT commented out. Icecast will refuse to run as root. ** ** ** ** Also make sure that the user you choose is able to write to your ** ** configured log directory, otherwise icecast will refuse to run. ** ********************************************************************** |
Следуя рекомендациям, скопируем файл конфигурации из предоставленного примера:
# cp /usr/local/etc/icecast.xml.sample /usr/local/etc/icecast.xml |
Приступаем к редактированию конфигурационного файла. Отталкиваться будем от того, что в DNS я добавил запись radio.muff.kiev.ua, которая указывает на IP 195.3.159.250. Набросал в комментах немного "отсебятины", чтобы уловить суть параметров. Если что не так - просьба извинить, и посетить вот эту страницу. В листинге только 1 поток примонтирован, а по этой ссылке можно скачать конфигурационный файл с несколькими десятками потоков (на момент написания статьи - 87 радиостанций). Жанры самые разнообразные, поскольку ориентировался на вещание в локальную сеть.
Внимание! Конфигурационный файл icecast.xml должен быть в кодировке UTF-8, если в нем присутствует кирилица!
Листинг конфигурационного файла icecast.xml:
<icecast>
<!-- Секция настройки лимитов и ограничений -->
<limits>
<!-- Максимальное одновременное количество слушателей -->
<clients>1000</clients>
<!-- Максимальное количество источников -->
<sources>200</sources>
<!-- Количество потоков для обработки клиентских подключений -->
<threadpool>500</threadpool>
<!-- Максимальный размер очереди в байтах для одного слушателя.
Если абонент "отстает" вследствие загружености сети, поддерживается
буфер указанного размера. Если пользователь отстает больше, чем
указано, соединение разрывается-->
<queue-size>524288</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>65535</burst-size>
</limits>
<!-- Секция авторизации -->
<authentication>
<!-- Незашифрованный пароль, который используется для подключения к
источнику потока. На данный момент имя пользователя должно быть
только "source" -->
<source-password>hackme</source-password>
<!-- Используется у мастер-сервера как часть авторизации, когда
слейв запрашивает список потоков -->
<relay-password>hackme</relay-password>
<!-- Имя пользователя и пароль, используемые для всех функций администрирования. --> <admin-user>admin</admin-user> <admin-password>hackme</admin-password> </authentication> <!-- Задание точки монтирования для использования по умолчанию --> <!-- <shoutcast-mount>/live.nsv</shoutcast-mount> --> <!-- Расскоментировать для публикации информации о аудио-потоках сервера
в icecast2 YP -->
<!--
<directory>
<yp-url-timeout>15</yp-url-timeout>
<yp-url>http://dir.xiph.org/cgi-bin/yp-cgi</yp-url>
</directory>
-->
<!-- Имя хоста. Используется для подключения к серверу --> <hostname>radio.muff.kiev.ua</hostname> <!-- Возможно использование нескольких блоков <listener> --> <listen-socket> <!-- TCP-порт, используемый порт для клиентских подключений --> <port>8000</port> <!--IP-адрес, для привязки к конкретной сетевой карты. Если не указывать, то Icecast будет слушать запросы на всех интерфейсах --> <bind-address>195.3.159.250</bind-address> <!-- Дополнительные точки монтирования, используемые для подключения DSP-совместимых клиентов --> <!-- <shoutcast-mount>/stream</shoutcast-mount> --> </listen-socket> <!-- <listen-socket> <port>8001</port> </listen-socket> --> <!-- Секция настройки relay --> <!--<master-server>127.0.0.1</master-server>--> <!--<master-server-port>8001</master-server-port>--> <!--<master-update-interval>120</master-update-interval>--> <!--<master-password>hackme</master-password>--> <!--<relays-on-demand>1</relays-on-demand>--> <relay>
<!-- Сервер, с которого забираем поток -->
<server>stream.16bit.fm</server>
<!-- Номер порта, с которого забираем поток -->
<port>9500</port>
<!-- Точка монтирования на удаленном сервере -->
<mount>/</mount>
<!-- Локальная точка монтирования -->
<local-mount>/16bit.fm</local-mount>
<!-- Забирать поток только по запросу, тоесть только когда есть
слушатели этого потока -->
<on-demand>1</on-demand>
<!-- Ретрансляция метаданных (названия песен, групп, etc) -->
<relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>
<!-- Специфические настройки секции <mount>. Эта секция имеет настройки,
которые касаются только конкретной точки монтирования и распостраняется
на входящий поток, будь это релей либо же клиент источника. Используется
для изменения глобальных/по умолчанию настроек, которые приняты с
потоком.
Нету необходимости указывать для каждого источника, хотя можно и
задавать некоторые определенные параметры, такие как максимальное
количество слушателей, точка монтирования, имя пользователя и пароль,
etc. -->
<!--
<mount>
<mount-name>/example-complex.ogg</mount-name>
<username>othersource</username>
<password>hackmemore</password>
<max-listeners>1</max-listeners>
<dump-file>/tmp/dump-example1.ogg</dump-file>
<burst-size>65536</burst-size>
<fallback-mount>/example2.ogg</fallback-mount>
<fallback-override>1</fallback-override>
<fallback-when-full>1</fallback-when-full>
<intro>/example_intro.ogg</intro>
<hidden>1</hidden>
<no-yp>1</no-yp>
<authentication type="htpasswd">
<option name="filename" value="myauth"/>
<option name="allow_duplicate_users" value="0"/>
</authentication>
<on-connect>/home/icecast/bin/stream-start</on-connect>
<on-disconnect>/home/icecast/bin/stream-stop</on-disconnect>
</mount>
<mount> <mount-name>/auth_example.ogg</mount-name> -->
<!-- Этот флаг включает файловый сервер icecast2 -->
<fileserve>1</fileserve>
<paths>
<!-- Родительский каталог, если chroot включен -->
<basedir>/usr/local/share/icecast</basedir>
<!-- Путь в каталог, используемый для логирования --> <logdir>/var/log/icecast</logdir> <!-- Родительский каталог для всех статический файлов. Этот каталог может местить в себе все стандартные типы файлов. Например, если задан как /var/share/icecast2, и пришел запрос на http://server:port/mp3/stuff.mp3, то используется файл /var/share/icecast2/mp3/stuff.mp3 --> <webroot>/usr/local/share/icecast/web</webroot> <!-- Путь, задающий каталог для всех запросов администратора --> <adminroot>/usr/local/share/icecast/admin</adminroot> <!-- <pidfile>/usr/local/share/icecast/icecast.pid</pidfile> --> <!-- Aliases: treat requests for 'source' path as being for 'dest' path <!-- Секция логгирования -->
<logging>
<!-- Лог файл записи доступа -->
<accesslog>access.log</accesslog>
<!-- Лог файл записи ошибок -->
<errorlog>error.log</errorlog>
<!-- <playlistlog>playlist.log</playlistlog> -->
<!-- Уровень логгирования -->
<loglevel>3</loglevel> <!-- 4 Debug, 3 Info, 2 Warn, 1 Error -->
<!-- Максимальный размер лог-файла -->
<logsize>100000</logsize>
<!-- Архивирование лог-файлов. По умолчанию выключено, чтобы
избежать заполнения файловой системы -->
<!-- <logarchive>1</logarchive> -->
</logging>
<!-- Секция безопасности -->
<security>
<chroot>0</chroot>
<!-- Запуск от другого пользователя -->
<changeowner>
<user>icecast</user>
<group>icecast</group>
</changeowner>
</security>
</icecast> |
Создадим групу и пользователя, от имени которых будет работать процесс icecast (в моем случае использовал свободные uid и gid 1004, советую проверить у себя свободные uid и gid):
# pw groupadd -n icecast -g 1004 |
Создадим каталог, куда будут писаться логи, укажем владельца каталога и добавим в rc.conf поддержку icecast:
# mkdir /var/log/icecast |
Пытаемся запустить icecast:
# sh /usr/local/etc/rc.d/icecast2 start Starting icecast. |
Проверим, есть ли icecast в процессах:
# ps -ax | grep icecast 85877 p1 S 0:00,00 /usr/local/bin/icecast -c /usr/local/etc/icecast.xml -b |
Кажется все в порядке. Проверим, идет ли ретрансляция потока. Поскольку я задавал локальную точку монтирования 16bit.fm, поэтому в любом музыкальном плеере, который поддерживает потоковое вещание (например AIMP, WINAMP, etc) необходимо открыть следующий url: http://radio.muff.kiev.ua:8000/16bit.fm (в принципе можно даже в браузере открыть указанную ссылку, но в плеере, как на меня - намного удобней).
Собственно говоря - скриншот прослушивания потока с сервера:
Если же в браузере войти в "корень" радиосервера (тоесть на 8000 порт - http://radio.muff.kiev.ua:8000), то можно получить информацию о статусе работающего icecast-сервера. Скриншоты:
Там же можно обнаружить линк в админ-панель. Воспользуемся логином и паролем администратора, указанными в конфигурационном файле icecast.xml (параметры admin-user и admin-password) для входа в admin-панель. Скриншоты админ-панели:
На этом базовую настройку Icecast для ретрансляции потоков Интернет-радиостанций можно завершить. Однако не стоит забывать, что есть еще поле для експериментов, поскольку Icecast - довольно мощный инструмент.
Ну и если просто хочется послушать радио, весь плейлист одним списком можно загрузить здесь. Если любите слушать какую-то радиостанцию, а в списке ее нету - пишите. Поищем и добавим.
На данный момент транслируются следующие радиостанции (список время от времени изменяется, так что данные относительны):
Из прочитанного можно сделать
Из прочитанного можно сделать вывод, что Ваша интернет-радиостанция стоит на локальной машине, которая постоянно подключена к сети Интернет. Верно?!
А как сделать тоже самое, но используя возможности обычного хостинга?
Я, например, пользуюсь стандартной схемой: Radioboss -> Shoutcast server.
Схема эта меня не устраивает, поскольку сейчас я столкнулся с проблемой подключения к эфиру нескольких ведущих.
И еще. Вы - занятный, увлеченный человек. Рад был бы профессиональному знакомству с Вами.
Да, интернет-радиостанция
Да, интернет-радиостанция установлена на сервере под управлением операционной системы FreeBSD, которая расположена на техплощадке провайдера и имеет постоянное высокоскоростное подключение к сети Internet. Такое размещение ресурса называется colocation.
Как установить icecast на хостинге - сразу и не подскажу. Нужно рассматривать возможности хостинга.
На счет знакомства - буду только рад. Если Вы из Киева - можно встретиться и пообщаться, возможно найдутся общие интересы.
На почту отправил номер мобильного и аськи.
А где же Relax.FM?
А где же Relax.FM?
Если имелось ввиду
Если имелось ввиду relax-fm.ru, то добавил. Радиостанция №58 (на момент публикации сообщения) в списке прослушивания.
Будут еще пожелания - пишите.
Re: Icecast - ретрансляция Internet-радиостанций
Такой вопрос... Есть одна круная фирма с радиостанцией и есть провайдер который хочет оказывать услуги этой станции, суть в следующем, возможно ли поставить на сервер провайдера Icecast для ретрансляции аудиопотока 5000 пользователям? и подойдет ли мне для этого дела ваша инструкция?))
Re: Icecast - ретрансляция Internet-радиостанций
Здесь уже все завитит от того, каким образом планируете "забирать" поток.
Открывайте ветку на форуме, и будем обсуждать...
Re: Icecast - ретрансляция Internet-радиостанций
вот еще добавьте в список radiolistener.com (Stream Line Radio) Киргизия
Re: Icecast - ретрансляция Internet-радиостанций
Done
Радиостанция под номером 79. Только просьба следить за эфиром - во время добавления станции в эфире звучала "тишина"
Re: Icecast - ретрансляция Internet-радиостанций
И еще добавьте в список bluesforever.freeforums.org
Re: Icecast - ретрансляция Internet-радиостанций
Сделано.
Добавил все подкасты. В списке под номерами 18-26.
Re: Icecast - ретрансляция Internet-радиостанций
Здравствуйте, я хотел бы спросить, как сделать так, чтобы было два диджея например?
Re: Icecast - ретрансляция Internet-радиостанций
А вот теперь более подробно, пожалуйста...
Статья о том, как ретранслировать уже существующие потоки. Чтобы "лить" свой поток в сеть, нужен немножно другой софт.
Re: Icecast - ретрансляция Internet-радиостанций
Имеется настроенный icecast2 сервер в сети предприятия для сотрудников. Сервер icecast имеет прямой выход в интернет. По требованиям информационной безопасности так не должно быть и полагается получать поток с источников через корпоративный прокси сервер. Есть ли какая та настройка для этого в icecast?
Re: Icecast - ретрансляция Internet-радиостанций
Первое, что сразу приходит на ум - файрвол...
Re: Icecast - ретрансляция Internet-радиостанций
Хотелось бы простое, а потом уже сложное или по частям...
Re: Icecast - ретрансляция Internet-радиостанций
Здравствуйте! А добавьте пожалуйста эту станцию Радио Джем ФМ Екатеринбург 102.5 FM
Re: Icecast - ретрансляция Internet-радиостанций
А ссылочку на интернет-поток сможете предоставить?
Re: Icecast - ретрансляция Internet-радиостанций
online.radiojamfm.ru:8000/jam
Re: Icecast - ретрансляция Internet-радиостанций
Добавлено.
Текущий номер 48 в плейлисте.
Re: Icecast - ретрансляция Internet-радиостанций
И еще был бы очень рад видеть в вашем плейлисте в добавок к Radiolla еще джазовую станцию Radiolla JIRAFFE.
air.radiolla.com/jiraffe.128k.mp3
air.radiolla.com/radiolla.192k.mp3
Заранее спасибо!
Очень удобно в программе слушать ваш плейлист, работают все ссылки. Хорошая подборка. Спасибо!
Re: Icecast - ретрансляция Internet-радиостанций
Добавлено Radiolla JIRAFFE.
Re: Icecast - ретрансляция Internet-радиостанций
Спасибо вам огромное за плейлист! Такое сложно найти в интернете сейчас.
Добавьте в него еще пожалуйста пару станций:
online.olimpfm.ru:8000/olimp_mp3
online.volgogradfm.ru:8000/vfm
Re: Icecast - ретрансляция Internet-радиостанций
А у меня не работает ни одно радио из листа. И некоторыых что здесь описаны там нет.
Re: Icecast - ретрансляция Internet-радиостанций
Почему не работает ни одно радио и не все в листе станции есть, или их два?
Re: Icecast - ретрансляция Internet-радиостанций
Здравстуйте.
Продублирую ссылку... Актуальный плейлист.
Re: Icecast - ретрансляция Internet-радиостанций
Добрый день, есть вопрос по icecast2
А могу ли я ретранслировать shautcast трафик через icecast сервер
а то flussonic не умеет shautcast и icecast + MP3
Или может подскажете как можно из multicast трафика конвертировать в icecast + MP3
мысль какая: принять на flussonic мультикаст и транскодером его отправить на выход в виде shautcast и уже icecast сервером принять и транскодировать в icecast + MP3
Re: Icecast - ретрансляция Internet-радиостанций
Как убрать meta данные не только названий песен, но и информацию откуда я ретранслирую. То есть, что бы ничего кроме эфира с источника потока не передовалось?