Поиск по блогу :

    15 сентября 2009 г.

    Настройка SHOUTcast online-радио

    Это моя первая статья на этом блоге и в ней я хочу рассказать, как настроить сервер вещания SHOUTcast online-радио.



    Настройка online-радио

    1. Для начала нам потребуется 2 пакета. Непосредственно само ядро создаваемой потоковой аудиосистемы (SHOUTcast server, его можно скачать на сайте SHOUTcast), и пакет направляющий аудио-поток на сервер SHOUTcast.
    Я использовал: SHOUTcast Linux server v1.9.4 и SHOUTcast DSP Plug-In for Mac OS X, Linux and FreeBSD v0.40
    2. После скачивания пакетов нам требуется их распаковать:
    $ $
    tar xzvf shoutcast-1-9-4-linux-glibc6.tar.gz
    tar xzvf sc_trans_posix_040.tgz

    3. Теперь настроим сам сервер, для подачи аудиопотока на него.
    3.1. После распаковки, в каталоге 'shoutcast-1-9-4-linux-glibc6' расположен конфиг сервера SHOUTcast - sc_serv.conf:
    ; Максимальное количество пользователей, которые могут одновременно
    ; находится на сервере.
    MaxUser=16
    ; Пароль для broadcasting-программ. Подробнее см. ниже. Это поле не может
    ; быть пустым.
    Password=qwera3
    ; Порт аудиосервера.
    PortBase=8000
    ; Файл, куда будут записываться все логи сервера.
    LogFile=sc_serv.log
    ; Отображение статусной строки, которая будет ежесекундно обновляться и
    ; показывать последнюю информацию о сервере.
    RealTime=0
    ; Вывод логируемых сообщений на экран. Полезно отключить, если сервер
    ; работает в фоновом режиме.
    ScreenLog=0
    ; Количество песен, отображаемых в списке на www-странице /played.html
    ; (последние проигранные на сервере). Принимает значения от 1 до 20.
    ShowLastSongs=10
    ; TchLog определяет, должен ли DNAS-лог записывать подключения
    ; yp.shoutcast.com к серверу.
    TchLog=yes
    ; Не учитывать посещения www-странички.
    WebLog=no
    ; Включение W3C-логирования. Информацию этого лога можно просматривать
    ; с помощью, например, Analog или WebTrends.
    W3CEnable=Yes
    ; Название файла с W3C-логами.
    W3CLog=sc_w3c.log
    ; Определяет IP допущенных к вещанию источников аудипотока.. В нашем случае
    ; аудиосигнал на сервер будет подаваться с этой же машины.
    SrcIP=127.0.0.1
    ; Определяет IP допущенных к серверу слушателей.
    DestIP=ANY
    ; Порт для подключения к yp.shoutcast.com. Менять, только если стоит proxy-сервер.
    Yport=80
    ; Не смотреть DNS-имя у подключающихся к серверу.
    NameLookups=0
    ; Дополнительные настройки, нужные, если сервер будет пересылать получаемый
    ; аудиопоток на другой.
    ; RelayPort=8000
    ; RelayServer=192.168.1.58
    ; Пароль для администрирования через Web-интерфейс. Подробнее см. ниже.
    AdminPassword=qwerty2
    ; Отключать слушателей, если источник аудиопотока отсоединяется.
    AutoDumpUsers=1
    ; Время в секундах, которое источник аудиопотока может молчать (idle).
    AutoDumpSourceTime=10
    ; Директория на жестком диске, где расположены стандартные аудиофайлы.
    ; См. следующие переменные.
    ContentDir=./content
    ; MP3-файл, который будут слышать только подключившиеся к аудиосерверу
    ; пользователи. Во избежание глюков строго рекомендуется, чтобы параметры
    ; файла соответствовали качеству вещания. (%d определяет текущий bitrate.)
    ; IntroFile=intro%d.mp3
    ; MP3-файл, который будут слышать подключившиеся пользователи, если источник
    ; аудиопотока отключится. Уместны те же примечания, что и для IntroFile.
    ; AutoDumpUsers должен быть равен нулю.
    ; BackupFile=C:\intro%d.mp3
    ; Формат строки, отображаемый в клиентах пользователях во время прослушивания
    ; радио. %s определяет строку, которая берется у источника аудиопотока.
    TitleFormat=MyRadio: %s
    ; Формат строки, посылаемого слушателю URL'а.
    ; URLFormat=http://www.server.com/redirect.cgi?url=%s
    ; Является ли сервер публичным? Принимает значения always, never и default
    ; (для последнего информация берется у источника).
    PublicServer=default
    ; Другие серверы не могут пересылать свой сигнал через этот.
    AllowRelay=No
    ; Этот сервер не подлежит публикации в каталоге SHOUTcast.
    AllowPublicRelay=No
    ; Частота отсылаемых данных (в байтах). Рекомендуется оставить значение
    ; по умолчанию (32768).
    MetaInterval=32768
    ; Максимальное время (в минутах), которое слушатель может находится на сервере.
    ; Если не определено, то ограничений нет.
    ; ListenerTimer=600
    ; Текстовый файл, используемый для работы с забаненными пользователями.
    ; (Автоматически создается Web-интерфейсом.)
    ; BanFile=sc_serv.ban

    ; Текстовый файл, используемый для работы со списком клиентских IP-адресов,
    ; которые всегда могут подключиться к серверу.
    ; RipFile=sc_serv.rip
    ; Если включить, то к серверу смогут подключаться только клиенты с IP-адресами
    ; из файла RipFile.
    ; RIPOnly=No
    ; Подключение дополнительного общего конфига.
    ; Include=/usr/local/shoutcast/common.conf
    ; Следующие опции нужны для ускорения работы сервера. Менять их не рекомендуется.
    ; Количество процессоров.
    ; CpuCount=1
    ; Время "сна" процессора (в мс) в промежутках между отправлением данных
    ; пользователям. Значение по умолчанию (833) оптимально для 128kbps.
    ; Sleep=833
    ; Удаление некоторых лишних пробелов и строк в выводе XML.
    ; CleanXML=No
    3.2. Исполняемый файл для запуска самого сервера - sc_serv. Вызывается он с одним параметром, указывающим на путь к конфигу:
    $
    ./sc_serv sc_serv.conf

    4. Теперь настраиваем подачу аудиопотока.
    После распаковки, в каталоге 'sc_trans_040' расположен конфиг для вещания на SHOUTcast-сервере - sc_trans.conf. Он и отвечает за создание вышеупомянутого аудиопотока.
    4.1. Настройки конфига:
    ; Файл со списком проигрываемых mp3. Создать его можно с помощью find, введя в терминал:
    ; find /указать/путь/к/каталогу/ -type f -name *.mp3 > /путь/в/который/создасться плейлист/playlist.txt (Ну или можете вручную прописывать прямой путь к мр3 файлу :) )
    PlaylistFile=/указать/путь/к/плейлисту/playlist.txt
    ; IP и порт для сервера, на котором будет вещание.
    ServerIP=127.0.0.1
    ServerPort=8000
    ; Пароль для broadcasting'а. (См. конфиг сервера.)
    Password=qwera3
    ; Информация о музыке. Название аудиопотока, его адрес, жанр музыки.
    StreamTitle=Testing
    StreamURL=http://127.0.0.1:8000/
    Genre=Classic
    ; Название файла для логирования.
    LogFile=sc_trans.log
    ; Включение случайной выборки песен.
    Shuffle=1
    ; Настройки воспроизводимого сигнала (обычно прямо пропорционально зависят
    ; от пропускной способности сети).
    Bitrate=80000
    SampleRate=44100
    Channels=1
    ; "Качество". Значения от 1 (лучшее) до 10.
    Quality=6
    ; Режим "затухания". Песня по завершении проигрывания затихает.
    ; 0: отключение, 1: 100/100->100/0, 2: 0/100->100/0
    CrossfadeMode=0
    ; Продолжительность этого "затухания" (в мс).
    CrossfadeLength=0
    ; Читать ID3-теги.
    UseID3=1
    ; Данная станция не является публичной.
    Public=0
    ; Контакты для обратной связи.
    AIM=---
    ICQ=---
    IRC=---
    5. Запускаем сервер:
    $
    ./sc_trans_linux sc_trans.conf

    Теперь по вашему внешнему IP (если есть) или локальному - http://127.0.0.1:8000/, будет доступно online-радио, которое будет проигрывать mp3-файлы, перечисленные в '/path/to/playlist/playlist.txt'.
    Для того чтобы прослушать, что же получилось, достаточно в любом айдиоплеере (будь то Audacious, XMMS, Zinf или mpg123) ввести http://127.0.0.1:8000/ (для XMMS нажимаем Ctrl+L и в появившемся окне вводим URL).
    Если зайти на этот же URL каким-нибудь браузером, то можно увидеть www-страничку с информацией об аудио-сервере (текущий статус, последние проигранные песни). Там же есть ссылка на 'Admin', по которой можно управлять списком подключенных слушателей (удалять их и банить), а также просматривать лог.

    В качестве очень существенного недостатка SHOUTcast-сервера можно отметить отсутствие поддержки формата OGG. По заявлениям разработчиков, заниматься они этим в ближайшее время и не планируют :(

    Трансляция сигнала с аналогового входа

    Для трансляции сигнала с аналогового входа звуковой карты с помощью sc_trans необходимо в плейлист (тот самый 'PlaylistFile' в конфиге sc_trans.conf, по умолчанию это example.lst) добавить следующие строки:
    DSP:/dev/dsp
    DSP:/dev/dsp
    где /dev/dsp- устройство аудио-карты, с которой и будет идти поток (cтроку обязательно надо указать именно два раза, т.к. по необъяснимым причинам, первая строка playlist'а попросту игнорируется).

    Вот, собственно мы уже сделали всё, чтобы трансляция заработала. Для большего удобства, рекомендую поместить содержимое папок sc_serv и sc_trans_posix_040 в одну папку. Программы конфликтовать не будут. Забыл ещё упомянуть, о том что трансляция буквально сразу же после запуска sc_trans обычно не работает, требуется подождать немного времени (максимум текущую песню, играющую песню можете глянуть в своём админ листе).