forum.math.uoa.gr

Forum του Τμήματος Μαθηματικών
Ημερομηνία 11 Δεκ 2017, 11:28

Όλοι οι χρόνοι είναι UTC + 2 ώρες [ DST ]




Δημιουργία νέου θέματος Απάντηση στο θέμα  [ 2 δημοσιεύσεις ] 
Συγγραφέας Μήνυμα
 Θέμα δημοσίευσης: Icecast
ΔημοσίευσηΔημοσιεύτηκε: 01 Οκτ 2007, 02:26 
Χωρίς σύνδεση
Regular Forumer
Άβαταρ μέλους

Εγγραφη: 01 Μαρ 2006, 19:18
Δημοσ.: 3078
Τοποθεσια: Από δω κι από κεί.
Επανέρχομαι με περιγραφή του πώς θα κάνετε streaming μέσω του icecast server. Tο icecast 2 μπορείτε να το βρείτε εδώ. Υποστηρίζει τόσο μηχανήματα windows όσο και Unix - like. Θα περιγράψω την εγκατάσταση στο linux πρώτον γιατί στα windows είναι μια τυπική εγκατάσταση αλλά και γιατί το configuration είναι το ίδιο.

Α) Εγκατάσταση:

Εαν έχουμε debian ή debian - based δίνουμε απλά
Κώδικας:
sudo apt-get install icecast2


(αν δείτε τα πακέτα θα προσέξετε ότι υπάρχει κι ένα icecast-server. Η διαφορά τους είναι ότι το icecast μπορεί να κάνει stream μόνο σε μορφή mp3 ενώ το icecast2 και mp3 αλλά και ogg vorbis). Αν δεν έχουμε κάποιο debian - based τότε χρησιμοποιούμε τον package manager της διανομής μας ή πάμε εδώ και ακολουθούμε τις οδηγίες κάνοντας compile τον κώδικα.

Αν και νομίζω ότι γίνεται αυτόματα, εν τούτοις αν αυτό δε γίνει, θα πρέπει να φτιάξουμε έναν χρήστη icecast2 κι ένα group icecast (θυμηθείτε ότι στο Unix δεν τρέχουμε τίποτα ως root - πόσο μάλλον servers). Επειδή ουσιαστικά το θέλουμε για να φτιάξουμε έναν system account καλό θα ήταν να δώσουμε ένα χαμηλό gid (κάτω από 499 που φυσικά να είναι ελεύθερο), κι επομένως δίνουμε
Κώδικας:
sudo groupadd -g <gid> icecast


όπου <gid> το παραπάνω νούμερο gid (στο δικό μου μηχάνημα είναι 116).

Εν συνεχεία προσθέτουμε τον χρήστη που θέλουμε (icecast2). Είναι πολύ σημαντικό (για λόγους ασφαλείας) ο χρήστης αυτός να μην έχει δυνατότητα login. Επίσης εδώ το uid καλό θα ήταν να είναι πάνω από 100. Τέλος θέλουμε το home directory να είναι το /usr/share/icecast2 (ή όπου αλλού έχει εγκατασταθεί - τέλος έχω δει υλοποιήσεις σε *BSD που δε δίνουν κανένα home directory). Για αυτό δίνουμε
Κώδικας:
sudo useradd -d /usr/share/icecast2 -g <gid> -s /bin/false -u <uid> icecast2


(αν έχετε suse linux μπορείτε αντί γia /bin/false να δώσετε /sbin/nologin) όπου <gid> το group id της ομάδας icecast και <uid> το user id που θα δώσουμε στο χρήστη icecast2.


B) Ρυθμίσεις του icecast

Εν συνεχεία κάνουμε edit το /etc/icecast2/icecast.xml (με χρήση του sudo). Τα τμήματα που μας ενδιαφέρουν είναι τα εξής:

