Gentoo Logo

Streaming radio con SHOUTcast

Indice:

1.  Configurare un SHOUTcast Server

Installazione dei file

Lo SHOUTcast Server è disponibile nell'albero del portage come media-sound/SHOUTcast-server-bin. Può essere installato con il comando:

Codice 1.1: Emerge SHOUTcast

# emerge shoutcast-server-bin

Ciò fatto, SHOUTcast Server è installato. Il passo successivo è la configurazione del nuovo SHOUTcast Server.

Configurazione di SHOUTcast Server

Ora che il server è installato, deve essere configurato. Il file di configurazione si trova in /etc/shoutcast/sc_serv.conf. Per iniziare, assicurarsi di aver effettuato il login come root. Poi si può scegliere il proprio editor preferito. Negli esempi di questa guida verrà utilizzato vi:

Codice 1.2: Aprire il file di configurazione

# vi /etc/shoutcast/sc_serv.conf

In questo modo si ha a disposizione la configurazione completa di SHOUTcast Server. A partire da questo file è possibile controllare le diverse impostazioni che possono essere modificate. Segue una panoramica sulle possibili opzioni di configurazione.

Opzioni obbligatorie

Codice 1.3: Impostare il numero di utenti

; MaxUser.  The maximum number of simultaneous listeners allowed.
; Compute a reasonable value for your available upstream bandwidth (i.e. if
; you have 256kbps upload DSL, and want to broadcast at 24kbps, you would
; choose 256kbps/24kbps=10 maximum listeners.)  Setting this value higher
; only wastes RAM and screws up your broadcast when more people connect
; than you can support.
MaxUser=10

Con questa opzione si può impostare un massimo numero di utenti. Come indicato nella descrizione, sarebbe sciocco impostare 100 utenti con una rete capace di 256kbps in upload (con una capacità di upload di 256kbps non è ragionevole andare oltre i 10 utenti). Se si sta eseguendo SHOUTcast server in una LAN, probabilmente si può utilizzare un valore MOLTO più alto (in questo caso probabilmente si può arrivare anche fino a 100 utenti). È bene, però, non abusare della banda disponibile. L'ampiezza di banda può avere prezzi elevati presso gli ISP e l'abuso potrebbe portare a interruzioni del servizio da parte degli operatori, a sanzioni o ad entrambi i provvedimenti.

Codice 1.4: Impostare la password

; Password.  While SHOUTcast never asks a listener for a password, a
; password is required to broadcast through the server, and to perform
; administration via the web interface to this server.  This server should
; consist of only letters and numbers, and is the same server your broadcaster
; will need to enter in the SHOUTcast Source Plug-in for Winamp.  THIS VALUE
; CANNOT BE BLANK.
Password=a_hard_to_crack_password

Con questa opzione si imposta la password di amministrazione. Viene scritta in chiaro. Per ragioni di sicurezza, è FORTEMENTE raccomandato di non usare le stesse password utilizzate per la protezione di elementi critici del sistema o di dati sensibili. È consigliabile usare una stringa quanto più possibile casuale, con una combinazione di lettere e numeri. Questa password verrà usata da SHOUTcast Trans (o da ogni altro provider di contenuti) per connettersi al server ed erogare lo streaming.

Codice 1.5: Impostare la porta di ascolto

