Новости из Блогов Создание системы трансляции звука на базе Debian, Icecast2, Ices и XBMC

Discussion in 'Мировые новости. Обсуждения.' started by Suicide, 9 Dec 2013.

  1. Suicide

    Suicide Super Moderator
    Staff Member

    Joined:
    24 Apr 2009
    Messages:
    2,482
    Likes Received:
    7,062
    Reputations:
    693
    Создание системы трансляции звука на базе Debian, Icecast2, Ices и XBMC


    09.12.2013
    Автор: Artem B Solodchenko
    http://www.opennet.ru/tips/2815_debian_icecast_ices_xbmc_shoutcast_stream_audio.shtml



    Появилась задача реализовать звуковое оповещение на территории предприятия. Проблема заключается в том, что оператор с микрофоном и прочими звукодевайсами находится на расстоянии 2-х километров от места где должны висеть колонки.
    Таким образом построение аналоговой системы очень дорогое удовольствие. При этом по всей территории существует действующая компьютерная сеть. То есть нужно организовать трансляцию звука через эту сеть.

    Для этого нам нужно будет использовать один компьютер как
    "транслятор", а другие как "приемники". Для построения
    сервера трансляции я использовал OS Linux Debian7.2, Icecast2 - сервер трансляции и Ices2 - организатор потока. Для построение клиента подвернулось очень интересное решение. Наткнулся на вот такое устройство:
    http://raspberrypi.ru/ - Одноплатный компьютер на базе процессора ARM 11 c тактовой частотой 700 mhz и 512mb RAM. И операционную систему к нему: XBMC Raspbian.

    Установка сервера:

    После установки Debian доставляем следующие пакеты: icecast2 ices2 pulseaudio
    Code:
     apt-get install icecast2
       apt-get install ices2
       apt-get install pulseaudio
    после чего ставим pulseaudio в автозапуск
    Code:
    update-rc.d pulseaudio enable 
    iceast2 конфигурация:

    для начала включаем использование icecast2. Для этого в файле /etc/default/icecast2 меняем
    Code:
    ENABLE=false 
    на
    Code:
      ENABLE=true
    после чего правим файл конфигурации /etc/icecast2/icecast.xml
    Code:
     <icecast> 
           <limits> 
               <clients>100</clients> <!-- Максимальное кол-во клиентов -->
               <sources>8</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>ПАРОЛЬ</source-password> 
               <relay-password>ПАРОЛЬ</relay-password> 
               <admin-user>admin</admin-user> 
               <admin-password>ПАРОЛЬ</admin-password> 
           </authentication> 
    
           <hostname>localhost</hostname> <!-- Название сервера трансляции -->
    
           <listen-socket> 
              <port>8000</port> <!-- Порт трансляции -->
           </listen-socket> 
           <fileserve>1</fileserve> 
    
           <paths> 
    
               <basedir>/usr/share/icecast2</basedir> 
               <logdir>/var/log/icecast2</logdir> 
               <webroot>/usr/share/icecast2/web</webroot> 
               <adminroot>/usr/share/icecast2/admin</adminroot> 
    
               <alias source="/" dest="/status.xsl"/> 
           </paths> 
    
           <logging> 
               <accesslog>access.log</accesslog> 
               <errorlog>error.log</errorlog> 
               <loglevel>3</loglevel> 
               <logsize>10000</logsize> 
           </logging> 
    
           <security> 
               <chroot>0</chroot> 
           </security> 
       </icecast> 
    проверяем работоспособность:
    Code:
    /etc/init.d/icecast2 start
    запускаем браузер, в адресной строке пишем : http://127.0.0.1:8000, авторизуемся, радуемся :)

    после чего ставим icecast2 в автозапуск
    Code:
    update-rc.d icecast2 enable 

    Конфигурация Ices2

    примеры конфигурационных файлов находятся в /usr/share/doc/ices2/examples

    мне нужно чтобы все что звучит на компе транслировалось в сеть. Используем ices-alsa.xml
    копируем его в /etc:

    Code:
     сp /usr/share/doc/ices2/examples/ices-alsa.xml /etc
    после чего правим конфиг:

    Code:
    /etc/ices-alsa.xml
    
       <?xml version="1.0"?> 
       <ices> 
    
           <background>1</background>  <!-- 1- Запуск в фоновом режиме -->
           <logpath>/var/log/ices</logpath> 
           <logfile>ices.log</logfile> 
           <logsize>2048</logsize> 
           <loglevel>4</loglevel> 
           <consolelog>0</consolelog> 
    
           <stream> 
               <metadata> 
                   <name>Example stream name</name> 
                   <genre>Example genre</genre> 
                   <description>A short description of your stream</description> 
                   <url>http://mysite.org<;/url> 
               </metadata> 
    
               <input> 
                   <module>alsa</module> 
                   <param name="rate">44100</param> 
                   <param name="channels">2</param> 
                   <param name="device">pulse</param> <!-- Устройство с которого берется поток -->
                   <param name="metadata">1</param> 
                   <param name="metadatafilename">test</param> 
               </input> 
    
               <instance> 
                
                   <hostname>АДРЕС_СЕРВЕРА_ТРАНСЛЯЦИИ</hostname> <!-- Адрес icecast2 сервера -->
                   <port>8000</port> <!-- Порт icecast2 сервера -->
                   <password>ПАРОЛЬ</password> <!-- Пароль к icecast2 серверу -->
                   <mount>/example1.ogg</mount> <!-- Название потока -->
                   <yp>1</yp>   <!-- allow stream to be advertised on YP, default 0 --> 
    
                   <encode> 
                       <quality>1</quality> 
                       <samplerate>22050</samplerate> 
                       <channels>2</channels> 
                   </encode> 
    
                   <downmix>0</downmix> 
    
                   <resample> 
                       <in-rate>44100</in-rate> 
                       <out-rate>22050</out-rate> 
                   </resample> 
               </instance> 
            </stream> 
       </ices> 
    Автозапуск ices2

    С автозапуском ices2 появились определенные проблемы. Он должен запуститься самым последним, желательно после старта GNOME. По этому используем графическое приложение "Настройки запуска приложений" для настройки
    автозапуска ices2. Добавляем "Приложения → Системные → Параметры → Запускаемые приложения" Говорим "добавить", имя: Название приложения (Ices2), команда:
    /usr/bin/ices2 /etc/ices-alsa.xml, описание: Описание приложения (Starting
    Streaming Ices2).

    На этом конфигурация сервера окончена. Все что воспроизводится на сервере будет ретранслироваться в сеть.

    Установка OpenElec XBMC на RaspbianPi

    Для этого микрокомпьютера есть несколько операционных систем. Подробнее здесь: http://www.raspberrypi.org/downloads

    Ссылка на скачивание OpenElec XBMC
    http://downloads.raspberrypi.org/openelec_latest . Качаем, распаковываем.

    Для установки cначала скачиваем и устанавливаем MiniTool Partition Wizard Home edition вот отсюда: http://www.partitionwizard.com/free-partition-manager.html
    Запускаем, создаём раздел Primary 150 Mb, FAT32, Active с меткой System. Еще раздел на всю свободную область флешки Primary, EXT4 с меткой Storage.
    После этого переходим в раздел с распакованным дистрибутивом и делаем:
    Code:
    copy target\KERNEL d:\kernel.img
       copy target\SYSTEM d:\
       copy 3dparty\bootloader\*.* d:\
       copy openelec.ico d:
       copy README.md d:\
    создаем и редактируем файл d:\cmdline.txt

    вписываем в него следующее:
    Code:
     boot=/dev/mmcblk0p1 disk=/dev/mmcblk0p2 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 ssh
    d:\ - ваш flashdrive

    После этого вставляем флешку в RaspbianPi и включаем этот компьютер.

    ВАЖНО: логин root пароль openelec

    Создание ссылки на вещание

    В директории /storage/music

    создаем файл с расширением .strm

    в нем указываем источник трансяции
    Code:
    http://АДРЕС_ICECAST:PORT/FILENAME
    Удалённая перезагрузка OPEN Elec

    На клиентской машине создаем "чистый" файл ключа:
    Code:
     ssh-keygen -t rsa
       (на все вопросы отвечаем ENTER)
    После этого вход на этот комп осуществляется как:
    Code:
    ssh root@АДРЕС_ХОСТА
    И соответственно перезарузка:
    Code:
    ssh root@АДРЕС_ХОСТА reboot
    и остановка
    Code:
    ssh root@АДРЕС_ХОСТА poweroff
     
    _________________________
  2. twister37r

    twister37r New Member

    Joined:
    23 Jul 2013
    Messages:
    9
    Likes Received:
    0
    Reputations:
    0
    Всё гуд, спасибо
     
Loading...