Streaming plików audio OGG/MP3 własne radio przez Icecast – CentOS

Chciałbym przedstawić przepis jak we własnym zakresie postawić serwer plików audio (radio) wraz ze streamingiem. Wykorzystamy w tym celu CentOS’a oraz Icecast.


1) Instalacja oraz konfiguracja Icecast:

yum groupinstall „Development Tools”
yum install -y curl-devel libtheora-devel libvorbis-devel libxslt-devel speex-devel libxslt
rpm –import http://apt.sw.be/RPM-GPG-KEY.dag.txt
cd /home
wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm
mkdir -p /usr/src/icecast
cd /usr/src/icecast
wget http://downloads.xiph.org/releases/icecast/icecast-2.3.3.tar.gz


Wypakowujemy pliki:

 tar xf icecast-2.3.3.tar.gz cd icecast-2.3.3


następnie konfigurujemy:


./configure –prefix=/opt/icecast/2.3.3


na koniec kompilujemy kod źródłowy:

 make  make install


powinniśmy mieć w katalogu  /opt/icecast/2.3.3/bin/ binarke icecast*.

następnie wydajemy:

cd /opt/icecast
ln -s 2.3.3 latest

musimy teraz skonfigurować icecast’a:

cd /opt/icecast/latest/etc
mv icecast.xml icecast.xml.orig
nano icecast.xml

w pliku musimy skonfigurować podstawowe zasady działania naszej aplikacji (pewne opcje musimy zmienić na własne):


100
10
5
524288
30
15
10
1
65535

password
admin
password
MyHost/IP
8000
1

/opt/icecast/latest/share/icecast
/opt/icecast/latest/share/icecast/web
/opt/icecast/latest/share/icecast/admin
/var/log/icecast
/var/run/icecast/icecast.pid

access.log
error.log
playlist.log
1
10000
1

0
icecast
icecast

Tworzymy użytkownika dla naszej aplikacji oraz dodajemy do grupy:

groupadd -g 200 icecast
useradd -d /var/log/icecast -m -g icecast -s /bin/bash -u 200 icecast

następnie:

mkdir -p /var/run/icecast
chown -R icecast:icecast /var/run/icecast



Startujemy usługę:


/opt/icecast/latest/bin/icecast -c /opt/icecast/latest/etc/icecast.xml -b



Powinniśmy otrzymać poniższą odpowiedź:

Starting icecast2Detaching from the consoleChanged groupid to 200.Changed userid to 200.


Logi powinny być w ls /var/log/icecast/.


Sprawdzamy czy Icecast działa:

pgrep -fl icecast



powinniśmy otrzymać podobny do poniższego wynik:

4434 /opt/icecast/latest/bin/icecast -c 
/opt/icecast/latest/etc/icecast.xml -b


Musimy sprawdzić czy Icecast działa poprzez przeglądarkę, dlatego łączymy się z nim:

http://IP:8000


Musimy podać login oraz hasło, które znajduje się w pliku icecast.xml.


2) Konfigurujemy dostęp do OGG:

Pobieramy libshout:

 cd /usr/src/icecast wget http://downloads.us.xiph.org/releases/libshout/libshout-2.3.1.tar.gz

tar xf libshout-2.3.1.tar.gzcd libshout-2.3.1
./configure –prefix=/opt/icecast/latest
 make
 make install

Pobieramy klienta ices: 

cd /usr/src/icecastwget http://downloads.us.xiph.org/releases/ices/ices-2.0.2.tar.bz2
tar xf ices-2.0.2.tar.bz2cd ices-2.0.2/
export PKG_CONFIG_PATH=/opt/icecast/latest/lib/pkgconfig:$PKG_CONFIG_PATH
./configure –prefix=/opt/icecast/latest
 make
 make install

Sprawdzamy czy nasz klient jest dostępny tam gdzie być powinien:

ls /opt/icecast/latest/bin/

