diumenge, 19 de setembre de 2010

Com montar el teu propi servidor de ràdio i enregistrar els programes, pas a pas i amb Fedora 13

Avui desvetllaré un dels secrets per què el pugueu aprofitar tant com pugueu (que no és tan secret per què si cerqueu per internet, segur que trobareu informació, però aquesta d'aquí em funciona  a la perfecció i és relativament fàcil). Instal.larem un servidor de ràdio en un PIII a 600MHz, 384Mb de RAM i un disc dur de 320Gb (amb 160Gb en tindriem prou pel que ens proposarem).

M'he vist obligat a canviar l'ordinador que vaig regalar a Ràdio Montgrí per què va petar el disc, la font d'alimentació feia el tonto i començava a penjar-se aquell ordinador, pel que he buscat un candidat alternatiu i m'ha sortit aquest amb molt poques característiques però suficient per fer el que se li demanarà. Veureu als fitxers de configuració l'usuari que he utilitzat per aquesta ocasió: radiomontgri.

A mi m'agrada barrejar administració visual amb administració amb comandaments bash. Vosaltres utilitzeu el que més a gust us sentiu.

L'objectiu és que aquest servidor ens enregistri les 24h del dia tota l'emisió que se li faciliti via Jack del Line In de la tarja de só, durant un mínim de 6 mesos i també poder emetre per internet (no explicaré configuració de ports routers, etc... Simplement el deixarem funcionant perfectament per la xarxa local. La resta és un altre tema.)

He decidit fer-ho amb Fedora per què és la distribució amb la que em sento més a gust, però en principi no hi hauria molt de problema per què ho adapteu a la que més us agradi. Jo he utilitzat la última de les últimes, Fedora 13. De fet, la versió que tenien anteriorment funcionava sobre una Ubuntu.

No explicaré temes que dono per suposat, com que les instal.lacions s'han de fer amb root, que us demanarà  passwords, temes de seguretat, etc.... aquest mini manual intenta concretar només el que és la instal.lació, funcionament del server de ràdio i enregistrament dels programes. Per anar bé s'haurien de tenir uns coneixements mínims de GNU/Linux.

1) Instal.lem i actualitzem el sistema.
2) En el meu cas he desactivat el SELinux per evitar que els problemes de seguretat em suposi encara més problemes per configurar-lo, i com que serà un ordinador que només el tocarà qui l'hagi de tocar, no em preocupa massa tenir-ho desactivat. Una manera fàcil és: / etc / selinux / config: SELINUX=disabled
3) Obrir els ports necessaris. En el meu cas: 22 (ssh), 8000 TCP (server ràdio.Obligatori a no ser que el vulgueu escoltar en un altre port), i Server SAMBA en el meu cas per què també vull compartir els fitxers a la xarxa Windows que l'emissora de ràdio té per no haver de tocar en absolut el servidor i accedir als continguts fàcilment des de qualsevol altre ordinador de l'emissora.

4) Instal.larem ICECAST2 i ICES. Icecast és realment el servidor, i Ices és el dimoni que enviarà el que capturi de la xarxa d'àudio cap al servidor Icecast:

5) És important que l'usuari ices estigui dintre del grup d'audio, per tant, editem les propietats de l'usuari ices i li diem que també està dintre del grup audio. En cas contrari, si no afegim el grup audio a l'usuari ices, al engegar l'ices, ens donarà el següent error:
# ALSA lib pcm_hw.c:1401:(_snd_pcm_hw_open) Invalid value for card

6) Modificar la configuració /etc/icecast.xml:
- Incorporem els passwords que nosaltres vulguem
- Dintre del mòdul listen-socket jo he posat la ip del servidor per poder accedir al servidor des de qualsevol altre pc de la xarxa, en aquest cas 192.168.1.33. La resta de configuració no cal tocar-la.

- Amb això tindríem el servidor configurat.

7) Modificar la configuració /etc/ices.conf.
- A la opció metadata incorporem la informació que ens interessi.
- Anem a la opció input i comentem o borrem el que hi hagi (no està de més fer còpies de seguretat dels fitxers de configuració que toquem), i en el seu lloc incorporem aquesta:





- A dintre de l'apartat hem de configurar-lo amb la ip del servidor, el password que hem configurat anteriorment a la configuració icecast.xml, el port per defecte 8000 i el punt de muntatge, que serà el que teclejarem per accedir mitjançant el navegador, després d'escriure la ip i el port. Us he preparat un exemple:




8) Ens hem d'assegurar que quan s'iniciï el pc, s'engegui automàticament el servidor icecast:


















9) Iniciem manualment el servidor icecast (service icecast start), i si tot ha anat bé, anant a la ip que hem configurat, al port 8000, ens hauria de sortir la web de control de l'icecast:

