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
cd /opt/icecast/latest/etc
mv icecast.xml icecast.xml.orig
nano icecast.xml
groupadd -g 200 icecast
useradd -d /var/log/icecast -m -g icecast -s /bin/bash -u 200 icecast
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:
- cd /opt/icecast/latest/etc/
- nano ices1.xml (plik w którym tworzymy stacje radiowe, pewne opcje musimy zmienić na własne:)
RadioStation 1: OGG Varios Test Radio 1 http://MyHost/IP:8000/
/opt/icecast/latest/etc/playlist1.txt
- 1
- 0
- 1
-
-
MyHost/IP -
8000 -
password -
/radiostation1
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
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
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
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:).
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
Aż tak bardzo się w to nie wgłębiałem, ponieważ nie mam potrzeby tworzenia aukcji live.