Для этого я выбрал следующий путь…
В качестве серверной системы использую Ubuntu Server 12.10.
Первым делом ставим Icecast2:
sudo apt-get install icecast2
Далее ставим mpd:
sudo apt-get install mpd
Создадим директорию radio в корне файловой системы.
Создадим 3 файла в этой директории
- icecast.xml.default
- mpd.conf.default
- script.sh
И скопируем 2 директории из каталога /etc/icecast2/
- web
- admin
Далее необходимо отредактировать файлы настроек Icecast2 и mpd.
Файл icecast.xml.default:
<icecast> <limits> <clients>50</clients> <sources>2</sources> <threadpool>5</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-password>#2</source-password> <relay-password>#2_relay</relay-password> <admin-user>admin</admin-user> <admin-password>admin_#2</admin-password> </authentication> <hostname>127.0.0.1</hostname> <listen-socket> <port>#3</port> </listen-socket> <mount> <mount-name>/#1</mount-name> </mount> <paths> <basedir>#0/#1/icecast2</basedir> <logdir>#0/#1/icecast2/log</logdir> <webroot>#0/#1/icecast2/web</webroot> <adminroot>#0/#1/icecast2/admin</adminroot> <pidfile>#0/#1/icecast2/icecast.pid</pidfile> <alias source="/" dest="/status.xsl"/> </paths> <logging> <accesslog>access.log</accesslog> <errorlog>error.log</errorlog> <loglevel>4</loglevel> <logsize>10000</logsize> </logging> <security> <chroot>0</chroot> <changeowner> <user>icecast</user> <group>icecast</group> </changeowner> </security> </icecast>
Разберем что значат параметры:
#0 — путь до директории пользователя
#1 — имя пользователя
#2 — пароль пользователя
#3 — порт на котором будет запущен Icecast2
Теперь отредактируем mpd.conf.default:
music_directory "#1/#2/music" playlist_directory "#1/#2/playlists" db_file "#1/#2/lib/tag_cache" log_file "#1/#2/log/mpd.log" pid_file "#1/#2/pid" state_file "#1/#2/state" user "mpd" bind_to_address "127.0.0.1" port "#5" auto_update "yes" audio_output { type "shout" name "#2 radio" encoding "mp3" host "localhost" port "#4" mount "/#2" password "#3" bitrate "192" format "44100:16:2" } audio_output { type "alsa" name "fake out" driver "null" } volume_normalization "yes" filesystem_charset "UTF-8" id3v1_encoding "UTF-8" metadata_to_use "artist,album,title,track,name,genre,date,composer,performer,disc"
Параметры mpd:
#1 — путь до директории пользователя
#2 — имя пользователя
#3 — пароль пользователя для Icecast2
#4 — порт на котором запущен Icecast2
#5 — порт для управления mpd
И последний файл — скрипт настройки:
#!/bin/bash MAIN_DIR=/userAlias FROM=/radio if [ $# -lt 4 ]; then echo "==== Не заданы параметры ====" echo "Формат ./script.sh 'userName' 'userPassword' 'port' 'mpdPort'" exit 1 fi echo "<===> Начало работы скрипта <===>" if [ ! -d "$MAIN_DIR" ]; then mkdir $MAIN_DIR echo " Создана главная папка для пользователей" fi mkdir $MAIN_DIR'/'$1 echo " Создана папка пользователя " $1 echo "" echo "<===> Настройка icecast <===>" cp $FROM/icecast.xml.default $MAIN_DIR'/'$1'/'icecast.xml replace '#0' $MAIN_DIR -- $MAIN_DIR'/'$1'/'icecast.xml replace '#1' $1 -- $MAIN_DIR'/'$1'/'icecast.xml replace '#2' $2 -- $MAIN_DIR'/'$1'/'icecast.xml replace '#3' $3 -- $MAIN_DIR'/'$1'/'icecast.xml mkdir $MAIN_DIR'/'$1'/icecast2' mkdir $MAIN_DIR'/'$1'/icecast2/log' mkdir $MAIN_DIR'/'$1'/icecast2/web' mkdir $MAIN_DIR'/'$1'/icecast2/admin' cp $FROM/icecastDirs/admin/* $MAIN_DIR'/'$1'/icecast2/admin' cp $FROM/icecastDirs/web/* $MAIN_DIR'/'$1'/icecast2/web' touch $MAIN_DIR/$1/icecast2/log/error.log touch $MAIN_DIR/$1/icecast2/log/access.log chown icecast:icecast $MAIN_DIR/$1/icecast.xml chown icecast:icecast $MAIN_DIR/$1/icecast2/log/* echo "<===> Настройка icecast завершена <===>" echo "" echo "<===> Настройка mpd <===>" cp $FROM/mpd.conf.default $MAIN_DIR'/'$1'/'mpd.conf replace '#1' $MAIN_DIR -- $MAIN_DIR'/'$1'/'mpd.conf replace '#2' $1 -- $MAIN_DIR'/'$1'/'mpd.conf replace '#3' $2 -- $MAIN_DIR'/'$1'/'mpd.conf replace '#4' $3 -- $MAIN_DIR'/'$1'/'mpd.conf replace '#5' $4 -- $MAIN_DIR'/'$1'/'mpd.conf mkdir $MAIN_DIR'/'$1'/music' mkdir $MAIN_DIR'/'$1'/playlists' mkdir $MAIN_DIR'/'$1'/lib' mkdir $MAIN_DIR'/'$1'/log' touch $MAIN_DIR/$1/lib/tag_cache chmod 777 $MAIN_DIR/$1/lib/tag_cache touch $MAIN_DIR/$1/pid chmod 777 $MAIN_DIR/$1/pid echo "<===> Настройка mpd завершена <===>" echo "<===> Запуск icecast <===>" icecast2 -b -c $MAIN_DIR'/'$1'/'icecast.xml sleep 1s echo "<===> Запуск mpd <===>" mpd $MAIN_DIR'/'$1'/'mpd.conf
Если не вдаваться в подробности, то скрипт делает следующее:
- создаются директории для пользователя
- копируются файлы настроек Icecast2 и mpd
- подменяются параметры в файлах настроек
- создаются дополнительные файлы для Icecast2 и mpd
- выставляются права на файлы
- запуск Icecast2
- запуск mpd
После создания 3 файлов необходимо сделать скрипт запускаемым:
chmod 777 script.sh
И выполнить:
./script.sh radio1 password1 9001 19001
После работы скрипта будут запущены Icecast2 и mpd.
В браузере можно попробовать обратится по адресу:
<host>:9001/radio1
К сожалению произойдет ошибка… mpd сервер не запущен ( не проигрывает музыку) и музыкальных файлов нет.
Первым делом необходимо скопировать музыкальные файлы для пользователя в директорию: /userAlias/radio1/music/
Далее надо составить плейлист для пользователя — проще всего установить консольный клиент для mpd:
sudo apt-get install ncmpc
С его помощью можно подключится и управлять mpd.
Подключаемся:
ncmpc -p 19001
Сначала нужно перечитать папку music Ctrl + U
После надо нажать ‘3’ — перейдем в режим просмотра медиатеки.
Управляя клавишами ВВЕРХ / ВНИЗ и выбираем ПРОБЕЛом песни.
Нажав ‘2’ — просмотр плейлиста. Нажав Enter — запустим наш проигрыватель.
Если все правильно настроено, то по перейдя по адресу <host>:9001/radio1
услышим музыку из плейлиста.
Выслушаю любые конструктивные пожелания, замечания и предложения.
ссылка на оригинал статьи http://habrahabr.ru/post/170235/
Добавить комментарий