; PortBase. This is the port number your server will run on.  The
; value, and the value + 1 must be available.  If you get a fatal error when
; the DNAS is setting up a socket on startup, make sure nothing else on the
; machine is running on the same port (telnet localhost port number -- if you
; get connection refused then you're clear to use that port).  Ports less than 1024
; may require root privileges on *nix machines.  The default port is 8000.
PortBase=8000

Questo valore indica la porta con cui gli utenti si connetteranno allo SHOUTcast Server. il valore predefinito è 8000, che in genere è il valore predefinito dei client capaci di utilizzare un server mp3 (Winamp, Audacious, ecc.). Come è indicato nella descrizione, per usare valori al di sotto di 1024 è necessario essere root. Tuttavia non è affatto consigliabile usare valori inferiori a 1024 per un server SHOUTcast.

Codice 1.6: Impostare il log degli eventi

; LogFile: file to use for logging. Can be '/dev/null' or 'none'
; or empty to turn off logging. The default is ./sc_serv.log
; on *nix systems or sc_serv_dir\sc_serv.log on win32.
; Note: on win32 systems if no path is specified the location is
; in the same directory as the executable, on *nix systems it is in the
; current directory.
LogFile=/var/log/SHOUTcast.log

Questa è la posizione dei file di log di SHOUTcast Server. Nell'ebuild Gentoo il valore iniziale è /dev/null, quindi per consultare i log del programma bisogna modificare quel valore. Il log può essere conservato dove si vuole. Una buona posizione è /var/log/SHOUTcast.log.

Codice 1.7: Abilitare le informazioni in tempo reale sulla linea di comando

; RealTime displays a status line that is updated every second
; with the latest information on the current stream (*nix and win32
; console systems only)
RealTime=0

Attivando il RealTime, SHOUTcast Server scrive informazioni sul brano in esecuzione nello stdout, una volta al secondo. Questa opportunità è disabilitata in modo predefinito, cosicché il demone sia eseguito nel modo più silenzioso possibile. Si può impostare questo valore a uno per avere un aggiornamento al secondo sullo stdout. Tuttavia potrebbe essere preferibile controllare l'attività usando la pagina di stato.

Codice 1.8: Abilitare il log degli eventi sulla riga di comando

; ScreenLog controls whether logging is printed to the screen or not
; on *nix and win32 console systems. It is useful to disable this when
; running servers in background without their own terminals. Default is 1
ScreenLog=0

Questo valore è impostato a zero nell'ebuild Gentoo per consentire al demone di essere eseguito nel modo più silenzioso possibile. Altrimenti registrerà nello stdout ogni evento (connessioni, disconnessioni, ecc.) via via che questi si verificano. In fondo le stesse informazioni sono registrate nel file di log, che quindi probabilmente è preferibile.

Codice 1.9: Impostare li numero di ultimi brani visualizzati

; ShowLastSongs specifies how many songs to list in the /played.html
; page.  The default is 10.  Acceptable entries are 1 to 20.
ShowLastSongs=10

Come indica il nome in inglese, questa variabile indica quanti dei brani più recenti vengono mostrati nel file /played.html. Utilizzare un valore maggiore di 20 probabilmente non è una scelta ragionevole.

Codice 1.10: Impostare il log delle modifche al filesystem

; TchLog decides whether or not the DNAS log file should track yp
; directory touches.  Adds and removes still appear regardless of
; this setting.
; Default is yes
; TchLog=yes

Questa variabile abilita o disabilita la registrazione delle modifiche alle directory presso nel log di DNAS (Distributed Network Audio Server), o semplicemente SHOUTcast. È raccomandato per coloro che vogliono avere la massima sicurezza. Utilizzatori occasionali o domestici, invece, probabilmente non hanno bisogno di questa opportunità.

Codice 1.11: Abilitare il log delle richieste http

; WebLog decides whether or not hits to http:// on this DNAS will
; be logged.  Most people leave this off because the DSP plug-in
; uses http:// calls to update titles and get the listener count,
; which takes up a lot of log space eventually.  If you want to
; see people making hits on your admin.cgi or index pages, turn
; this back on.  Note that this setting does NOT affect XML stats
; counters for hits to http:// pages.
; Default is no.
; WebLog=no

Attraverso questa opzione si può decidere di registrare gli hit al server HTTP fornito da SHOUTcast. Anche in questo caso, l'abilitazione è raccomandata per chi ha bisogno di un registro affidabile delle attività, mentre è superflua per server occasionali o domestici.

Codice 1.12: Abilitare i log di tipo W3C

; W3CEnable turns on W3C Logging.  W3C logs contain httpd-like accounts
; of every track played for every listener, including byte counts those listeners
; took.  This data can be parsed with tools like Analog and WebTrends, or given
; to third parties like Arbitron and Measurecast for their reporting systems.
; Default is Yes (enabled).
W3CEnable=Yes

; W3CLog describes the name of the log file for W3C logging.  Default log file is
; sc_w3c.log, in the same directory wherever the DNAS gets started from.
W3CLog=/dev/null

La prima opzione abilita il logging di tipo W3C. Questo tipo di log può essere facilmente esaminato dai programmi elencati. È fortemente consigliabile per coloro che hanno bisogno di statistiche accurate. La seconda opzione dove conservare i log W3C. Nell'ebuild Gentoo è impostato in modo predefinito a /dev/null.

Configurazione di rete

Codice 1.13: Impostare l'indirizzo IP delle sorgenti

; SrcIP, the interface to listen for source connections on (or to make relay
; connections on if relaying). Can and usually will be ANY or 127.0.0.1
; (Making it 127.0.0.1 will keep other machines from being able to
; broadcast using your SHOUTcast Server )
SrcIP=ANY

La variabile SrcIP indica da quale IP proviene lo streaming. Può trattarsi di un altro server (relaying), localhost (regular) o qualsiasi altro IP raggiungibile nella propria rete IP. Impostando questo valore a localhost si impedisce a qualsiasi altro server di utilizzare il proprio server SHOUTcast come sorgente broadcast. Il default è ANY e questo consente al proprio SHOUTcast Server di approvvigionarsi presso qualsiasi altro IP. Per avere maggiore sicurezza, può essere meglio restringere questa possibilità a qualcosa di più specifico.

Codice 1.14: Impostare l'indirizzo IP delle destinazioni

; DestIP, IP to listen for clients on (and to contact yp.SHOUTcast.com)
; can and usually will be be ANY. If your machine has multiple IP addresses,
; set this to the one you want it to be accessed by.
DestIP=ANY

Questa variabile determina a quale indirizzo IP della propria interfaccia possono connettersi gli utenti. Può essere localhost (in questo caso si è davvero antisociali è lo stream può essere ascoltato solo dalla propria postazione), un indirizzo IP privato (ad esempio 192.168.0.101, per offrire i servizi ad una rete locale) o il proprio indirizzo IP esterno (ad esempio 209.204.249.201, per lo streaming su una WAN, ma non su una LAN). Nella maggior parte dei casi si raggiunge il proprio stream utilizzando 127.0.0.1 piuttosto che quello che è indicato qui. ANY lascia che lo SHOUTcast Server usi tutti gli indirizzi IP disponibili su tutte le interfacce di rete.

Codice 1.15: Immpostare la porta del proxy/yp.SHOUTcast.com

; Yport, port to connect to yp.SHOUTcast.com on. For people behind caching
; web proxies, change this to the alternate port (666 is what it might be,
; check www.SHOUTcast.com if you have problems). Otherwise, leave this at 80.
; We're actively working on re-opening port 666, but as of release the only
; working port is port 80.
Yport=80

Questa variabile ha due funzioni. Per prima cosa è la porta con cui connettersi a yp.SHOUTcast.com. yp.SHOUTcast.com è la pagina di Nullsoft destinata ai server pubblici, che consente agli utenti di scegliere cosa ascoltare. Gli utenti possono effettuare delle ricerche attraverso questa pagina. Il secondo uso è per i proxy web. Per lo streaming, si imposta questo valore a quello della porta usata per le connessioni tramite proxy e il DestIP a quello del proprio proxy.

Codice 1.16: Impostare le richieste DNS inverse

; NameLookups.  Specify 1 to perform reverse DNS on connections.
; This option may increase the time it takes to connect to your
; server if your DNS server is slow.  Default is 0 (off).
NameLookups=0

Questa impostazione stabilisce se eseguire presso i DNS un reverse lookup dei propri client. Questo corrisponde a prendere il loro indirizzo IP e verificare se esiste un host name corrispondente. Può essere utile per avere informazioni più dettagliate nei log.

Codice 1.17: Agire come server relay

; RelayPort and RelayServer specify that you want to be a relay server.
; Relay servers act as clients to another server, and rebroadcast.
; Set RelayPort to 0, RelayServer to empty, or just leave these commented
; out to disable relay mode.
; RelayPort=8000
; RelayServer=192.168.1.58

Con questa impostazione si stabilisce se si vuole agire da server relay. I server relay sono usati spesso per eseguire un server su una connessione con poca banda, capace di rifornire un solo client, e fare uso della sua banda più ampia per servire molti client. RelayPort e RelayServer indicano l'indirizzo IP e la porta dello SHOUTcast Server per il quale si vuol fare da relay. Se non si vuole essere relay, si deve lasciare commentata questa opzione.

Configurazione del server

Codice 1.18: Impostare la password di amministrazione

; AdminPassword.  This password (if specified) changes the
; behavior of Password to be a broadcast-only password, and
; limits HTTP administration tasks to the password specified
; here.  The broadcaster, with the password above, can still
; log in and view connected users, but only the AdminPassword
; will grant the right to kick, ban, and specify reserve hosts.
; The default is undefined (Password allows control for both
; source and admin)
; AdminPassword=adminpass

Impostare questa password significa creare un amministratore di broadcast. L'amministratore di broadcast può autenticarsi con il valore di Password (incontrato precedentemente) e analizzare le connessioni. Tuttavia, chi voglia eseguire operazioni come kick/ban/reserve (cacciare un ascoltatore solo per una volta/negare per sempre l'accesso a un client/riservare risorse per un particolare host), deve conoscere la AdminPassword. Questa opzione abilita funzionalità più specifiche per il proprio server. Questa opportunità è raccomandata quando l'amministratore di sistema non è la stessa persona che esegue le trasmissioni.