10) Iniciem el dimoni ices per comprovar que es munta el fitxer que hem configurat:
11) Ara mateix ja podríem escoltar qualsevol so que vingui des de l'entrada LINE-IN de la tarja d'àudio, però per fer-ho hem de saber que hem de configurar l'entrada del control.lador del volum per poder escoltar-lo i ajustar els volums. Hem d'anar al control.lador de volum, Entrada i seleccionar Analogue Line-in. Aquí configurem el nivell de sortida de l'àudio. La meva teoria és que una vegada configurat, si visualment canviéssim l'entrada, estaríem configurant una altra entrada, però l'anterior ha quedat configurada, però no... hem de deixar OBLIGATÒRIAMENT ACTIVAT que l'entrada que reproduïm és el Line-IN i no podem canviar-la visualment per una altra. Encara que després tanquem aquesta finestra, el connector que hi havia per última vegada a l'entrada, ha de ser l'Analog Line-In. Si algú descobreix el per què, com o què, sempre pot ajudar.

He optat per utilitzar Line-IN en comptes de l'entrada del micròfon per què el Line-IN contempla l'entrada en ESTÈREO i el micròfon només en MONO.

12) Per comprovar que realment podem reproduir, anem a un altre ordinador de la xarxa (podria servir el mateix) i teclejem al navegador la ip:port/punt_de_muntatge. En el nostre cas: http://192.168.1.33:8000/radiolive.ogg. Els nous navegadors ja incorporen reproducció directa de streams multimèdia (Firefox, Google Chrome, per exemple), i us hauria de sortir algo així:



Penseu que no és instantani i que el que vosaltres reproduïu, fa una estona que el servidor ho ha emmagatzemat, hi ha un període entre que entra per l'audio-in i es reprodueix pel servidor. És un magatzem d'àudio necessari per poder emetre en directe. Quan ho he tingut tot funcionant, he volgut testejar la capacitat del modest servidor (les característiques del hard les teniu a dalt de tot). He obert 50 clients contra el servidor, i, la veritat, li sobrava el 60% de capacitat de procés... no vaig veure que s'immutés gens cada vegada que obria un nou client.... més o menys estava al mateix consum de cpu, o sigui que ja podeu abusar d'ell el que vulgueu. L'aplicació, encara que normalment només es conectarà un sol usuari, estaria preparada per poder emetre fins a 100 usuaris. Al fitxer icecast.xml podeu modificar aquests límits:

13) Hem de dir al sistema que entri automàticament amb l'usuari. El sistema ALSA, que és l'encarregat dels controls dels volums, les sortides i entrades d'àudio, etc... només és accessible quan entres amb un usuari, per tant hem de configurar el Fedora per què faci una entrada automàtica d'aquest usuari. Per fer-ho editem el fitxer /etc/gdm/custom.conf i a sota de l'apartat [daemon], inserim les següents línies:
AutomaticLoginEnable=true
AutomaticLogin=radiomontgri
AutomaticLoginDelay=20

A l'apartat AutomaticLogin hem de ficar el nom de l'usuari que volem que faci l'entrada automàtica.

14) Un altre problema que vaig detectar és que si iniciàvem ICES directament amb l'engegada del sistema, no funcionava res. Si l'iniciàvem just entrar l'usuari, desapareixia per art de màgia la tarja d'àudio, però si esperàvem uns segons a iniciar el servei ICES després de que l'usuari havia entrat al sistema, tot funcionava correctament, per tant, hem generat un fitxer que espera uns 20 segons i després inicia l'ices amb la configuració /etc/ices.conf. Aquest és el fitxer /home/radiomontgri/ices.sh:

#!/bin/bash

sleep 20
ices /etc/ices.conf
No oblideu fer-lo executable: chmod +x ices.sh

Hem de configurar l'usuari per què l'executi quan entri al sistema. Per fer-ho hem d'anar al menú SISTEMA / PREFERÈNCIES / APLICACIONS D'INICI.



A nom podem poser el que vulguem. Jo he posat ices
A ordre s'ha de ficar sh /home/radiomontgri/ices.sh
A comentari el que vulgeu.

Ara ja ho tenim preparat per què quan engegui l'usuari, cridi ices 20 segons després d'haver logat l'usuari al sistema, donant temps així a iniciar l'ALSA.


15) Per enregistrar tot el que s'emeti, l'icecast permet una configuració, però el que vull fer jo és eliminar continguts antics i repartir l'emissió en fitxers d'una hora. Per fer-ho simplement hem de descarregar el fitxer d'àudio generat cada hora, per exemple i donar-li un nom que sigui fàcil trobar l'enregistrament per data i hora. Per fer-ho, creem un fitxer a /etc/cron.hourly/enregistrament.sh. El cron serà l'encarregat d'executar-lo automàticament cada hora. El contingut del fitxer serà aquest:

#!/bin/bash


URL="http://192.168.1.33:8000/radiolive.ogg" 
LPath="/home/radiomontgri/" 
Date=$(date +%F-%H-%M) 