- <clients>: σε αυτό δηλώνουμε πόσους το πολύ ακροατές μπορούμε να έχουμε. Τυπικά υπολογίζεται ως το bandwidth το οποιο διαθέτουμε για upload προς το bitrate στο οποίο θα κάνουμε το streaming πάντα στρογγυλοποιημένο προς τα κάτω και καλού κακού αφαιρέστε έναν χρήστη (αλλιως ενδέχεται να υπάρχει lag). Στο παράδειγμα αυτό μπορούμε να έχουμε μέχρι 5 χρήστες.
- <sources>: πόσα streaming clients μπορούν να είναι συνδεδεμένα στο server μας. Εγώ το έχω στο 2.

Αφήνουμε τα υπόλοιπα από το section <limits> όπως είναι και πάμε στο πιο σημαντικό: authentication

- <source-password>: ο κωδικός με τον οποίο θέλουμε να συνδέεται καποιος στο server μας για να κάνει streaming.

- <relay-password>: για να κάνουμε relay από κάποιον άλλον server. Αν και μάλλον δε θα το χρησιμοποιήσουμε, ας το αλλάξουμε.

- <admin-user>: το όνομα του χρήστη που θα έχει δικαιώματα administration από το web interface.

- <admin-password>: το password του administrator για το web interface

ΠΡΟΣΟΧΗ: Επειδή στο web interface μπορούν να έχουν πρόσβαση και οι ακροατές μας αλλά και γενικά οποιοσδήποτε από το εξωτερικό δίκτυο, προσέχουμε να είνα αρκετά δύσκολα τα admin-user και admin-password.

Τέλος λίγο πιο κάτω στο τμήμα που λέει

Κώδικας:
<!-- You may have multiple <listener> elements -->
    <listen-socket>
        <port>8000</port>
        <!-- <bind-address>127.0.0.1</bind-address> -->
    </listen-socket>


στο port ορίζουμε την θύρα στην οποία θα συνδέονται οι ακροατές μας για να μας ακούσουν. Το default είναι 8000.

Τα άλλα από το συγκεκριμένο δε μας ενδιαφέρουν. Το σώζουμε και αφού το κλείσουμε ανοίγουμε το /etc/default/icecast2 (πάλι με sudo) και αλλάζουμε το ENABLE σε TRUE. Επίσης κοιτάμε αν στο USERID και στο GROUPID αναφέρονται αντίστοιχα ο χρήστης που δημιουργήσαμε πιο πάνω (ή που δημιούργηθηκε κατά την εγκατάσταση) icecast2 και το group icecast. Το σώζουμε και κλείνουμε.

Εκκινούμε τον server με
Κώδικας:
sudo /etc/init.d/icecast2 start
.

Γ) Streaming

Για το σκοπό αυτό θέλουμε ένα πρόγραμμα που να στέλνει τον ήχο από την κάρτα ήχου στο σερβερ. Υπάρχουν αρκετά τέτοια προγράμματα (εδώ μπορείτε να τα δείτε ανάλογα με την πλατφόρμα - σημειώστε ότι το SAM Broadcastrer είναι, κατά τη γνώμη μου, μακράν το καλύτερο αλλά δεν είναι free και είναι για windows - ωστόσο αν έχετε ένα μηχάνημα με Unix και ένα με windows αξίζει να το χρησιμοποιήσετε έστω και δοκιμαστικά). Προσωπικά χρησιμοποιώ το darkice με το darksnow. Το darkice θα το βρείτε εδώ και το darksnow εδώ. Παρόλα αυτά καλύτερα να εμπιστευτείτε τον package manager της διανομής σας. Για να τα εγκαταστήσετε σε debian based διανομή δίνετε

Κώδικας:
sudo apt-get install darkice darksnow


Αν θέλετε να κάνετε streaming σε mp3 θα χρειαστείτε τη βιβλιοθήκη lame. Από τον package manager κάνετε εγκατάσταση τα liblame0 και liblame-dev.

Για να τρέξουμε το πρόγραμμα που θα δίνει ήχο στο σερβερ δίνουμε

Κώδικας:
darkwnow


Στην καρτέλα Server Options:

