Το παρακάτω σεμινάριο εξηγεί πώς να ρυθμίσετε έναν διακομιστή ροής ραδιοφώνου IceCast και να αναπαράγετε αρχεία ήχου (μουσική ή podcast) στην πλατφόρμα FreeBSD. Αυτό το σεμινάριο προϋποθέτει ότι εκτελείτε FreeBSD 10.0 ή νεότερη έκδοση και ότι έχετε συνδεθεί ως χρήστης root. Υπέθεσε επίσης ότι έχετε ένα πρόγραμμα επεξεργασίας κειμένου για να επεξεργαστείτε αρχεία διαμόρφωσης.
Πριν ξεκινήσουμε, είναι σημαντικό να κατανοήσουμε τα τρία μέρη ενός διακομιστή ροής ήχου. Πρώτον, έχουμε το ίδιο το λογισμικό διακομιστή, το IceCast. Το IceCast λειτουργεί σαν κεντρικός κόμβος όπου εισέρχονται και αποστέλλονται ροές ήχου. Η υπηρεσία IceCast δέχεται ροές ήχου από πελάτες πηγής. Τα προγράμματα-πελάτες πηγής είναι προγράμματα που διαβάζουν αρχεία ήχου ή άλλες πηγές ήχου, όπως μικρόφωνα. Στο παράδειγμά μας, ο πελάτης πηγής είναι ο Ices και παρέχει μια ροή ήχου στον διακομιστή IceCast. Το τρίτο στοιχείο είναι ένας πελάτης ακρόασης. Οι ροές ήχου ταξιδεύουν από τον διακομιστή IceCast στους ακροατές που στη συνέχεια ακούν τον ήχο. Συνήθως ένας πελάτης ακρόασης είναι μια εφαρμογή επιτραπέζιου υπολογιστή, όπως ένα πρόγραμμα περιήγησης ιστού, το πρόγραμμα αναπαραγωγής πολυμέσων VLC ή το WinAMP. Οπτικά, η διάταξη μοιάζει με αυτό:
Source client (Ices) --> IceCast server --> Listening client (browser)
Για να ρυθμίσουμε έναν διακομιστή ροής IceCast στο FreeBSD, εγκαθιστούμε πρώτα το ίδιο το λογισμικό διακομιστή. Αυτό μπορεί να γίνει εκτελώντας την ακόλουθη εντολή.
pkg install icecast2
Στη συνέχεια ανοίγουμε το /etc/rc.conf
αρχείο και ενεργοποιούμε την υπηρεσία φόντου IceCast. Αυτό γίνεται με την προσθήκη του παρακάτω κειμένου στο κάτω μέρος του /etc/rc.conf
αρχείου.
icecast_enable="YES"
Το επόμενο βήμα μας είναι να διαμορφώσουμε την υπηρεσία IceCast. Το πακέτο IceCast συνοδεύεται από ένα δείγμα αρχείου διαμόρφωσης που μπορούμε να τροποποιήσουμε. Αυτό το δείγμα αρχείου βρίσκεται στον /usr/local/etc
κατάλογο. Θα δημιουργήσουμε ένα αντίγραφο αυτού του δείγματος αρχείου πριν το επεξεργαστούμε.
cd /usr/local/etc
cp icecast.xml.sample icecast.xml
Τώρα θέλουμε να επεξεργαστούμε μερικά βασικά πεδία του icecast.xml
αρχείου. Το μεγαλύτερο μέρος του αρχείου μπορεί να παραμείνει με τις προεπιλεγμένες ρυθμίσεις, αλλά θα πρέπει να αλλάξουμε τις πληροφορίες σύνδεσης. Μπορούμε να το κάνουμε αυτό με την επίσκεψη της ταυτότητας τμήμα (περίπου γραμμή 30) και την αλλαγή της πηγής, τον κωδικό πρόσβασης και ρελέ-password σε κάτι κατάλληλο. Αυτοί οι κωδικοί πρόσβασης θα μας επιτρέψουν να μεταφέρουμε δεδομένα στον διακομιστή IceCast από έναν πελάτη πηγής. Θα πρέπει επίσης να αλλάξουμε τις μεταβλητές admin-user και admin-password σε κάτι μοναδικό για το σύστημά μας. Αυτά τα δύο διαπιστευτήρια προστατεύουν το web-based interface του διακομιστή IceCast. Στη συνέχεια, στη γραμμή 150, θα πρέπει να αλλάξουμε τις μεταβλητές mount-name , username , καικωδικός πρόσβασης . Αυτές οι τρεις μεταβλητές προστατεύουν το σημείο προσάρτησης του διακομιστή IceCast. Τέλος, στο κάτω μέρος του icecast.xml
αρχείου θα πρέπει να δούμε μια ενότητα ασφαλείας που έχει σχολιαστεί. Θα πρέπει να αφαιρέσουμε τα σύμβολα ανοίγματος <-- και κλεισίματος --> γύρω από την παράγραφο ασφαλείας . Μόλις icecast.xml
αλλάξει το αρχείο, αποθηκεύστε το αρχείο.
Αφού επεξεργαστεί το αρχείο ρυθμίσεων, θέλουμε να ενεργοποιήσουμε την καταγραφή. Για να το κάνετε αυτό, εκτελέστε τις ακόλουθες εντολές.
mkdir /var/log/icecast
chown nobody:nogroup /var/log/icecast
Τέλος, ξεκινάμε τον διακομιστή IceCast. Αυτό κάνει τον διακομιστή να ακούσει για εισόδους και εισερχόμενες συνδέσεις πελάτη.
service icecast2 start
Ο διακομιστής IceCast είναι έτοιμος και λειτουργεί, επομένως τώρα πρέπει να του παρέχουμε κάτι για αναπαραγωγή. Το επόμενο βήμα μας είναι να εγκαταστήσουμε τον πελάτη πηγής Ices. Το FreeBSD προς το παρόν δεν προσφέρει δυαδικό πακέτο για Ices, επομένως πρέπει να το δημιουργήσουμε από θύρες. Αυτό μπορεί να γίνει εκτελώντας τις παρακάτω εντολές.
portsnap fetch
portsnap extract
cd /usr/ports/audio/ices
make install
make clean
Το πρόγραμμα-πελάτης πηγής Ices θα χρειαστεί λογαριασμό χρήστη και καταγραφή. Για να δημιουργήσετε έναν χρήστη για το λογισμικό Ices και να ορίσετε έναν κωδικό πρόσβασης στο λογαριασμό, εκτελέστε αυτές τις εντολές.
pw groupadd ice
pw useradd ices -g ice -m
passwd ices
Με τη δημιουργία του χρήστη, μπορούμε πλέον να ενεργοποιήσουμε την καταγραφή για Ices.
mkdir /var/log/ices
chown ices:ice /var/log/ices
Από εδώ και πέρα, δεν θα χρειαζόμαστε πλέον πρόσβαση χρήστη root και μπορούμε να λειτουργούμε ως χρήστης ice . Στη συνέχεια, πρέπει να δημιουργήσουμε δύο καταλόγους. Ένας κατάλογος, music
, θα περιέχει τα αρχεία ήχου που πρόκειται να κάνουμε ροή. Ο δεύτερος κατάλογος, conf
, θα περιέχει τα αρχεία διαμόρφωσής μας.
su ices
cd /home/ices
mkdir music conf
cp /usr/local/share/ices/ices-playlist.xml conf/configuration.xml
Τώρα έχουμε ένα δείγμα αρχείου διαμόρφωσης. Είναι καιρός να επεξεργαστούμε το conf/configuration.xml
αρχείο ώστε να ταιριάζει στο περιβάλλον μας. Τα μόνα μέρη του αρχείου που πρέπει να αλλάξουμε βρίσκονται στη γραμμή 60. Εδώ πρέπει να παρέχουμε τον κωδικό πρόσβασης και τη θέση προσάρτησης που ορίσαμε στο icecast.xml
αρχείο. Για παράδειγμα, εάν ορίσουμε το όνομα προσάρτησης στο icecast.xml
αρχείο να είναι /radio.ogg
, τότε θα πρέπει να αλλάξουμε την παράμετρο προσάρτησηςconfiguration.xml
του αρχείου μας σε επίσης να είναι . Το πεδίο κωδικού πρόσβασης θα πρέπει να ταιριάζει με τον κωδικό πηγής που δημιουργήσαμε στο αρχείο. Αφού επεξεργαστούμε το αρχείο μας , θα χρειαστεί να αποθηκεύσουμε τις αλλαγές μας./radio.ogg
configuration.xml
icecast.xml
configuration.xml
Με το αρχείο διαμόρφωσης στη θέση του, το επόμενο βήμα θα πρέπει να είναι η αντιγραφή αρχείων ήχου που θέλουμε να μεταφέρουμε ροή στον music
κατάλογο. Τα αρχεία ήχου θα πρέπει να είναι όλα σε .ogg
μορφή, καθώς το IceCast δεν θα χειρίζεται .mp3
αρχεία με τις προεπιλεγμένες ρυθμίσεις του. Μόλις όλα τα αρχεία ήχου που θέλουμε να μεταδώσουν είναι στον music
κατάλογο, πρέπει να δημιουργήσουμε μια λίστα αναπαραγωγής. Μια λίστα αναπαραγωγής είναι ένα αρχείο απλού κειμένου με μια λίστα της μουσικής που θέλουμε να κάνουμε ροή. Μπορούμε εύκολα να δημιουργήσουμε μια λίστα αναπαραγωγής με τις παρακάτω εντολές.
cd /home/ices/conf
ls -d ../music/*.ogg > playlist.txt
Τα αρχεία ήχου θα αναπαραχθούν με τη σειρά που εμφανίζονται στο playlist.txt
αρχείο. Το αρχείο μπορεί να επεξεργαστεί σε οποιοδήποτε πρόγραμμα επεξεργασίας κειμένου για να προσαρμόσετε τη σειρά του ήχου ροής.
Το μόνο που χρειάζεται να κάνουμε για να ξεκινήσουμε τη ροή των αρχείων ήχου μας είναι να εκτελέσουμε αυτήν την εντολή.
ices configuration.xml
Πλευρική σημείωση: Συχνά μπορεί να θέλουμε να εκτελέσουμε το πρόγραμμα-πελάτη πηγής Ices και, στη συνέχεια, να αποσυνδεθούμε και να κάνουμε κάτι άλλο. Σε αυτήν την περίπτωση, μου αρέσει να εκτελώ το Ices μέσα από μια περίοδο λειτουργίας οθόνης . Ακολουθεί ένα παράδειγμα σχετικά με τον τρόπο εκτέλεσης του πάγου με την οθόνη.
screen
cd /home/ices/conf
ices configuration.xml
Στη συνέχεια, πατήστε Ctrl + A και πατήστε το πλήκτρο D. Αυτό θα αποσυνδέσει την περίοδο λειτουργίας της οθόνης και θα μας επιτρέψει να αποσυνδεθούμε ενώ ο Ices παίζει ήχο στο παρασκήνιο. Αργότερα, μπορούμε να σταματήσουμε το Ices κάνοντας είσοδο και εκτελώντας:
screen -r
killall ices
exit
Μπορούμε τώρα να συνδεθούμε στον διακομιστή μας στη θύρα 8000 σε ένα πρόγραμμα περιήγησης ιστού για να ακούσουμε τη ροή ήχου μας. Η διεύθυνση URL θα μοιάζει με http://myservername:8000
. Αυτή η διεύθυνση μπορεί να γίνει δημόσια διαθέσιμη, αν θέλετε να αφήσετε άλλους να ακούσουν τη ροή.
Νωρίτερα, ανέφερα ότι το IceCast παίζει .ogg
αρχεία και όχι .mp3
. Αυτό είναι αρκετά εύκολο να ξεπεραστεί στο FreeBSD. Ως βασικός χρήστης, μπορούμε να εγκαταστήσουμε ένα εργαλείο μετατροπής, το sox , το οποίο θα μετατρέψει τα .mp3
αρχεία μας σε .ogg
αρχεία. Υποθέτοντας ότι όλα τα .mp3
αρχεία μας βρίσκονται στον /home/ices/music
κατάλογο, μπορούμε να εγκαταστήσουμε το sox και να πραγματοποιήσουμε μια μετατροπή ως εξής:
pkg install sox
cd /home/ices/music
for i in *.mp3; do sox ./"$i" ./"$i".ogg; done
Στη συνέχεια, μπορούμε να ανανεώσουμε τη λίστα αναπαραγωγής μας χρησιμοποιώντας:
cd ../conf
ls -d ../music/*.ogg > playlist.txt
Λάβετε υπόψη ότι η ροή ήχου μπορεί να είναι εντατική σε εύρος ζώνης. Ένας ή δύο πελάτες που ακούν τον ραδιοφωνικό μας σταθμό δεν θα απαιτούν μεγάλο εύρος ζώνης, αλλά 50 ή περισσότεροι πελάτες θα μπορούσαν να ωθήσουν έναν διακομιστή στο εκχωρημένο μηνιαίο εύρος ζώνης του. Είναι καλή ιδέα να ενεργοποιήσετε τον περιορισμό εύρους ζώνης στον διακομιστή ροής για να αποφύγετε απροσδόκητα οικονομικά κόστη.