Codice 1.19: Impostare la disconnessione automatica degli utenti

; AutoDumpUsers controls whether listeners are disconnected if the source
; stream disconnects. The default is 0.
AutoDumpUsers=0

Questa opzione indica se interrompere o meno la connessione se lo stream si interrompe per qualsiasi ragione. È impostata a 0 in modo predefinito, in modo che i client possano usare i propri timeout o continuare l'ascolto dei loro buffer. Può essere usata se ci si aspetta brevi interruzioni in qualsiasi momento.

Codice 1.20: Impostare il timeout per la sorgente

; AutoDumpSourceTime specifies how long, in seconds, the source stream is
; allowed to be idle before the server disconnects it. 0 will let the source
; stream idle indefinitely before disconnecting. The default is 30.
AutoDumpSourceTime=30

Questo valore indica quanto lo SHOUTcast Server deve attendere una sorgente (soprattutto se si tratta di un server relay) da cui erogare lo streaming. È ragionevole usare un valore tra 30 e 60.

Codice 1.21: Impostare la directory dei contenuti

; ContentDir specifies the directory location on disk of where to stream
; on-demand content from. Subdirectories are supported as of DNAS 1.8.2.
; Default is ./content/, meaning a directory named content in the same directory
; as where sc_serv was invoked from.
ContentDir=/opt/SHOUTcast/content/

La variabile ContentDir specifica dove collocare i contenuti on demand. Ad esempio, se si vogliono trasmettere annunci a degli impiegati, si può utilizzare questa opportunità. Il valore predefinito dell'ebuild è /opt/SHOUTcast/content. Per verificarne il funzionamento, mettere un mp3 nella directory dei contenuti e puntare il browser a http://example.com:[port]/content/mp3name.pls. Lo SHOUTcast Server creerà automaticamente una playlist compatibile per quell'mp3, trasmettendolo on demand. È una possibile alternativa a SHOUTcast Trans per la trasmissione dei media.

Codice 1.22: Impostare un brano introduttivo

; IntroFile can specify a mp3 file that will be streamed to listeners right
; when they connect before they hear the live stream.
; Note that the intro file MUST be the same sample rate/channels as the
; live stream in order for this to work properly. Although bit rate CAN
; vary, you can use '%d' to specify the bit rate in the filename
; (i.e. C:\intro%d.mp3 would be C:\intro64.mp3 if you are casting at 64kbps).
; The default is no IntroFile
; IntroFile=c:\intro%d.mp3

