Трансляция интернет-радио и локальной музыкальной коллекции с помощью icecast2 и mpd в Debian 4.0 Etch

В первую очередь разберемся что же из себя представляют вышеназванные программы
— icecast2 (http://www.icecast.org/) — потоковый медиа-сервер, поддерживающий Ogg Vorbis и MP3 аудио потоки. Icecast — проект с открытым исходным текстом и распространяющийся на условиях лицензии GPLv2

— mpd (http://www.MusicPD.org) — предоставляет удаленный доступ для воспроизведения музыки (MP3, Ogg Vorbis, FLAC, AAC, Mod, и wave форматов) управлением плей-листа и пр. MPD также является проектом с открытым исходным текстом и распространяющимся на условиях лицензии GPLv2

1. Установка и настройка mpd.
apt-get install mpd
vi /etc/mpd.conf
# MPD CONFIG FILE
# For a full description of all config parameters,
# Check the mpd man page, «man mpd».

############ REQUIRED####################

# You can put symlinks in here, if you like. Make sure
# user that mpd runs as (see the ‘user’ config parameter)
# can read the files in this directory

# You can put symlinks in here, if you like. Make sure
# user that mpd runs as (see the ‘user’ config parameter)
# can read the files in this directory
music_directory «/mnt/musik»
playlist_directory «/mnt/musik»
db_file «/var/lib/mpd/tag_cache»
log_file «/var/log/mpd/mpd.log»
error_file «/var/log/mpd/errors.log»
pid_file «/var/run/mpd/pid»
###########################################

###########################################
# EVERYTHING ELSE IS OPTIONAL
###########################################

############# AUDIO OUTPUT####################
#Я не использую ни OSS ни ALSA
audio_output {
type «ao»
driver «null»
name «default ao output»
}

############## SHOUT STREAMING################
audio_output {
type «shout»
name «new stream»
host «127.0.0.1»
port «8001»
mount «/mpd.ogg»
password «password_mpd»
bitrate «128»
format «44100:16:1»
} # end of audio_output
################ FILESYSTEM SETTINGS ############
filesystem_charset «UTF-8»
id3v1_encoding «CP1251»
###########################################
state_file «/var/lib/mpd/state»
########## SECURITY SETTINGS####################
user «mpd»
bind_to_address «localhost»

Немного о приведенных параметрах конфигурации-

music_directory «/mnt/musik»
playlist_directory «/mnt/musik»
db_file «/var/lib/mpd/tag_cache»
log_file «/var/log/mpd/mpd.log»
error_file «/var/log/mpd/errors.log»
pid_file «/var/run/mpd/pid»

В данном разделе указываем пути к нашей музыкальной коллекции, плей-листу, базе, файлам логирования.


audio_output {
type «ao»
driver «null»
name «default ao output»
}

как уже было сказано выше — я не использую ни OSS, ни ALSA, поэтому в качестве устройства вывода использую «null»
Для использования OSS либо ALSA пишем:
для OSS —

audio_output {
type «oss»
name «my OSS sound card»
device «/dev/dsp» # optional
format «44100:16:2» #optional
}
# OSS Mixer
mixer_type «oss»
mixer_device «/dev/mixer»
mixer_control «PCM»

для ALSA

audio_output {
type «alsa»
name «my ALSA device»
device «hw:0,0» # optional
format «44100:16:2» #optional
}
# ALSA Mixer
mixer_type «alsa»
mixer_device «default»
mixer_control «PCM»

Для передачи потока к icecast2 —

audio_output {
type «shout»
name «my stream»
host «127.0.0.1»
port «8001»
mount «/mpd.ogg»
password «password_mpd»
bitrate «128»
format «44100:16:1»
} # end of audio_output

В данном разделе указываем параметры соединения для icecast2 (type, host, port, mount, password) и качество потока (bitrate, format)


filesystem_charset «UTF-8»
id3v1_encoding «CP1251»

UTF8 — кодировка файловой системы
id3v1_encoding — кодировка тегов музыкальных композиций

Я опустил большинство параметров и привел минимальную рабочую конфигурацию (статья будет в формате шпаргалки)
Стартуем mpd:
исправляем в /etc/default/mpd
START_MPD=true
и /etc/init.d/mpd start
создаем базу
mpd —create-db
для управления mpd устанавливаем mpc
apt-get install mpc
добавляем композиции в плей-лист
mpc ls |mpc add
проверяем
mpc playlist
и запускаем
mpc play
проверяем
mpc
К параметрам mpc я еще вернусь, а пока рекомендую man mpc
Мы должны увидеть следующее, разумеется название композиции ваше 🙂
Др. — Воля что неволя..
[playing] #115/429 1:55 (97%)
volume:100% repeat: on random: on
На этом этап настройки mpd можно считать завершенным

Установка и настройка icecast2
apt-get install icecast2
vi /etc/icecast2/icecast.xml


    
        50
        2
        5
        524288
        30
        15
        10
        1
        65535
    

    
        password_mpd
        password_mpd

        admin
        password_admin
    

    
        15
        http://dir.xiph.org/cgi-bin/yp-cgi
    

    localhost
    
    

    
    8000
    

    
        8001
        127.0.0.1
    

    
        209.51.161.54
        8072
        /
        /radio_rock.mp3
        1
        1
    

    
            81.88.113.18
            1072
            /
            /radio_pop.mp3
            1
            1
    

     
            scfire-nyk-aa03.stream.aol.com
            80
            /stream/1010
            /jazz.mp3
            1
            1
    

    
            205.188.215.226
            8020
            /
            /guitar.mp3
            1
            1
    

    
            72.51.33.149
            8000
            /
            /skyrock.mp3
            1
            1
    

    
            www.hitroe.com
            8000
            /relay_low.ogg
            /hitroe.ogg
            1
            1
    

    
            85.21.79.5
            8073
            /
            /Corbina_rock.mp3
            1
            1
    

    1

   /stream

    
            /usr/share/icecast2
            /var/log/icecast2
            /usr/share/icecast2/web
            /usr/share/icecast2/admin
            
            
    

    
        access.log
        error.log
        
        4 
        10000 
   

    
        0
        
    

Попытаюсь кратко описать конфигурацию:

   
        50
        2
        5
        524288
        30
        15
        10
        1
        65535
    

В данном разделе определяется:
— максимальное количество открытых потоков
50;
— количество источников потоков
2;
— количество нитей, одновременно обрабатывающие подключения, для загруженных серверов рекомендуется увеличить это значение
5;
— размер очереди (в байтах), ведется для каждого клиента, при большой загрузке сети, клиент может временно отставать, однако при превышении этого параметра клиент удаляется из потока.
524288;
— cледующий параметр в настоящее время не используется
30;
— максимальное время (в секундах) для организации подключения, рекомендуется оставить значение по умолчанию
15;
-время после которого, в случае отсутствия активности источника потока, он (источник) удаляется с сервера
10;
— так называемый всплеск потока, предназначен для ускорения начала проигрывания у клиента, это обуславливается тем, что большинство клиентских программ используют пребуферацию
1;
— размер в байтах для всплеска
65535;

Следующий раздел — раздел аутентификации

  
        password_mpd
        password_mpd

        admin
        password_admin
    

— пароль для источника потока, указывается в незашифрованном виде
password_mpd
— пароль для подчиненных серверов, транслирующие ваши потоки.
password_mpd
— логин и пароль для доступа к интерфейсу администратора
admin
password_admin

Если собираетесь публиковать информацию о аудио-потоках вашего сервера в icecast2 YP каталогах, то следующий раздел вам в этом поможет


        15
        http://dir.xiph.org/cgi-bin/yp-cgi

— Время (в секундах) ожидания ответа от сервера icecast2 YP
15
— адрес сервера каталога
http://dir.xiph.org/cgi-bin/yp-cgi

Настройки интерфейсов сервера

 localhost
 
 
 
        8000
  
  
        8001
        127.0.0.1
  

В данном разделе указываются интерфейсы, и порты для связи с нашим сервером
указываем имя сервера —
localhost
порт к которому будут подключаться клиенты —

если необходимо сделать привязку к конкретному интерфейсу, указываем —

Следующим этапом определяю сокеты для основного и альтернативного (mpd) потоков

 
     8000
 

в данном случае отсутствует директива bind-address, поэтому 8000 порт будет доступен на всех сетевых интерфейсах.


        8001
        127.0.0.1

для подключения mpd мы используем порт 8001 и слушать его будем исключительно на внутреннем интерфейсе.

Следующим разделом мы будем ретранслировать внешний аудио-поток через наш сервер

 
        209.51.161.54
        8072
        /
        /radio_rock.mp3
        1
        1
 

Адрес удаленного источника —
209.51.161.54
Порт удаленного источника —
8072
точка монтирования удаленного потока —
/
локальная точка монтирования —
/radio_rock.mp3
Поток будет транслироваться только в том случае, если к нему подключен клиент (1-включено, 0-выключено) —
1
Трансляция метаданных потока (названия песен)
1
Аналогично поступаем для всех серверов

В данном разделе определяем пути используемые icecast2

    
            /usr/share/icecast2
            /var/log/icecast2
            /usr/share/icecast2/web
            /usr/share/icecast2/admin
            
            
    

Используется только в том слчае, если icecast2 запущен в chroot окружении —
/usr/share/icecast2
Путь к файлам журнала —
/var/log/icecast2
Путь к базовому каталогу, используемого для запросов —
/usr/share/icecast2/web

Раздел журналирования


        access.log
        error.log
        
        4 
        10000 
   

В данный файл будет помещаться информация о запросах к нашему серверу —
access.log
В файл error.log помещается отладочная информация
error.log
Уровень логирования, для начала рекомендуется 4 — отладочный, после того как сервер будет введен в эксплуатацию, желательно использовать — 1-й уровень —
4
Следующий параметр определяет максимальный размер (в килобайтах) журнальных файлов
10000

И последний раздел — раздел безопасности

 
        0
        
 

В нем определяем будем ли стартовать icecast2 в chroot окружении, (0 — не используется, 1 — включено) —
0
Пользователь и группа от имени которого будет запускаться icecast2 —
nobody
nogroup
Последним этапом настройки будет редактирование /etc/default/icecast2 — исправляем false на true
ENABLE=true
И стартуем /etc/init.d/icecast2 start
Для того, что бы проверить работоспособность набираем в вашем любимом браузере http://ip_adress_server:8000 . Мы должны увидеть следующую картину

Если, что-то пошло не так смотрим /var/log/icecast2/error.log
Т.к. у меня при перезагрузке icecast2 не всегда успевал отработать «stop» в /etc/init.d/icecast2 исправление sleep 1 на sleep 5 исправило ситуацию
P.S. Хочу заметить, что это черновой вариант. Принимаю любую критику.
2008 Владислав Никитин

Источник http://nklug.org.ua/node/11

Запись опубликована в рубрике *Unix,*Linux. Добавьте в закладки постоянную ссылку.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Я не спамер This plugin created by Alexei91