Интернет-радио своими руками

(Установка и настройка сервера ShoutCast
Источник:cpustock.narod.ru/
Дата публикации:2008
Twitter Facebook Vkontakte

Несмотря на то, что статья появилась достаточно давно (в 2002 году), она остается актуальной до сих пор. Сейчас, когда широкополосный доступ в интернет становится "по карману" многим людям, организация интернет-радиовещания или радиовещания в локальной (домашней) сети может заинтересовать многих незрячих и слабовидящих пользователей компьютерной техники.

Содержание

  1. Что такое Shoutcast ?
  2. Установка сервера Shoutcast
  3. Настройка DSP
  4. Настройка параметров вещания
  5. Параметры конфигурационного файла
  6. Получение Метаинформации
  7. 7. Необходимые ресурсы

Что такое Shoutcast?

Shoutcast - это программный продукт, который вместе с Winamp'ом образует единую систему трансляции аудио-потоков в сетях на базе протокола tcp/ip. Система позволяет:

1. Прослушивать доступные каналы в интернете или локальной сети при помощи плееров, поддерживающих аудио потоки. Это следующие плееры: Winamp (Windows), Audion (Mac), XMMS (Linux\XWindows). Информацию о доступных серверах в интернете, их рейтинг, количество слушателей, название проигрываемой композиции в настоящий момент можно узнать на страничке производителя системы http://www.shoutcast.com/, причем действующие серверы постоянно обновляют эти данные.

Для того, чтобы заценить какой-нибудь канал нужно при запущенном Winamp’e нажать клавиши Ctrl+L и ввести в появившемся окошке <IP адрес сервера>:<порт сервера>.

2. Создать собственное вещание по сетям Ip: интернет, локальные сети (офис, школа, домашняя локалка). Для этого необходимо запустить собственный сервер трансляции аудио потоков.

Сервер позволяет использовать два разных аудио источника для последующей трансляции:

  1. Winamp (локальный, т. е. который запущен у тебя на компе, или удаленный, т. е. тот который у приятеля );
    Если транслируешь поток со своего Winamp'a, то для него необходимо поставить плагин (plug-in) Shoutcast Sourse (по другому называется DSP плагин). Он выполняет сжатие и передачу данных от Winamp'a на сервер-транслятор. При этом композиции для трансляции поступают на сервер непосредственно из плей-листа Winamp’a. Т.е. есть возможность одновременно и самому слушать музон, и одновременно его же передавать на свой сервак.
  2. Другой сервер Shoutcast с доступным для перетрансляции каналом вещания.

Установка сервера Shoutcast

Shoutcast server доступен для следующих платформ: Windows95\98\NT\2000, FreeBSD, Linux, Mac OS X.

Рассмотрим установку версии для Win32 системы как наиболее простую для использования в домашних условиях.

Скачиваем дистрибутив сервера и распаковываем его в каталог C:/Program Files/Winamp/Shoutcast/ по рекомендации производителя, но можно и в любую другую. При этом установятся две версии сервера, одна для запуска из командной строки SC_SERV_CONS.EXE (по умолчанию использует файл SC_SERV_CONS.INI как файл с настройками), другая для запуска в оконном режиме SC_SERV_GUI.EXE (по умолчанию использует файл SC_SERV_GUI.INI как файл с настройками).

Изначально система поставит файл SC_SERV.INI, после этого можно скопировать содержимое SC_SERV.INI в файлы SC_SERV_CONS.INI и SC_SERV_GUI.INI; можно также использовать команду

SC_SERV_CONS.EXE <FILENAME.INI>

или

SC_SERV_GUI.EXE <FILENAME.INI>

для запуска сервера с нужным файлом настроек, это удобно когда подготовлено несколько конфигурационных файлов. Описание параметров файлов ini см ниже. Общий вид сервера трансляции см на рис 1.

После этого устанавливаем DSP плагин. (Здесь и далее, все плагины перекачиваются с сайта (http://www.shoutcast.com/) в виде архивов zip и разархивируются в директорию plugins Winamp'a).

Также необходимо установить MPEG Layer-3 кодек в систему. Проверить установку которого можно здесь: пуск, настройка, панель управления, мультимедия, устройства, программы аудиосжатия (должна быть запись об установленном кодеке мп3 сжатия). Лучше всего поставить Fraunhofer IIS MP3 Layer3 Codec (Professional version), он позволит вести вещание с битрейтом более чем 56 kbps. Информацию по настройке DSP см ниже.

Также есть еще дополнительные плагины к Winamp'y:
SHOUTcast Live Input Plug-in - позволяет накладывать на свою трансляцию речь при присоединенном микрофоне к звуковой карте или аудио поток с входа line-in звуковой карты; если в Winamp'e нажать Ctrl+L и ввести 'linerec://', то будет транслироваться только то, что идет по микрофону или по Line-in к звуковухе.
SHOUTcast Null_Output Plug-in - поможет осуществить трансляцию, если нету звуковой карты или ты решил не слушать сам то, что транслируешь .

Замечание: возможно использование этого плагина для снижения нагрузки на свой комп при трансляции.

Настройка DSP плагина

Запусти Winamp, нажми Ctrl+P, в появившемся окне Winamp Preferences увидишь дерево папок выбери папку DSP/Effects, там будет новый плагин Shoutcast sourse for winamp.

Жми кнопарь Configure снизу и появится окошко Configure Shoutcast Plug-in .

Его настройки:
Enable low-pass filtering - включить низко-уровневую фильтрацию (рекомендуется производителем);
Enable advanced recording mode - позволяет выбрать дополнительный режим записи, либо с микрофона, либо с line-in звуковухи;
Save broadcast to files in - можно указать папку для записи вещания.

Настройка параметров вещания

Теперь жми  на появившуюся иконку в системном трее Shoutcast Source. Появится окошко Shoutcast source Жми кнопку Edit (первую сверху).

Появится окошко Shoutcast server selection. Его настройки:
Shoutcast server - Ip сервера, на который будет передавать твой Winamp (если сервак стоит у тебя самого, то оставляй тут localhost);
Port - порт сервера, на который будет передавать твой Winamp;
Password - пароль для доступа на передачу этому серверу; поскольку этот пароль заносится в конфигурационный локальный файл сервера, то не зная его, ничего передать этому серверу ты не сможешь.

Дальше идут поля с информацией о сервере ( Server Information): Description (Описание), Genre(Жанр), URL (адрес твоего сайта), IRC Channel (твой канал на IRC), ICQ# (твой номер в аське), AIM Name (твое имя).

Теперь в окне Shoutcast source жми кнопку Edit (вторую сверху). Появится окошко Format selection. Здесь можно выбрать параметры твоей трансляции (битрейт kBit/s, частоту дискритизации Hz, Mono\Stereo), а также сохранить понравившиеся настройки как схему.

Замечание: если не поставлен кодек Fraunhofer IIS MP3 Layer3 Codec (Professional version), то больше, чем 56 kBit/s 22.000 Hz Stereo выставить нельзя.

Следующие настройки в окошке Shoutcast source (см рис 4) - Song Title и URL отмечай галочкой на режим авто. Также ставивь галку в поле Auto Reconnect. После всего этого жми кнопку Connect, и если все настроенно правильно то твой источник трансляции будет присоединен к серверу трансляции.

Параметры конфигурационного файла

Вот полный список всех переменных входящих в файл конфигурации: В ( ) - дается значение по умолчанию, в [ ] - значение, которое я выбрал.
MaxUser - максимальное количество клиентов для твоего сервера; (32); [25].
Password - этот пароль используется для идентификации сервером источника аудио потока, пароль прописывается как в файле настройки сервера, так и в свойствах DSP плагина Winamp'a; (changeme);
[не скажу]. PortBase - порт твоего Shoutcast Servera, на который будут конектится меломаны; (8000); [8000].
LogFile - имя файла для записи событий сервера; (sc_serv.log); [sc_serv.log].
RealTime - [ только для серверов WIN32, запускаемых из командной строки и для *nix], показывает отражать ли серверу строку статуса, обновляемую каждую 1 секунду; (1); [1].
ScreenLog - [ только для серверов WIN32, запускаемых из командной строки и для *nix], показывает отражать ли серверу диагностические сообщения (логи) на экране; (1); [1].
ShowLastSong - задает количество композиций для выдачи в файл /played.html (10, можно поставить 1-20); [10].
HistoryLog - имя файла для записи истории логов; (sc_hist.log); [sc_hist.log].
HistoryLogTime - частота записи истории логов, в секундах; (30); [30].
TchLog - разрешает твоему серверу вести записи в логе по изменениям в yp директории (yp.shoutcast.com); (yes); [yes].
WebLog - разрешает добавлять в лог данные при вызове твоего сервера по http:// ; (no); [no].
SrcIp - (от source ip) Ip адрес источника аудио потока на твой сервер трансляции; можно поставить ANY, т е любой может давать тебе данные (естественно только тот, кто имеет пароль), или 127.0.0.1, т е только ты, или любой другой Ip; (ANY); [ANY].
DestIp - (от destination ip) Ip адрес клиентов твоего сервера трансляции; если ANY, то все желающие могут принимать твои передачи с сервера, или любой другой Ip; (ANY); [ANY].
Yport - порт для подсоединения к yp.shoutcast.com (для отсылки информации на базу данных directory data о своем сервере); если вы используете веб-кеш, то можно использовать еще и другие порты, какие см на www.shoutcast.com; (80); [80].
NameLookups - если 1, то сервер будет выполнять преобразование адреса Ip в имена; (0); [0].
RelayServer - Ip адрес; если обозначен, то твой сервер будет транслировать доступный канал с другого сервера (по указанному Ip), а Winamp он воспринимать не будет;
(закомментировано);[закомментировано]. RelayPort - порт сервера, канал которого ты ретранслируешь; (закомментировано); [закомментировано].
AdminPassword - пароль администратора (отличается от Password'a), дает все права на kick, ban и др; (adminpass) ; [не скажу].
AutoDumpUser - при потери связи с источником трансляции : если 1,то сервер отключит от себя всех пользователей, иначе, они остаются на канале без оключения ( и есть еще возможность в это время включить им на прослушивание аудио фон (BackupFile)); (0); [0].
AutoDumpSourceTime - определяет время (в секундах) для принятия решения AutoDumpUser; (30); [30].
IntroFile - имя файла ,его сервер будет проигрывать каждому меломану при заходе на твой канал; %d - означает твой битрейт; (intro%d.mp3); [intro128.mp3].
Замечание: этот файл может быть только в формате MP3 и полностью соответствовать по всем параметрам передаваемому аудио потоку.
BackupFile - имя файла, при потери связи с источником трансляции сервер будет транслировать этот аудио фон; %d - означает твой битрейт; (backup%d.mp3); [backup128.mp3].
Замечание: этот файл может быть только в формате MP3 и полностью соответствовать по всем параметрам передаваемому аудио потоку.
TitleFormat - задает формат передачи мета данных плееру меломана о сервере и транслируемой композиции для отображения в виде строки, вместо %s автоматически подставляется название композиции; (Justin Radio: %s); [StationY2K: %s].
URLFormat - задает формат передачи url строки (и саму строку, т.е. адрес твоего сайта), которая передается url minibrouser'y слушателей; (http://www.server.com/redirect.cgi?url=%s); [http://192.168.45.3/StationY2K.htm].
PublicServer - может быть always, never или default; если always или default, то DSP plug-in и твой сервер будут иметь статус public (т.е. информация о них будет поступать на базу данных shoutcast directory (http://yp.shoutcast.com/); если newer, то нет; (default); [default].
AllowRelay - может быть yes или no; yes - другие сервера могут ретранслировать аудио поток с твоего сервера трансляции; no - другие сервера не могут ретранслировать аудио поток с твоего сервера трансляции; (yes); [yes].
AllowPublicRelay - может быть yes или no; если yes, то твои ретрансляторы смогут отослать метаданные в базу данных shoutcast directory (http://yp.shoutcast.com/); если no, то нет; (yes); [yes].
MetaInterval - показывает как часто (задается в байтах) передаются мета данные; (8192); [8192].
ListenerTimer - определяет максимальное время нахождения меломанов на канале (в минутах); (закомментировано, т. е. время пребывания неограниченно); [закомментировано].
BanFile - имя файла, здесь находятся клиенты, вход которым к тебе запрещен; (sc_serv.ban );[sc_serv.ban].
RipFile - имя файла, здесь находятся клиенты, вход которым к тебе запрещен не только под видом слушателя, но и под видом ретранслятора; (sc_serv.rip); [sc_serv.rip].
CurrentLogIn - имя файла, с ключевыми словами для выдачи метаинформации (шаблон); (c:/hi.in); [с:/hi.htm].
CurrentLogOut - имя файла, для выдачи по шаблону метаинфориации; (c:/hi.htm); [c:/done.htm].
CurrentLogTime - время обновления (в секундах) данных в CurrentLogOut; (30); [15].
Unique - ставит эту строчку в соответствие значку $; т е если unique=my server, то $=my server ; удобно использовать в файлах конфигурации; (закомментировано) ;[закомментировано].
Include - имя конфигурационного файла, который начинает читать сервер, встретив эту строку; (закомментировано) ;[закомментировано].
CpuCount - количество процессоров; (1) ;[1].
Sleep - определяет пакеты отсылки данных клиенту, но задается в миллисекундах; (833) ;[833].

Получение метаинформации.

Shoutcast server поддерживает механизм получения из него мета информации, это данные о сервере и о проигрываемой композиции. Принцип тут такой: составляется файл (его имя указывается в ключе CurrentLogIn), в нем запросы на данные присутствуют в виде ключевых слов в теге комментария. Сервер анализирует эти ключевые слова и подставляет вместо них свои текущие данные, вся информация после этого выводится файл, указанный в поле CurrentLogOut. Частота обновления сервером информации в CurrentLogOut указывается в CurrentLogTime.

Вот список всех ключевых слов:ch6 LISTENERS - количество слушателей в настоящий момент времени
MAXLISTENERS - максимальное количество слушателей на канале
LISTENERTABLE - простая таблица слушателей
GENRE - жанр композиции
DESCRIPTION - описание композиции
URL - текущий url
HITS - количество кликов, с которым стартовал сервер
CURRENTSONG - название текущей композиции.

Пример шаблона:

<HTML>
<HEAD>
<TITLE>My  Current Stats</TITLE> 
<HEAD>
<BODY> 
My SHOUTcast  server is currently playing <!-- CURRENTSONG -->.  
</BODY>
</HTML>

Необходимые ресурсы

  1. Winamp - http://www.winamp.com/
  2. Shoutcast server, DSP плагин для Winamp'a, SHOUTcast Live Input Plug-in, SHOUTcast Null_Output Plug-in, документация - http://www.shoutcast.com/
  3. Fraunhofer IIS MP3 Layer3 Codec (Professional version) - http://www.iis.fhg.de/amm/


Распространение материалов сайта означает, что распространитель принял условия лицензионного соглашения.
Идея и реализация: © Владимир Довыденков и Анатолий Камынин,  2004-2017