Questa variabile consente di definire un file di introduzione. Ogni volta che un ascoltatore si connette, ascolta prima di tutto il brano introduttivo. Come indicato nella descrizione, il brano introduttivo deve avere lo stesso bitrate dello streaming, altrimenti il funzionamento si interrompe. Tuttavia è possibile preparare qualcosa come intro128.mp3 e intro64.mp3 e il server trasmetterà intro128.mp3 agli ascoltatori che si connettono ad uno stream a 128kbps e intro64.mp3 agli ascoltatori che si connettono ad uno stream a 64kbps.

Codice 1.23: Impostare un brano di chiusura

; BackupFile can specify a mp3 file that will be streamed to listeners over
; and over again when the source stream disconnects. AutoDumpUsers must be
; 0 to use this feature. When the source stream reconnects, the listeners
; are rejoined into the live broadcast.
; Note that the backup file MUST be the same sample rate/channels as the
; live stream in order for this to work properly. Although bit rate CAN
; vary, you can use '%d' to specify the bit rate in the filename
; (i.e. C:\backup%d.mp3 would be C:\backup32.mp3 if you are casting at 32kbps).
; The default is no BackupFile
; BackupFile=C:\intro%d.mp3

È qualcosa di simile alla variabile precedente, ma il file viene trasmesso quando lo stream sorgente interrompe la trasmissione. Ha senso solo se AutoDumpUsers è stato posto a 0.

Codice 1.24: Impostare il formato dei titoli

; TitleFormat specifies a format string for what title is sent to the listener.
; For example, a string of 'Justin Radio' forces the title 'Justin Radio' even
; when the source changes the title. You can use up to one '%s' in the string
; which lets you contain the title from the source. For example, if your
; TitleFormat is 'Justin Radio: %s', and the source plug-in's title is
; 'Billy plays the blues', then the net title is
; 'Justin Radio: Billy plays the blues'. Note: only works on non-relay servers.
; The default is no format string.
TitleFormat=Chris Gentoo Beats: %s

Questo valore forza un titolo non variabile (o una parte del titolo) per i brani erogati attraverso il proprio SHOUTcast Server. Può essere utile se si trasmette da più di un server. Non ha effetto con i server relay.

Codice 1.25: impostare il formato della URL

; URLFormat specifies a format string for what URL is sent to the listener.
; Behaves like TitleFormat (see above).
; The default is no format string.
; URLFormat=http://www.server.com/redirect.cgi?url=%s

Questo valore forza la URl che appare al client in associazione al brano trasmesso.

Codice 1.26: Impostare lo stato pubblico per una sorgente

; PublicServer can be always, never, or default (the default, heh)
; Any setting other than default will override the public status
; of the source plug-in or of a SHOUTcast Server that is being relayed.
PublicServer=default

Quando si utilizza un relay, questo valore indica se si vuole apparire come server pubblico o meno, forzando l'impostazione del server relay.

Codice 1.27: Consentire il relaying

; AllowRelay determines whether or not other SHOUTcast Servers will be
; permitted to relay this server.  The default is Yes.
AllowRelay=Yes

AllowRelay consente o non consente che altri server facciano da relay per i propri contenuti. Se non si ritiene opportuno essere ritrasmessi, è meglio impostare questo valore a No.

Codice 1.28: Consentire ai relay di mostrare pubblicamente la sorgente

; AllowPublicRelay, when set to No, will tell any relaying servers not
; to list the server in the SHOUTcast directory (non-public), provided
; the relaying server's Public flag is set to default.  The default is
; Yes.
AllowPublicRelay=Yes

AllowPublicRelay indica se essere elencati o meno nella directory pubblica di SHOUTcast, nel caso che si stia operando come relay di un server già elencato. I server pubblici di SHOUTcast possono comunque modificare questo comportamento.

Codice 1.29: Impostare il metaintervallo

; MetaInterval specifies how often, in bytes, meta data sent.
; You should really leave this at the default of 32768, but the option is
; provided anyway.
MetaInterval=32768

Questa impostazione può essere lasciata così.

Configurazione di accesso

Codice 1.30: Impostare un tempo massimo per l'ascolto

; ListenerTimer is a value in minutes of maximum permitted time for
; a connected listener.  If someone is connected for longer than this
; amount of time, in minutes, they are disconnected. When undefined,
; there is no limit defined. Default is undefined.
; ListenerTimer=600

Non è chiaro quando questa opzione possa essere necessaria. Essenzialmente, se un utente resta in ascolto per troppi minuti, viene disconnesso. Si può supporre solo che si vogliano disconnettere utenti che non ascoltano realmente la radio o che si teme possano essere connessi per scopi che non siano quello dell'ascolto. Il valore è in minuti.

Codice 1.31: Impostare il file di ban

; BanFile is the text file sc_serv reads and writes to/from
; for the list of clients prohibited to connect to this
; server.  It's automatically generated via the web
; interface.
; BanFile=sc_serv.ban

Questo file contiene la lista dei client che sono "bannati" (bloccati) dall'ascolto. Il valore predefinito è sc_serv.ban, ma può essere utilizzato qualsiasi nome di file.

Codice 1.32: Impostare i Rip

; RipFile is the text file sc_serv reads and writes to/from
; for the list of client IP addresses which are *ALWAYS* permitted
; to connect to this server (useful for relay servers).
; This file is automatically generated via the web
; interface.  Note that if your server is FULL, and someone
; from a Reserved IP connects, the DNAS will force the person
; listening for the longest time off to make room for the new
; connection.
; RipFile=sc_serv.rip

