Сетевое радио - mod_mp3 к apache1.3

07.01.2010 21:28 Администратор
Печать

Сетевое радио - mod_mp3 к apache1.3

Автор: lissyara.
Оригинал: http://www.lissyara.su/articles/freebsd/www/mod_mp3/

Нашёл в портах интересный модуль mod_mp3 - позволяет сделать из апача сетевую радиостанцию. Причём не тупо вещщающую по списку, а несколько, индивидуально, чтоль... Короче если песня не нравится - жмёшь в ВинАмпе кнопку "следующий" - и он играет следующую :) Удобно. Я себе дома привернул - лень перестраивать список воспроизведения, если что-то добавиться-убавиться, при перезапуска апача сам заново построится :)
Ставим из портов. В портах, на данный момент, представлена версия 0.4 - хотя на сайте разработчика можно взять нестабильную 1.2. Я ставил из портов./usr/home/lissyara/>cd /usr/ports/
/usr/ports/>make search name='mod_mp3'
Port: mod_mp3-0.40
Path: /usr/ports/www/mod_mp3
Info: Apache module to allow MP3 streaming
Maint: Этот e-mail адрес защищен от спам-ботов, для его просмотра у Вас должен быть включен Javascript
B-deps: apache-1.3.34_3 expat-1.95.8_3 perl-5.8.7_2
R-deps: apache-1.3.34_3 expat-1.95.8_3 perl-5.8.7_2
WWW: http://tangent.org/index.pl?lastnode_id=478&node_id=380

/usr/ports/>cd /usr/ports/www/mod_mp3
/usr/ports/www/mod_mp3/>make && make install && make clean
.............................
************************************************************
You've installed mod_mp3, a MP3 streaming module for Apache.

Edit your apache.conf or httpd.conf to enable and setup this
module. Have a look at the files in
${PREFIX}/share/doc/mod_mp3 for information on how to
configure it etc.

Then do this to make it work effective:

# apachectl configtest (see if there are any config errors)
# apachectl restart

************************************************************
/usr/ports/www/mod_mp3/>


Очень советую почитать документацию по программе, идущую в комплекте, особенно FAQ - там несколько толковых примеров. После осмыслении доков раскомментируем в /usr/local/etc/apache/httpd.conf следующие строки:
LoadModule mp3_module libexec/apache/mod_mp3.so
AddModule mod_mp3.c


и туда же добавляем ещё один виртуальный хост (наскока я понял - не обязательно прям уникальное имя, можно обойтись виртуальным хостом на нестандартном порту - но я изгаляться не стал):
####### модуль mod_mp3 #######
<VirtualHost *:80>
# Имя сервера (если обратиться не по имени - не подконнектится...)
# звёздочка - значит любое.
ServerName muzik.lissyara.su
# Админ сервера - если будет ошибка то выводится этот адрес
ServerAdmin Этот e-mail адрес защищен от спам-ботов, для его просмотра у Вас должен быть включен Javascript
# Куда, собственно пишем ошибки сервера
ErrorLog /var/log/httpd-error.log
<IfModule mod_mp3.c>
# Исчо не знаю чё такое
#SetEnvIfNoCase User-Agent mozilla is_a_browser
# Собственно, включен или выключен (On/Off) модуль mp3
MP3Engine On
# Количество одновременных коннектов при воспроизведении
# музона. В оригинальной доке даже правило приводится, как
# его правильно рассчитать, в зависимости от ширины канала.
MP3LimitPlayConnections 4
# Имя Радиостанции (если слушать из-под форточек -
# надо чтобы было в кодировке cp1251, я извратился так:
# echo 'Вы слушаете радиостанцию \"Эхо унитазного бачка...\"' \
# | iconv -f koi8-r -t cp1251 >> httpd.conf
# ну а внутри httpd.conf переместил куда надо в Midnight Commander)
MP3CastName "Вы слушаете радиостанцию \"Эхо унитазного бачка...\""
# Тип радио (классика, рок, попса...)
MP3Genre "Тока RAMMS+EIN"
# Апач шерстит нижеуказанную директорию, составляет список
# всех композиций (рекурсивно) и воспроизводит их
MP3 "/usr/local/smb/movie/muzik/"
# Плэйлист - у меня так и не получилось чтоб с ним заработал
#MP3Playlist /usr/home/lissyara/playlist.txt
# Какой-то режим, наскока я понял - позволяет прилеплять
# комменты к композициям - тоже не пошло...
# MP3Stream On
# Случайное воспроизведение
MP3Random On
# Если эту опцию раскомментировать то показывается список
# всех треков на сервере, и у посетителя есть выбор - какую
# песню слушать, или слушать весь список...
# MP3DefaultOperation select
</IfModule>
</VirtualHost>


Насчёт виртуальных хостов, если будете делать как-то иначе - советую посмотреть документацию по apache. Там всё толково разжёвано. Перезапускаем апач:/usr/local/etc/apache/>/usr/local/etc/rc.d/apache.sh restart
Stopping apache.
Waiting for PIDS: 22982.
Starting apache.
/usr/local/etc/apache/>ps -ax | grep httpd
27508 ?? Ds 0:02,85 /usr/local/sbin/httpd
27685 p0 S+ 0:00,02 grep httpd
/usr/local/etc/apache/>


И по адресу и порту указанному в настройках слушаем музыку :) Надо сразу отметить - если музыки в указанной директории много (у меня 13Gb, 2500 файлов) то запуск апача займёт некоторое время - ему же надо пройтись по всем директориям и составить список. Опять-таки у меня, с тем количеством файлов, что указано, на AMD K6-II 550MHz на запуск уходит секунд 30. Ещё столько же после этого он чё-то делает и только после этого начинает играть музыка. Загрузка проца сервера не очень большая - на моей машине это было 1-2% на каждого клиента. Копейки.
Также учтите - пользователь www должен иметь право доступа к музыке - хотя б чтение. Впрочем, если Вы специально не ограничивали права на диркторию и музыкальные файлы - всё должно быть пучком.

Косяки: Если файл с "интересным" бирейтом, типа 135 и подобное, не кратное двум, то воспроизводится он вдвое быстрей чем положено :)


Обновлено 28.05.2010 13:24