Организация сервера потокового вещания SHOUTcast в Linux
Автор xdriver (C) xmaksim(@)mail(.)ru
Настройка потокового аудиосервера SHOUTcast в ОС Linux/FreeBSD
ЧАСТЬ 1 - sc_serv
Подробное описание процесса установки и настройки потокового аудиосервера SHOUTcast (и программного обеспечения, необходимого для работы с ним) для создания своего online-радио под операционной системой Linux.
SHOUTcast — продукт от компании Nullsoft, позволяющий создавать потоковый аудиосервер (audio streaming server) для трансляции музыкальных файлов (MP3) и других аудиосигналов посредством интернета. Помимо самого аудиосервера разработчиками представлены и так называемые Broadcasting tools. Все программное обеспечение является бесплатным, но распространяется с закрытым кодом (в виде исполняемых файлов).
SHOUTcast server — самое ядро создаваемой потоковой аудиосистемы — работает под операционными системами Windows, Mac OS X, FreeBSD, Linux и Solaris. Скачать его последнюю версию можно на сайте SHOUTcast.
SHOUTcast Linux server v1.9.4:
wget http://www.shoutcast.com/downloads/sc1-9-4/shoutcast-1-9-4-linux-glibc6.....
После того как скачается:
$ tar xzvf shoutcast-1-9-4-linux-glibc6.tar.gz
В появившемся каталоге shoutcast-1-9-4-linux-glibc6 расположен конфиг сервера SHOUTcast (sc_serv.conf).
Правим конфигурацию сервера:
; Максимальное количество пользователей, которые могут одновременно
; находится на сервере.
MaxUser=32
; Пароль для broadcasting-программ. Подробнее см. ниже. Это поле не может
; быть пустым.
Password=mypassword
; Порт аудиосервера.
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.10
; Пароль для администрирования через Web-интерфейс. Подробнее см. ниже.
AdminPassword=mywebadminpassword
; Отключать слушателей, если источник аудиопотока отсоединяется.
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
Исполняемый файл для запуска самого сервера — sc_serv. Вызывается он с одним параметром, указывающим на путь к конфигу:
$ ./sc_serv sc_serv.conf
Все готово. Сервер должен запуститься без проблем.
ЧАСТЬ 2 - sc_trans
После того, как начнет работу сервер, нужно, направить ему аудиопоток. Для этого и нужны broadcasting-утилиты. На сайте SHOUTcast представлены родные программы:
SHOUTcast DSP Plug-In for Mac OS X, Linux and FreeBSD (v0.40):
wget http://www.shoutcast.com/downloads/sc_trans_posix_040.tgz.
После того как скачается:
$ tar xzvf sc_trans_posix_040.tgz
И в появившемся каталоге sc_trans_040 расположен конфиг для вещания на SHOUTcast-сервере (sc_trans.conf). Таким образом и будет создан вышеупомянутый «источник аудиопотока».
Правим его конфигурацию:
; Файл со списком проигрываемых mp3. Создать его можно с помощью find:
; find /path/to/mp3s/ -type f -name *.mp3 > playlist.txt
; find /path2/to/mp3s/ -type f -name *.mp3 >> playlist.txt
PlaylistFile=/path/to/playlist/playlist.txt
Примечание: зависит от версии используемого шелла.
Бывает ругается на недопустимость использования маски *.mp3
В этом случае маску впишите в обычные кавычки.
Например: find /path/to/mp3s/ -type f -name "*.mp3" > playlist.txt
; IP и порт для сервера, на котором будет вещание.
ServerIP=127.0.0.1
ServerPort=8000
; Пароль для broadcasting'а. (См. конфиг сервера.)
Password=mypassword
; Информация о музыке. Название аудиопотока, его адрес, жанр музыки.
StreamTitle=Testing
StreamURL=http://127.0.0.1:8000/
Genre=Classic
; Название файла для логирования.
LogFile=sc_trans.log
; Включение случайной выборки песен.
Shuffle=1
; Настройки воспроизводимого сигнала (обычно прямо пропорционально зависят
; от пропускной способности сети). Здесь указан битрейт 128 Кбит
Bitrate=131072
SampleRate=44100
Channels=1
; "Качество". Значения от 1 (лучшее) до 10.
Quality=1
; Режим "затухания". Песня по завершении проигрывания затихает.
; 0: отключение, 1: 100/100->100/0, 2: 0/100->100/0
CrossfadeMode=0
; Продолжительность этого "затухания" (в мс).
CrossfadeLength=0
; Читать ID3-теги.
UseID3=1
; Данная станция не является публичной.
Public=0
; Контакты для обратной связи.
AIM=---
ICQ=---
IRC=---
На этом конфигурация закончена.
Запуск аналогичен:
./sc_trans_linux sc_trans.conf
Теперь по адресу http://127.0.0.1:8000/ доступно online-радио, которое будет проигрывать mp3-файлы, перечисленные в /path/to/playlist/playlist.txt. Для того чтобы прослушать, что же получилось, достаточно в каком-либо плейере (будь то WinAMP, или любой другой подерживающий потоковое воспроизведение) ввести http://127.0.0.1:8000/
Если зайти на этот же URL каким-нибудь браузером, то можно увидеть www-страничку с информацией об аудиосервере (текущий статус, последние проигранные песни). Там же есть ссылка на «Admin», по которой можно управлять списком подключенных слушателей (удалять их и банить), а также просматривать лог.
В качестве очень существенного недостатка SHOUTcast-сервера можно отметить отсутствие поддержки формата OGG. По заявлениям разработчиков, заниматься они этим в ближайшее время и не планируют.
Теперь о живом вещании (LIVE).
Audio-in: Линейный вход вашей звуковой карты.
Для трансляции сигнала с аналогого входа звуковой карты с помощью sc_trans необходимо в плей-лист (тот самый параметр PlaylistFile в конфиг-файле sc_trans.conf; по умолчанию это example.lst) добавить следующие строки:
DSP:/dev/dsp
DSP:/dev/dsp
Где /dev/dsp — устройство аудиокарты, с которой будет идти поток. (Строку обязательно надо указать именно два раза, т.к. по необъяснимым причинам первая строка playlist'а попросту игнорируется.)
На этом все.
_____________________________________
Копирование материала разрешено только при наличии ссылки на источник:
неофициальный проект GNU/Linux ХМАО-Югра www.oslinux.ru
В общем все написано, спасибо.
Думаю, что актальность "бесплатного закрытого" софта уходит.
Может открытые беслатные или платные аналоги рассмореть? В частности с поддержкой OGG
Я когда-то писал про icecast. ИМХО более интересное решение и совместимое с shoutcast.
SHOUTcast - верх извращения ИМХО не нужен
Icecast и Flumotion - Рулят !
Как альтернатива SHOUTcast существуют еще другие продукты...
Альтернативы SHOUTcast server:
icecast
Sphinxter
GNUMP3d
Ample
Другие средства для потокового аудиовещания на SHOUTcast/icecast server:
ices
Darkice
А статейку не сделаете, вроде народ просит)))
Видимо нет:(
ссылка http://www.shoutcast.com/downloads/sc_trans_posix_040.tgz. не пашет что делать подкиньте ссылку или киньте утилиту в асю
418473581
> ссылка http://www.shoutcast.com/downloads/sc_trans_posix_040.tgz. не пашет что делать подкиньте ссылку или киньте утилиту в асю
Очевидно посетить http://www.shoutcast.com
СПАСИБО А НА СЧЕТ НАСТРОЙКИ ЭТОГО ФАЙЛА КАК СОЗДАТЬ ПЛЕЙ ЛИСТ ПОЛНОЕ ПОШПГОВОЕ ОПИСАНИЕ
ЧТО ВПИСЫВАТЬ ВМЕСТО
; find /path/to/mp3/directory -type f -name "*.mp3" > playlist_filename.lst
PlaylistFile=example.lst
что вписывать вместо find
что вписывать вместо path
что вписывать вместо to
что вписывать вместо mp3
что вписывать вместо directory-type f -name".mp3" > playlist_filename.lst
PlaylistFile=/path/to/playlist/playlist.txt(сюда указать путь к плай листу
Помогите примерно подсчитать производительность. Нужно собрать или сделать апгрейт сервера для 500 слушателей в день. Планируют что число слушателей увеличится до 1000 посетителей в день.
Люди будут подключаться по www и слушать радио.
Вот например сервер с такими характеристиками сколько может принять слушателей единовременно?
Материнская плата SuperMicro X6DHR-8G2-B
CPU: Intel(R) Xeon(TM) CPU 3.06GHz (3065.81-MHz 686-class CPU)
Память: 4GB DDR2 400 SDRAM
диски 70ГБ (SCSI 10 000 оборотов)
На что идет основная нагрузка, память, проц, сеть..?
Не уверен, но мне кажется что с точки зрения вычислительной мощности этого барахла хватит.
А вот способность сетевой карты отдавать поток, нужно считать из битрейта.
Удачи! Интересное у вас начинание.
Все зависит от вашей скорости инета, а так пускай хоть будет старючая машина
Предлагаю так же открыть радио хостинг, нужна малость даработка а так все нормально, скорость огромная, работает круглосуточно, на сайте радио Талк написан мой хостинг, правда ни так много клиентов, так как только начал сам этим заниматься..
icq 362296117
> Все зависит от вашей скорости инета, а так пускай хоть будет старючая машина
Старая не пойдет, но такая как описал уважаемый, будет в самый раз. На глаз, субъективно.
сделал все по инструкции, но сервер почему то постоянно выдает такую ошибку
invalid password from 127.0.0.1 при попытке начать вещание


> В качестве очень существенного недостатка SHOUTcast-сервера можно отметить отсутствие поддержки формата OGG. По заявлениям разработчиков, заниматься они этим в ближайшее время и не планируют.
Жаль! А есть другие серверы? Открытые?
______________________________
In the world without walls, who needs windows?