- Streaming Destination: Icecast 2.
- Server: η ip διεύθυνση του υπολογιστή στον οποίο βρίσκεται ο server (αν είναι στον ίδιο υπολογιστή 127.0.0.1).
- Port: η port στην οποία ορίσαμε πιο πάνω να δέχεται συνδέσεις ο server (default 8000).
- Mount point: ένα όνομα (π.χ. live) που θα χρειαστεί ώστε να συνδέονται αυτοί που θα μας ακούσουν. Αν για παράδειγμα έχουμε τη διεύθυνση 256.256.256.256 τότε αυτοί που θα μας ακούν θα συνδέονται στο http://256.256.256.256:8000/live αν δώσουμε το όνομα live στο mount point (σημειώστε ότι έδωσα ανύπαρκτη διεύθυνση γιατί ο firefox κάνει αυτόματα link ο,τι ξεκινάει με το http).
- Password: o κωδικός που έχουμε βάλει στο source στο configuration του icecast (προσοχή όχι του admin oύτε του relay).

Αφήνουμε τα άλλα όπως είναι και περνάμε στη 2η καρτέλα (Audio options)

-Format: mp3 ή ogg (αν δεν υπάρχει το mp3 στα διαθέσιμα κάτι δεν κάναμε σωστά με τη βιβλιοθήκη lame)
-BitRate mode: αν και καλύτερο είναι το constant (για να ξέρετε ακριβώς το τί bandwidth χρησιμοποιείτε) μπορείτε να δοκιμάσετε όποιο θέλετε
-BitRate: καθορίζεται με βάση το bandwidth και το πόσους χρήστες θέλετε να έχετε. Αν π.χ. έχετε 256 kbps upload rate και θέλετε να σας ακούν 5 χρήστες τότε μπορείτε να χρησιμοποιήσετε 40 ή 48 αν και αυτό μάλλον θα βγάλει προβλήματα).
-SampleRAte: η συχνότητα της εκπομπής. 44100 γιατί το 22050 είναι άθλιο
-Quality: 1 το καλύτερο 0,1 το χειρότερο. Το έχω στο 1
-Bits per sample: 16 (ποιός εκπέμπει σήμερα στα 8 bit)
-Number of channels: αν και προτείνω 2 αν παρουσιαστούν προβλήματα δοκιμάστε 1
-Buffer size: το χω στο 10. Ανάλογα με το αν έχει lag ή όχι η σύνδεση μπορείτε να το μειώστε ή να το αυξήσετε
-Device input: Εδώ τα πράγματα είναι λίγο περίεργα. Θεωρητικά είναι το ποιό mixer χρησιμοποιείτε. Αν είναι ALSA θα είναι κάποιο από τα hw:x,y. Εμένα δε μου δούλεψε κι αναγκάστηκα να γυρίσω στο linux σε ΟSS mixer και στις ρυθμίσεις του darksnow είναι το /dev/dsp. Αν τελικά καταφύγετε σε αυτό ανεβάστε την ισχύ του ηχείου (από το mixer) και στο recording καντε unmute το volume και ανεβάστε το κι αυτό.

Πάμε στη καρτέλα streaming description. Εδώ δίνουμε λεπτομέρειες που αφορούν στο σταθμό. Δεν έχουν καμμία πρακτική αξία εκτός από το ότι εμφανίζονται στο web interface.

-Radio name: ένα όνομα για το σταθμό σας (ό,τι θέλετε).
-Description: βάλτε κάτι σαν "The best music in town" ή ό,τι άλλο θέλετε.
-URL: πού μπορούμε να σας ακούσουμε; (αφήστε το και κενό αν θέλετε).
-Genre: τί είδος παίζετε;
-Public: αν ο σταθμός θα εμφανίζεται στις yellow pages του icecast. Για να μη σας ξέρουν επιλέξτε no. Aν θέλετε να εμφανίζεστε επιλέξτε yes.

Πατάτε start streaming και voila. Ο σταθμός παίζει. Αν θέλετε αποθηκεύστε τις ρυθμίσεις σας για να μην τις ξαναπερνάτε όταν θα ξανανοίξετε το darksnow. Για να σταματήσει το streaming πατάτε stop streaming. Αν δεν το πατήσετε, ακόμα και να κλείσετε το darksnow το streaming θα συνεχιστεί κανονικά. Σημείωστε ότι όσοι σας ακούν θα ακούν ό,τι ακριβώς κι εσείς, επομένως απενεργοποιήστε ειδοποιήσεις, ήχους στις δονήσεις του msn και τα σχετικα.