Rip sta per "Reserved IP" (non si tratta di un epitaffio). Con questa impostazione si può indicare una lista di indirizzi privilegiati rispetto agli ascoltatori occasionali. Se si raggiunge il massimo numero di utenti consentiti e uno dei membri della lista Rip tenta di accedere, il server espelle l'utente occasionale che è in ascolto da più tempo per lasciar spazio al client privilegiato.

Codice 1.33: Restingere l'ascolto agli utenti Rip

; RipOnly, when set to Yes, will only allow IP addresses listed in the Reserved
; IP list to connect and relay.  All other connections for listening will be denied.
; This is really only useful for servers whose sole purpose is to provide the
; primary feed to all public relays.  Setting this value to Yes also forces the
; server into Private mode, since listing this server in the directory would
; be pointless.  Default is No.
; RipOnly=No

Attivando questa opzione solo i membri della lista Rip possono connettersi allo SHOUTcast server. Può essere utile sia per streaming privati o per assicurarsi che solo certi relay accedano al proprio stream.

Configurazioni per server multipli

Codice 1.34: Impostare variabili Unique

; Unique: assigns a variable name for use in any configuration item which points to a
; file.  Useful for servers running lots of SHOUTcast Servers that have similar
; configuration parameters, excepting log file names, ban file names, etc.  Any
; parameter that takes a pathname can include the character $, which will
; substitute $ for the variable assigned here.  Keep in mind that the unique
; variable can only be used after it is defined, so don't try to use a unique
; variable substitution in a path before you define it.  For example, you
; could set:
; Unique=my_server
; and then define Log=/usr/local/SHOUTcast/$.log in an included configuration
; file.  Default is Unique=$, so that by default any file with $ in the name
; won't substitute anything at all.

Se si eseguono diversi SHOUTcast Server, gestire i file ban/log/ecc. per ogni server potrebbe essere ripetitivo e noioso. Inserendo una stringa di comodo in questa variabile, si potrà usare il carattere '$' per rappresentare quella stringa. Ad esempio, se un file ha Unique=Jazz e un altro ha Unique=Rock, allora Log=/var/log/$.log produrrà /var/log/Jazz.log per una configurazione e /var/log/Rock.log per l'altra. In questo modo, è molto più facile distribuire server SHOUTcast multipli su configurazioni simili.

Codice 1.35: Impostare variabili comuni

; Include: instructs the sc_serv to read from the named configuration file,
; *at the point of insertion of the Include statement*, and process as though
; the included file was part of itself.  Note that all configuration parameters
; in the DNAS configuration file are processed first to last, so if an item is defined
; twice in a configuration, the last item to process will be the one that takes
; effect.  For this reason, it's usually a good idea to use the Includes first
; in a configuration file.
; example:
; Include=/usr/local/SHOUTcast/common.conf
; Default is not applicable.

Se si esegue più di uno SHOUTcast Server e si vogliono utilizzare configurazioni simili, il file qui indicato può contenere impostazioni comuni alle diverse esecuzioni.

Ottimizzazione

Codice 1.36: Impostare il numero di CPU utilizzate

; CpuCount is used to explicitly limit the DNAS to dominating a finite
; amount of processors in multiprocessor systems.  By default,
; SHOUTcast creates one thread for every processor it detects in the
; host system, and assigns listeners equally across all the threads.
; In the event SHOUTcast doesn't correctly determine the number of
; CPUs in your host, or if you for whatever reason want to force
; the DNAS to not use other processors, you can say so here.
; Default behavior is to use as many processors as the DNAS detects on
; your system.
; CpuCount=1

In sistemi con più di una CPU, questa variabile impone allo SHOUTcast Server di utilizzare solo CpuCount processori. Senza questa impostazione, SHOUTcast assegna un processo ad ogni processore e distribuisce gli ascoltatori tra i processi così generati. Se si sceglie un valore inferiore al numero totale di CPU, si possono lasciare alcune CPU libere di eseguire altri compiti.

Codice 1.37: Impostare l'intervallo di invio dei dati

; Sleep defines the granularity of the client threads for sending data.
; DNAS 1.7.0, per client thread, will send up to 1,024 bytes of data
; per socket (or less depending on the window available), and then
; sleep for the provided duration before repeating the whole process.
; Note that making this value smaller will vastly increase CPU usage on
; your machine.  Increasing reduces CPU, but increasing this value too far
; will cause skips.  The value which seems most optimal for 128kbps
; streaming is 833 (833 microseconds per client poll) on our test labs.
; We wouldn't recommend setting it any lower than 100, or any higher than
; 1,024.  If you have a slower machine, set this number lower to fix
; skips.
; Default value is 833.
; Sleep=833

Lo SHOUTcast Server usa il valore di sleep per determinare ogni quanto tempo inviare pacchetti di dati. Maggiore è il valore di sleep, maggiore il tempo che trascorre tra un invio e il successivo, mentre per valori piccoli gli invii sono più frequenti e il carico di lavoro della CPU aumenta. In reti lente, come indicato nel commento, è possibile ridurre questo valore in modo che lo SHOUTcast Server invii i dati più frequentemente. La soluzione migliore è lasciare questo valore com'è.

Codice 1.38: Minimizzare l'output XML

; CleanXML strips some whitespace and line feeds from XML output which
; confuses some (poorly written) XML parsers.  If you get XML rendering errors,
; try turning this on.  Default is No (off).
; CleanXML=No

