Локальная инет радиостанция при помощи icecast +ices

    Рылся в своих старых записях и решил поделится с Вами инструкцией как просто и быстро поднять нормальный сервер для он лайн транслирования своего радио (mp3 файлы) и для ретрансляции внешних радиостанций.
    Кому интересно прошу под кат.

    Я использовал сервер под управлением FreeBSD. Считаем, что у нас есть свежее дерево портов. Начнем установки icecast:

    #cd /usr/ports/audio/icecast2
    #make install clean
    


    Далее создаем пользователя для инет радио radio и группу radio и создаем каталог где это все будет лежать.

    #mkdir /var/icecast 
    #pw group add radio
    # adduser
    Username:radio
    Full name: Radio user
    Uid (Leave empty for default):
    Login group [radio]:
    Login group is radio. Invite jru into other groups? []: 
    Login class [default]:
    Shell (sh csh tcsh zsh nologin) [sh]: nologin
    Home directory [/home/radio]:
    Home directory permissions (Leave empty for default):
    Use password-based authentication? [yes]:
    Use an empty password? (yes/no) [no]:
    Use a random password? (yes/no) [no]:
    Enter password:
    Enter password again:
    Lock out the account after creation? [no]:
    Username   : radio
    Password   : ****
    Full Name  : Radio user
    Uid        : 1001
    Class      :
    Groups     : radio
    Home       : /home/radio
    Locked     : no
    OK? (yes/no): yes
    adduser: INFO: Successfully added (radio) to the user database.
    Add another user? (yes/no): no
    Goodbye!
    


    После копируем все файлы для веб интерфейса:

    cp /usr/local/share/icecast /var/icecast

    Cоздаем каталог для лога:

    mkdir /var/icecast/log

    Cоздаем файлы для логов:

    cd /var/icecast/log
    touch access.log
    touch error.log
    


    Меняем права:

    chown -R radio:radio /var/icecast

    Далее идем смотреть файл конфига:

    cd /usr/local/etc
    cp icecast.xml.sample icecast.xml
    


    Конфигурим файл. Опишу только важные параметры
    Аутентификация. Первое — это пароль на подключение для трансляции через ваш сервер icecast.Второе — это логин пароль на веб интерфейс по адресу icecast_ip:8000

    <authentication>
            <!-- Sources log in with username 'source' -->
            <source-password>123</source-password>
            <!-- Relays log in username 'relay' -->
            <relay-password>123</relay-password>
    
            <!-- Admin logs in with the username given below -->
            <admin-user>admin</admin-user>
            <admin-password>12345678</admin-password>
        </authentication>
    


    Далее выбираем IP сервера и порт так же точку монитрования потока с ices но это позже:

    <listen-socket>
            <port>8000</port>
            <bind-address>192.168.1.7</bind-address>.
            <shoutcast-mount>/ices</shoutcast-mount>.
    
        </listen-socket>
    


    Так же я собираюсь рестранслировать радиостанции украины Киссфм (+ Киссфм в АСС), наше радио, люкс фм, и хит фм:

    <relay>
            <server>91.201.37.42</server>
            <port>8000</port>
            <mount>/kiss</mount>
            <local-mount>/kiss</local-mount>
            <on-demand>1</on-demand>
            <relay-shoutcast-metadata>0</relay-shoutcast-metadata>
    </relay>
    
    <relay>
            <server>91.201.37.42</server>
            <port>8000</port>
            <mount>/kissACC</mount>
            <local-mount>/kissACC</local-mount>
            <on-demand>1</on-demand>
            <relay-shoutcast-metadata>0</relay-shoutcast-metadata>
    </relay>
    ....
    <relay>........
            <server>195.95.206.12</server>
            <port>8000</port>
            <mount>/HitFM</mount>
            <local-mount>/hitfm</local-mount>
            <on-demand>1</on-demand>
            <relay-shoutcast-metadata>0</relay-shoutcast-metadata>
    </relay>
    
    <relay>
            <server>77.120.104.251</server>
            <port>8000</port>
            <mount>/</mount>
            <local-mount>/luxfm</local-mount>
            <on-demand>1</on-demand>
            <relay-shoutcast-metadata>0</relay-shoutcast-metadata>
    </relay>
    
    <relay>
            <server>212.26.129.222</server>
            <port>8001</port>
            <mount>/</mount>
            <local-mount>/nashe</local-mount>
            <on-demand>1</on-demand>
            <relay-shoutcast-metadata>0</relay-shoutcast-metadata>
    </relay>
    
    


    Далее меняем параметры нахождения каталогов в разделе
     <basedir>/var/icecast</basedir>
    
            <logdir>/log</logdir>
            <webroot>/web</webroot>
            <adminroot>/admin</adminroot>
             <pidfile>/var/run/icecast.pid</pidfile>
    
    


    И последнее, но не последнее по значению. Icecast не работает от root вот и мы меняем разрешения на ранее созданого юзера и группу

    <security>
            <chroot>1</chroot>
    
            <changeowner>
                <user>radio</user>
                <group>radio</group>
            </changeowner>
    
        </security>
    


    Далее пробуем взлететь, смотрим что он ругается:

    #/usr/local/bin/icecast -c /usr/local/etc/icecast.xml

    Если все хорошо прерываем через Ctrl+c и идем дальше:

    Я использовал iсes0 ибо мне нужно было воспроизводить mp3 а для ogg по идее нужно использовать ices2, вроде он тоже воспроизводить mp3, но я не проверял:

    #cd /usr/ports/audio/ices
    #make install clean
    


    Тут что бы не мучатся с правами делаем проще (можете сами создавать каталог где хотите):

    mkdir /tmp/radio

    Складываем сюда файлы mp3 и создаем плейлист:

    find /tmp/radio -name *.mp3 > /tmp/radio/playlist.txt

    Должен получится файл playlist.txt с таким содержимым:

    /tmp/radio/Far East Movement ft. The Cataracs & Dev - Like A G6.mp3
    /tmp/radio/The_Prodigy_-_Voodoo_People_(Pendulum_Remix).mp3
    /tmp/radio/1.mp3
    


    Меняем права #chmod -R 777 /tmp/radio и идем ломать файл ices.conf

    cd /usr/local/etc/
    cp ices.conf.dist ices.conf
    


    Редактируем. У меня вышел такой вид (коменты Афтора):

    <?xml version="1.0"?>
    <ices:Configuration xmlns:ices="http://www.icecast.org/projects/ices">
      <Playlist>
        <!-- Показываем где лежит плейлист -->
        <File>/tmp/radio/playlist.txt</File>
        <!-- хотим что бы играло случайно ставим 1. . -->
        <Randomize>0</Randomize>
        <!-- тип плей листа, менять не нужно -->
        <Type>builtin</Type>
        <!-- нужно только для плейлиста на Perl И pyton, для нашего случая не нужно-->
        <Module>ices0</Module>
        <!-- если нужно что бы между песнями было затухание то разремируем и выставляем в секундах. по умочанию выключено т.е. 0
        <Crossfade>5</Crossfade>
        -->
      </Playlist>
    
      <Execution>
        <!-- запускать демоном ставьте 1 -->
        <Background>1</Background>
        <!-- хотите видеть все логи в файле ставим 1 -->
        <Verbose>1</Verbose>
        <!-- Каталог где будет находится лог и pid файлы -->
        <BaseDirectory>/tmp</BaseDirectory>
      </Execution>
    
      <Stream>
        <Server>
          <!-- ip  icecast сервера куда хотим прицепится -->
          <Hostname>192.168.1.7</Hostname>
          <!-- порт -->
          <Port>8000</Port>
          <!-- пароль на конект что бы транслировать icecast server -->
          <Password>123</Password>
          <!-- Если сервер  Shoutcast ставим "icy", icecast 1.x ставим "xaudiocast", а если icecast 2.x то "http". -->
          <Protocol>http</Protocol>
        </Server>
      <!-- точка монтирования потока на айскаст сервера -->
        <Mountpoint>/ices</Mountpoint>
        <!-- The name of the dumpfile on the server for your stream. DO NOT set
             this unless you know what you're doing. не понял за чем не менял
        <Dumpfile>ices.dump</Dumpfile>
        -->
        <!-- Имя вашей трансляции, а не имя трека -->
        <Name>mp3 stream</Name>
        <!-- Жанр, или стиль вашей трансляции -->
        <Genre>it</Genre>
        <!-- большое описание вашей трансляции -->
        <Description>Local streaming</Description>
        <!-- ссылока вашей трансляции -->
        <URL>http://gate.mydomain.com/</URL>
        <!--0 если не хотите сделать ваш сервер публичным и 1 если хотите -->
        <Public>0</Public>
    
        <!--качество трансляции, меняйте осторожно-->
        <Bitrate>128</Bitrate>
        <!-- если поставить 1 то ices попробует на лету пережимать трансляцию при помози  liblame в нужное качество потока -->
        <Reencode>0</Reencode>
        <!-- Number of channels to reencode to, 1 for mono or 2 for stereo -->
        <!-- Sampe rate to reencode to in Hz. Leave out for LAME's best choice
        <Samplerate>44100</Samplerate>
        -->
        <Channels>2</Channels>
      </Stream>
    </ices:Configuration>
    


    Далее добавляем в /etc/rc.conf строки:

    icecast_enable="YES"
    icecast_flags="-c /usr/local/etc/icecast.xml"
    ices0_enable="YES"
    ices0_flags="/usr/local/etc/ices.conf"
    


    И пробуем взлетать:

    cd /usr/local/etc/rc.d
    #./icecast2 start
    #./ices0 start
    


    Открываем в баузере ссылку:
    192.168.1.7:8000/status.xsl

    Скачиваем m3u нужного потока и вперед.
    Интернет-радио поставлено «конект по требованию», так что первый конект медленный. Кому не жалко инет трафика — поменяйте значение
    <on-demand>1</on-demand> на <on-demand>0</on-demand>.

    Так же ices как проиграет весь плейлист выключается. Как сделать по кругу не нашел пока что. Но, если запустить ices через рандом то его игрища никогда не заканчиваются smile.
    В файле ices.conf меняем параметр 0 на 1 и все.

    Similar posts

    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 3

      0
      Как сделать по кругу не нашел пока что

      С Java знакомы? Libshout-java читает потоки и файлы, Ices не нужен.
        +1
        Есть решение проще, и удобнее с точки зрения управления плей листами Airtime.
        Работает так же с айскастом, но имеет удобный интерфейс, в котором можно управлять тем тем, что играет в эфире.
          0
          Если интересно, когда то занимался подобным ТУТ

          Only users with full accounts can post comments. Log in, please.