Το web interface του σερβερ βρίσκεται στη διεύθυνση http://η-ip-διεύθυνσή μας:8000 (αν έχουμε άλλη θύρα αλλάζουμε το προηγούμενο κατάλληλα).

Υ.Γ.: κάνουμε streaming μονο για κομμάτια που έχουμε τη ρητή συγκατάθεση των δημιουργών τους (ή απλώς χρησιμοποιούμε το streaming για να μιλάμε).

_________________
Γι' αυτό σου λέω.
Την άλλη φορά που θα μας ρίξουνε
να μην την κοπανήσουμε. Να ζυγιαστούμε.
Μην ξεπουλήσουμε φτηνά το τομάρι μας ρε.
Μη. Βρέχει. Δόσμου τσιγάρο.


Κορυφή
 Προφίλ  
 
 Θέμα δημοσίευσης: LAME support και Darkice
ΔημοσίευσηΔημοσιεύτηκε: 16 Δεκ 2007, 00:34 
Χωρίς σύνδεση
Regular Forumer
Άβαταρ μέλους

Εγγραφη: 01 Μαρ 2006, 19:18
Δημοσ.: 3078
Τοποθεσια: Από δω κι από κεί.
Αν σας βγει μήνυμα ότι το darkice έγινε compile χωρίς υποστήριξη για LAME τότε κάντε το εξής:

α) απεγκαταστήστε το darkice και το darksnow
Κώδικας:
sudo apt-get remove darkice darksnow


β) πηγαίντε εδώ και κατεβάστε το tarball με τον πηγαίο κώδικα (darkice-x.xx.x.tar.gz), όπου x.xx.x είναι η έκδοση του darkice.

γ) δείτε κάτω κάτω στη σελίδα τα dependencies και βεβαιωθείτε ότι τα έχετε εγκαταστήσει. Αν όχι εγκαταστήστε τα μέσω του package manager της διανομής σας ή αν δεν υπάρχουν κατεβάστε τα tarballs. Κάντε τα extract και ακολουθήστε τις οδηγίες για την εγκατάστασή τους.

δ) δώστε από γραμμή εντολών
Κώδικας:
tar -zxvf darkice-x.xx.x.tar.gz
κι εν συνεχεία μπαίνοντας στον φάκελο που έχει δημιουργηθεί δώστε
Κώδικας:
./configure --with-lame --with-vorbis
./make
sudo make install


ε) εν συνεχεία εγκαταστήστε το darksnow από τον package manager
Κώδικας:
sudo apt-get install darksnow

_________________
Γι' αυτό σου λέω.
Την άλλη φορά που θα μας ρίξουνε
να μην την κοπανήσουμε. Να ζυγιαστούμε.
Μην ξεπουλήσουμε φτηνά το τομάρι μας ρε.
Μη. Βρέχει. Δόσμου τσιγάρο.


Κορυφή
 Προφίλ  
 
Τελευταίες δημοσιεύσεις:  Ταξινόμηση κατά  
Δημιουργία νέου θέματος Απάντηση στο θέμα  [ 2 δημοσιεύσεις ] 

Όλοι οι χρόνοι είναι UTC + 2 ώρες [ DST ]


Μελη σε συνδεση

Μέλη σε αυτή την Δ. Συζήτηση : Δεν υπάρχουν εγγεγραμμένα μέλη και 1 επισκέπτης


Δεν μπορείτε να δημοσιεύετε νέα θέματα σε αυτή τη Δ. Συζήτηση
Δεν μπορείτε να απαντάτε σε θέματα σε αυτή τη Δ. Συζήτηση
Δεν μπορείτε να επεξεργάζεστε τις δημοσιεύσεις σας σε αυτή τη Δ. Συζήτηση
Δεν μπορείτε να διαγράφετε τις δημοσιεύσεις σας σε αυτή τη Δ. Συζήτηση

Αναζήτηση για:
Μετάβαση σε:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group