Probabilmente non c'è da preoccuparsi molto di questa opzione, a meno che non si utilizzi un parser XML particolare per creare le statistiche. Se il parser XML non può gestire gli spazi o le linee vuote, allora si può impostare questo valore a Yes e tutto funzionerà.

Termine della configurazione

Lo SHOUTcast Server ora è configurato. Per utilizzi professionali, è fortemente raccomandata l'abilitazione della registrazione degli eventi di tipo W3C, che consente facili elaborazioni così come la creazione di statistiche personalizzate. Inoltre, è consigliabile l'uso di AdministratorPassword. Probabilmente sarà bene utilizzare anche delle impostazioni condivise di configurazione se si eseguono SHOUTcast Server multipli.

Terminata la configurazione, siamo pronti ad avviare SHOUTcast. Si può testarne il funzionamento con un semplice streaming a richiesta, per poi avviare SHOUTcast Trans successivamente (visto che occorrerà qualche ulteriore operazione).

2.  Avviare SHOUTcast Server

Configurare uno streaming a richiesta

Lo streaming a richiesta, come descritto nel capitolo riguardante la configurazione, imposta automaticamente una playlist contenente i file mp3 della directory dei contenuti. L'ebuild di SHOUTcast ha la directory predefinita in /opt/SHOUTcast/content. Si può iniziare con la creazione di un semplice streaming a richiesta di file mp3.

Per cominciare occorre avere a disposizione un file mp3 e produrne una copia nella directory dei contenuti. Immaginiamo dunque di avere da qualche parte un file sample.mp3.

Codice 2.1: Copiare un mp3 nella directory dei contenuti

# cp sample.mp3 /opt/SHOUTcast/content/
# cd /opt/SHOUTcast/content/
# ls
sample.mp3

In questo modo il file è copiato. Ora si può avviare lo SHOUTcast Server per consentire l'accesso al file.

Codice 2.2: Avviare il Server SHOUTcast

# /etc/init.d/shoutcast start
 * Starting Shoutcast Server...
*******************************************************************************
** SHOUTcast Distributed Network Audio Server
** Copyright (C) 1998-2004 Nullsoft, Inc.  All Rights Reserved.
** Use "sc_serv filename.ini" to specify an ini file.
*******************************************************************************
                                                                         [ ok ]

Questo piccolo banner serve semplicemente ad indicare che tutto è andato bene (cioè per informare sull'esito dell'avvio del server). Lo SHOUTcast Server è avviato! Visto che si tratta di contenuti su richiesta, l'accesso può avvenire SOLAMENTE tramite browser. MPlayer o qualsiasi altro client non hanno la possibilità di connettersi autonomamente ad uno streaming. Ad esempio, invece, si può usare kmplayer per ascoltare lo stream avviato attraverso il browser. Nell'immagine qua in basso si può vedere il risultato.


Figura 2.1: Contenuti su richiesta

Fig. 1: OnDemandContent

In altri casi si potrebbe avere impostato Audacious per la gestione dei mime type audio, quindi il browser potrebbe avviare Audacious per eseguire lo stream. Ora che siamo in grado di lavorare con i contenuti su richiesta, possiamo usare SHOUTcast Trans per creare un vero server di radio streaming.

3.  Configurare SHOUTcast Trans

Introduzione a SHOUTcast Trans

SHOUTcast Trans è la contrazione di SHOUTcast Trans(coder), perché questo programma è in grado di transcodificare (ricodificare) i file mp3 in bitrate maggiori o minori. SHOUTcast Trans realizza un flusso mp3 a partire da una playlist indicata nel suo file di configurazione. Inizieremo quindi la configurazione di SHOUTcast Trans, in modo da avere un una vera radio streaming di qualità. Si inizia dunque con l'aprire il file di configurazione di SHOUTcast Trans, /etc/shoutcast/sc_trans.conf.

Codice 3.1: Aprire il file di configurazione di SHOUTcast Trans

(Prima installare SHOUTcast Trans)
# emerge shoutcast-trans-bin
(Poi aprire il file di configurazione di SHOUTcast Trans)
# vi /etc/shoutcast/sc_trans.conf

Una volta aperto il file, possiamo iniziare la configurazione della sorgente dello streaming.

Configurazione di SHOUTcast Trans

Codice 3.2: Impostare una playlist