#numero de segundos 
segundos=60 # 186 = 6 mesos * 31 dies al mes 


rm -f `find ${LPath}*.ogg -mtime +186` 


sudo touch radiomontgri ${LPath}radio_show-${Date}.ogg # El creem per procedir a canviar-li els permissos 
sudo chgrp radiomontgri ${LPath}radio_show-${Date}.ogg 
sudo chown radiomontgri ${LPath}radio_show-${Date}.ogg 


/usr/bin/wget $URL -O ${LPath}radio_show-${Date}.ogg & 


sleep $(($segundos * 60)) 


kill %1 


L'explicació és força senzilla:
- Tenim per una banda una url que és la ip del server, el port i el punt de muntatge( en aquest cas http://192.168.1.33:8000/radiolive.ogg), i per l'altre un directori on s'emmagatzemaran els fitxers (en aquest cas /home/radiomontgri/).
- Necessitem enregistrar 6 mesos x 31 dia cada mes, que és el número de dies que apareix al fitxer: 186. L'utilitzem per borrar automàticament tots els fitxers que passin d'aquesta data per no col.lapsar el disc.
- Preparem el fitxer nou per a la següent hora d'enregistrament i li donem permissos de l'usuari en qüestió per què pugui accedir als fitxers fàcilment. Nosaltres ho hem fet des de la xarxa de windows, compartint la carpeta de l'usuari i per fer-ho fàcil. Al lloc on va l'ordinador no ens hem de preocupar de la seguretat, però veient el funcionament és fàcil canviar-ho per qualsevol altre usuari, directori, etc...
- A continuació descarreguem el fitxer mitjançant la url i el programa wget que hem de tenir instal.lat al sistema (#yum install wget)
- Esperem 60 minuts i finalment parem el procés... el crontab s'encarrega automàticament de que a la següent hora s'engegui un altre procés i així cada hora s'engega un de nou i es destrueix l'anterior, quedant enregistrat el fitxer ogg amb la data i hora correctes i a més borrant qualsevol fitxer que hagi passat de la data que nosaltres li hem marcat.
- No us oblideu de fer aquest fitxer bash executable: #chmod +x enregistrador.sh
- Segons els càlculs que he fet, amb un disc dur de 160Gb, podem enregistrar en estèreo i a 44.100 MHz. Sabem l'espai que ocupa una hora d'enregistrament: 26Mb. 26Mb x 24h = 864Mb cada dia. 864Mb/dia x 31 = 26,16Gb al mes. 26,16Gb/mes x 6 mesos = 156,96Gb. Amb un disc dur de 160Gb hauríem de tenir suficient, ja que no tots els fitxers ocupen el mateix i 26Mb és el fitxer amb més tamany que hem trobat. La resta oscil.la entre 21 i 23, per tant, en principi no arribarem mai a ocupar el 100% del disc dur.

I ja està tot!!!! Amb tota aquesta informació, ja teniu suficient per poder instal.lar-vos el vostre servidor de ràdio i emetre la vostra pròpia ràdio per internet, per exemple. Si teniu poc espai al disc, podeu intentar rebaixar la qualitat de l'emissió o fer-la mono o baixar el samplerate, per exemple... aquí hi ha un exemple per configurar l'arxiu /etc/ices.conf:


Redirigint els ports del router cap al server, ja podriem emetra tranquil.lament cap a internet (possiblment s'hauria de baixar el nominal-bitrate per emetre a 22.000 per exemple i aconsseguir d'aquesta manera un ample de banda aprofitat amb més oients). De fet, des de la xarxa, podem utilitzar un navegador, el vlc o qualsevol altre sistema per escoltar la ràdio directament des del server:


Per últim, una captura de pantalla per què veieu que podem accedir tranquil.lament des de la xarxa windows al servidor per obrir qualsevol dels fitxers i per què veieu la nomenclatura final. Per fer-ho heu de configurar el Samba del server GNU/linux per poder accedir a la carpeta de l'usuari... la configuració del samba és un altre tema a part que no explicaré avui aquí.:



COSTOS DEL PROJECTE:

- Programari lliure GNU/Linux Fedora 13: 0€
- Instal.lació: 6h (comptant instal.lació, actualització del sistema i configuració. He comptat uns 30€/hora) 6h x 30€/hora = 180€ (que us podeu estalviar si ho feu vosaltres mateixos, que per això us he donat totes aquestes instruccions).
- PC  de segona mà: 75€

El servidor us pot sortir segons els càlculs estimatius, aproximadament per 255€ com a molt car, comptant que no tingueu pc i que contracteu el servei a algú altre. Si ho feu tot vosaltres i ja teniu el pc, 0€. A més a més, els fitxers generats també són en format obert ogg i d'una extrema qualitat. No podem demanar més, no?

Que us sigui molt útil!!!!!

 
Tira Ecol