Konfigurujemy OGG:

  1.  cd /opt/icecast/latest/etc/
  2.  nano ices1.xml (plik w którym tworzymy stacje radiowe, pewne opcje musimy zmienić na własne:)
  3.     
  4.      
  5.        
  6.          RadioStation 1: OGG
  7.          Varios
  8.          Test Radio 1
  9.          http://MyHost/IP:8000/
  10.        
  •        
  •          basic
  •          /opt/icecast/latest/etc/playlist1.txt

    1.          1
    2.          0
    3.          1
    4.        
    5.        
    6.          MyHost/IP
    7.          8000
    8.          password
    9.          /radiostation1
    10.        
  •      
  •    
  •    
  •    

       
    Każdy plik z muzyk musi być podpięty do aplikacji, tak aby mogła go odnaleźć:

    cd /opt/icecast/latest/etc/nano playlist1.txt

    przykładowe podpięcie plików muzycznych (oczywiście przykład):

    /music/artist/album/song1.ogg /music/artist/album/song2.ogg

    Listę przebojów możemy utworzyć również znajdując wszystkie pliki ogg na dysku:

    find /music/artist/album/ -name „*.ogg” > /opt/icecast/latest/etc/playlist1.txt

    Uruchomimy cały nasz biznes:

    su – icecast -c „/opt/icecast/latest/bin/ices /opt/icecast/latest/etc/ices1.xml”

    Sprawdźmy logi, które powinny pokazać że nasze radio działa:

    cat /var/log/icecast/ices1.log INFO signals/signal_usr1_handler Metadata update requested INFO playlist-basic/playlist_basic_get_next_filename Loading playlist from file „/opt/icecast/latest/etc/playlist1.txt” INFO playlist-builtin/playlist_read Currently playing „/music/artist/album/song2.ogg” INFO stream/ices_instance_stream Connected to server: IP:8000/radiostation1

    Do naszego prywatnego radio możemy dostać się:

    http://IP:8000/radiostation1

    3)Konfiguracja MP3:
    Teraz zajmiemy się konfiguracją najpopularniejszego formatu plików audio – MP3. Jeżeli mamy zainstalowane paczki do obsługi OGG, możemy ominąć ich instalacje (do linii ———-):

    cd /usr/src/icecastwget http://downloads.us.xiph.org/releases/libshout/libshout-2.3.1.tar.gztar xf libshout-2.3.1.tar.gzcd libshout-2.3.1 ./configure –prefix=/opt/icecast/latest make  make install

    ————————————————————-
    Kompilujemy icegenerator:

    cd /usr/src/icecast wget http://netcologne.dl.sourceforge.net/project/icegenerator/icegenerator/0.5.5-pre2/icegenerator-0.5.5-pre2.tar.gz tar xfz icegenerator-0.5.5-pre2.tar.gz cd icegenerator-0.5.5-pre2 ./configure make make install cd /usr/local/etc nano icegen1.cfg

    Odpowiednio konfigurujemy wytłuszczone opcje:

    IP=IP_serveraPORT=8000 SERVER=2 MOUNT=/radiostation2PASSWORD=nasze_hasłoFORMAT=1 # 1 dla Mp3, 0 dla OGG MP3PATH=m3u:/usr/local/etc/playlist2.m3u #playlista mp3 LOOP=1 SHUFFLE=1 NAME=RadioStation 2: MP3DESCRIPTION=Test RadioGENRE=Varios URL=http://IP:8000/LOG=2 LOGPATH=/var/log/icecast/icegen1.log BITRATE=48000 SOURCE=source

    Nasz przykładowa playlista:

    nano /usr/local/etc/playlist2.m3u /music/artist/album/song1.mp3/music/artist/album/song2.mp3

    lub łatwiej wrzucamy wszystkie pliki .mp3 jakie mamy:

    find /music/artist/album/ -name „*.mp3” & > /usr/local/etc/playlist2.m3u

    Odpalamy to wszystko:

    su – icecast -c „export LD_LIBRARY_PATH=/opt/icecast/latest/lib:$LD_LIBRARY_PATH; /usr/local/bin/icegenerator -f /usr/local/etc/icegen1.cfg”

    Sprawdzamy czy działa:

    pgrep -fl icegen

    Podejrzyjmy logi:

    cat /var/log/icecast/icegen1.log

    Powinniśmy otrzymać wynik podobny do tego:

    Connected to stream serverNow playing song1.mp3Fri Wait for all child process to terminate……

    Przez przeglądarkę dostaniemy się:

    http://IP:8000/radiostation2


    Dziękuję Ci, za poświęcony czas na przeczytanie tego artykułu. Jeśli był on dla Ciebie przydatny, to gorąco zachęcam Cię do zapisania się na mój newsletter, jeżeli jeszcze Cię tam nie ma. Proszę Cię także o “polubienie” mojego bloga na Facebooku oraz kanału na YouTube – pomoże mi to dotrzeć do nowych odbiorców. Raz w tygodniu (niedziela punkt 17.00) otrzymasz powiadomienia o nowych artykułach / projektach zanim staną się publiczne. Możesz również pozostawić całkowicie anonimowy pomysł na wpis/nagranie.

    Link do formularza tutaj: https://beitadmin.pl/pomysly

    Pozostaw również komentarz lub napisz do mnie wiadomość odpisuję na każdą, jeżeli Masz jakieś pytania:).

    2 komentarze do “Streaming plików audio OGG/MP3 własne radio przez Icecast – CentOS”

    1. W bardzo prosty sposób opisałeś jak postawić własne radio z plikami z dysku.
      Radio to nie tylko odtwarzanie muzyki z plików ale też transmisja na żywo.
      Interesuje mnie jak za pomocą takiego rozwiązania wykonać transmisję na żywo.
      Czy bawiłeś się kiedyś takim zastosowaniem?
      Interesuje mnie wykonie powiedzmy kilka razy w tygodniu o stałej godzinie transmisji na żywo, dla określonej liczby osób, nad którymi będę miał kontrolę kto w danej chwili słucha, i będę mógł odciąć niechcianego słuchacza

      Odpowiedz

    Dodaj komentarz

    beitadmin.pl - Droga Administratora IT