; PlaylistFile (required EVEN IF RELAYING) - play list file (to create, use
; find /path/to/mp3/directory -type f -name "*.mp3" > playlist_filename.lst
PlaylistFile=/opt/SHOUTcast/playlists/playlist.lst

Questa variabile istruisce SHOUTcast su dove trovare i contenuti. Il file indicato deve esistere, quindi occorre creare autonomamente la playlist. È possibile crearne una a partire da una directory contenente dei file mp3, ad esempio /Mp3.

Codice 3.3: Creare una playlist

# find /Mp3 -type f -name "*.mp3" > /opt/SHOUTcast/playlists/playlist.lst

Ora che la playlist è pronta, puntiamo ad essa il file di configurazione, affinché SHOUTcast conosca con quali file produrre lo stream.

Codice 3.4: Impostare l'indirizzo IP e la porta del server

; Serverip/ServerPort are the target server to send to
Serverip=127.0.0.1
ServerPort=8000

Questa variabile indica dove inviare lo stream. In questa guida sarà lo SHOUTcast Server che è stato configurato in precedenza (DestIP and PortBase).

Codice 3.5: Impostare la password per lo SHOUTcast Server

; Password is the password on the sc_serv you're sending to.
Password=password_you_setup_in_sc_serv.conf

Questa è la password che è stata indicata nella configurazione dello SHOUTcast Server.

Codice 3.6: Definire le informazioni generali dello stream

; StreamTitle/URL/Genre define the data that appears on the directory and in the
; stream info.
StreamTitle=Chris Gentoo Beats
StreamURL=http://www.gentoo.org
Genre=JPOP Electronica And More!

Queste variabile sono il titolo dello stream (ad esempio, Radio Uno), la URL (ad esempio http://www.radio-one.com) e il genere (ad esempio Electronica Trance Tribal).

Codice 3.7: Impostare un file di log

; Logfile optionally denotes a text file to log sc_Trans to.  a kill -HUP
; will force a close and re-open of this file (but will also cease logging to
; the console)
LogFile=/var/log/sc_Trans.log

Qui possiamo indicare dove verranno registrate le attività di SHOUTcast Trans.

Codice 3.8: Impostare un ordine casuale

; Shuffle the play list
Shuffle=1

Si può decidere di eseguire la playlist in ordine casuale. È un'abitudine diffusa. Se però si intende accettare la richiesta di brani, allora si deve tenere questa variabile a 0 e più avanti si vedrà come soddisfare le richieste.

Codice 3.9: Configurare lo stream

; Bitrate/SampleRate/Channels recommended values:
; 8kbps 8000/11025/1
; 16kbps 16000/11025/1
; 24kbps 24000/22050/1
; 32kbps 32000/22050/1
; 64kbps mono 64000/44100/1
; 64kbps stereo 64000/22050/2
; 96kbps stereo 96000/44100/2
; 128kbps stereo 128000/44100/2
Bitrate=128000
SampleRate=44100
Channels=2
; Quality is from 1-10. 1 is best, 10 is fastest.
Quality=1

Bitrate imposta la qualità del flusso audio. Può andare da 8000 (8kbps) a 128000 (128kbps). SampleRate imposta la frequenza di campionamento del flusso. Può essere un valore tra 11025 (11025KHz) e 44100 (44100 KHz). Channels imposta il numero di canali del flusso. Può essere 1 (mono) o 2 (stereo). Quality imposta la qualità dello stream. La qualità dipende anche da Bitrate/SampleRate/Channels, ma qui si stabilisce il tasso di compressione del flusso audio. La migliore qualità corrisponde al valore 1, mentre 10 garantisce la massima velocità. Per scegliere questo valore, occorre tenere a mente le caratteristiche della propria connessione. Se necessario, rileggere la guida per sapere con quale qualità il flusso mp3 deve essere costruito.

Codice 3.10: Impostare le sfumature tra i brani

; Mode=0 for none, 1 for 100/100->100/0, 2 for 0/100->100/0
CrossfadeMode=1
; Length is ms.
CrossfadeLength=8000

Con queste variabili si imposta il tipo di sfumatura tra i brani. Se CrossfadeMode vale 1, il primo brano sfuma in entrata e il secondo in uscita. Se vale 2, il primo brano sfuma in entrata e il secondo in uscita. CrossfadeLength è il numero di millisecondi di durata della sfumatura.

Codice 3.11: Abilitare l'uso dei tag ID3

UseID3=1

Con questa variabile si stabilisce se usare o meno i tag ID3 per fornire informazioni sul brano trasmesso.

Codice 3.12: Dichiarare la trasmissione come pubblica

; Public determines whether or not this station will show up in the directory
Public=0

Con questa variabile si stabilisce se lo stream deve essere pubblicato nelle liste pubbliche quando trasmette verso un server. ma non si deve dimenticare che l'impostazione di sc_serv.conf ha la precedenza su quanto stabilito qui.

Codice 3.13: Impostare le comunicazioni con gli utenti

; Put stuff here for user interaction (AOL IM, ICQ, IRC)
AIM=AIMHandle
ICQ=
IRC=SHOUTcast

Queste variabili contengono le informazioni su come prendere contatto con chi gestisce SHOUTcast Trans (quindi il DJ). Si può impostare un riferimento AIM o ICQ per richieste di brani o altro. Si può anche allestire il proprio canale IRC, in modo da interagire con molti utenti simultaneamente.

Conclusione della preparazione di SHOUTcast Trans

SHOUTcast Trans è pronto per erogare il flusso di brani verso lo SHOUTcast Server! Occorre solo preparare i propri mp3.

4.  Esecuzione di SHOUTcast Trans

Avviare SHOUTcast Trans

Spesso si usa SHOUTcast Trans con SHOUTcast Server, quindi è comodo avviare SHOUTcast Trans, che a sua volta avvia SHOUTcast Server (è più facile). Quindi non resta che avviare SHOUTcast Trans.

Codice 4.1: Avviare Shoutcast Trans e Shoutcast Server

# /etc/init.d/shoutcast_trans start
 * Starting Shoutcast Server...
*******************************************************************************
** SHOUTcast Distributed Network Audio Server
** Copyright (C) 1998-2004 Nullsoft, Inc.  All Rights Reserved.
** Use "sc_serv filename.ini" to specify an ini file.
*******************************************************************************
                                                  [ ok ]
* Starting Shoutcast Trans...                     [ ok ]

Ascoltare lo stream di SHOUTcast Trans

Una volta avviato SHOUTcast Trans, è possibile ascoltare lo stream. Ad esempio si può usare MPlayer, come nell'esempio.

Codice 4.2: Ascoltare stream

# mplayer -cache 1024 http://127.0.0.1:8000/
...
Playing http://127.0.0.1:8000/.
Connecting to server 127.0.0.1[127.0.0.1]:8000 ...
Name   : Chris Gentoo Beats
Genre  : JPOP Electronica And More!
Website: http://www.gentoo.org
Public : no
Bitrate: 128kbit/s
Cache size set to 1024 KBytes
Connected to server: 127.0.0.1
Cache fill:  9.38% (98304 bytes)    Audio file detected.
==========================================================================
Opening audio decoder: [mp3lib] MPEG layer-2, layer-3
MP3lib: init layer2 and 3 finished, tables done
mpg123: Can't rewind stream by 156 bits!
AUDIO: 44100 Hz, 2 ch, 16 bit (0x10), ratio: 16000->176400 (128.0 kbit)
Selected audio codec: [mp3] afm:mp3lib (mp3lib MPEG layer-2, layer-3)
==========================================================================
Checking audio filter chain for 44100Hz/2ch/16bit -> 44100Hz/2ch/16bit...
AF_pre: af format: 2 bps, 2 ch, 44100 hz, little endian signed int
AF_pre: 44100Hz 2ch Signed 16-bit (Little-Endian)
AO: [oss] 44100Hz 2ch Signed 16-bit (Little-Endian) (2 bps)
Building audio filter chain for 44100Hz/2ch/16bit -> 44100Hz/2ch/16bit...
Video: no video
Starting playback...

È un po' personalizzato. L'opzione -cache è utile per aggirare il buffer di MPlayer, che potrebbe essere troppo grande per il proprio scopo. E voilà. si è già in ascolto dello streaming! Nel prossimo capitolo si imparerà a fare qualcosa in più con il proprio SHOUTcast Server.

5.  Uso avanzato di SHOUTcast

Uso professionale

Si può rendere più professionale l'uso di SHOUTcast in diversi modi:

  1. Usare i contenuti su richiesta per rendere più interessanti annunci quotidiani.
  2. Produrre annunci pubblici nel momento in cui si presenti la necessità, in modo che gli ascoltatori possano sapere cosa sta accadendo, sul momento! Poi archiviarli come contenuti su richiesta per usi futuri.
  3. Realizzare interviste, archiviarle e proporle come contenuti su richiesta.

Ci sono molti modi per utilizzare SHOUTcast Server in ambito professionale. In generale, si può usare lo streaming invece del solito, noioso testo!

Il mestiere di DJ con SHOUTcast

SHOUTcast Server è uno dei server più popolari tra i nuovi DJ come tra i veterani. Per iniziare, ci sono alcuni modi per rendere più accattivante l'uso di SHOUTcast Server. Ad esempio, avere un brano introduttivo è molto efficace. Un brano introduttivo dà agli ascoltatori un'idea sulla stazione che stanno ascoltando. È molto importante usarlo! È utile anche pubblicare il proprio server su yp.SHOUTcast.com (come descritto nella sezione sulla configurazione di SHOUTcast Server) per rendersi raggiungibile da chiunque. Una delle caratteristiche più inimitabili è la possibilità di ricevere richieste. Per gestire le richieste, per prima cosa disabilitare la modalità Shuffle in sc_Trans.conf. Poi occorre procurarsi una decina di brani pronti per essere eseguiti. Infine iniziare a ricevere le richieste. Quando qualcuno richiede un brano, basterà semplicemente aggiungerlo alla fine della playlist, usando questo script per controllare cosa fa SHOUTcast Trans con la playlist:

Codice 5.1: djcontrol

#!/bin/bash

case "$1" in
        "reload")
                kill -s USR1 `cat /var/run/SHOUTcast_Trans.pid`
                ;;
        "next")
                kill -s WINCH `cat /var/run/SHOUTcast_Trans.pid`
                ;;
        *)
                echo "Invalid command"
                ;;
esac

Quando si aggiunge un brano alla playlist, infatti, bisogna dire a SHOUTcast Trans che la lista è cambiata.

Codice 5.2: Ricaricare la playlist

# djcontrol reload

Ora non resta che far conoscere all'ascoltatore quando la richiesta verrà eseguita. O, se si vuole, si può saltare ai brani successivi con:

Codice 5.3: Saltare in avanti tra i brani della playlist

# djcontrol next

Si faccia attenzione all'uso della funzione next, perché non c'è una corrispondente funzione previous. Una volta indicato il brano, il brano inizia. Si può accumulare prima qualche richiesta prima di iniziare ad esaudirle. In questo modo non si rischia di tornare rapidamente all'inizio. Se nel frattempo non arrivano nuove richieste, basta anticipare l'esecuzione della playlist prevista per il periodo successivo. Una volta terminato il brano corrente, inizierà l'esecuzione della playlist programmata.

Conclusioni

Con questi suggerimenti il tutorial per SHOUTcast Server e SHOUTcast Trans è concluso. Per qualsiasi necessità si può inviare una email all'autore di questa pagina! Buon divertimento con SHOUTcast Server!



Stampa

Aggiornato il 2 novembre 2006

La versione originale di questo documento non è più mantenuta

Oggetto: Questa guida percorre i passi necessari per configurare un server per lo streaming radio con SHOUTcast Server e SHOUTcast Trans.

Chris White
Autore

Shyam Mani
Editore

Sergio Vaccaro
Traduzione

Donate to support our development efforts.

Copyright 2001-2014 Gentoo Foundation, Inc. Questions, Comments? Contact us.