Sincronizar radio

Para sacarle realmente partido a esta entrada, a no ser que tu dominio del chino sea de aupa necesitarás sincronizar tu radio favorita.

Lo primero de todo es conseguir la dirección de la radio que queramos sincronizar (hace un tiempo era un arte, ahora con esta extensión para firefox se hace con dos click), simplemente hay que entrar en la página web de la radio que nos interesa y esta extensión nos dirá los streaming que hay en la página, los copiamos y ya los tenemos para poder sincronizarlas.

Hay varias formas de hacerlo, semejantes a las de windows:

  • Reproducir la radio y pausarla hasta sincronizarla (método winamp) Escuchamos la radio y la pausamos cuando haya un momento clave, pitido del arbitro, jugada peligrosa..., que sea fácil de localizar cuando llegue el vídeo, y esperar que llegue esa jugada para despausar. Un método la mar de sencillo, aunque tiene un inconveniente, no se puede adelantar la radio, así que si nos pasamos pausando tendríamos que volver a empezar la sincronización.
Para esto podemos usar prácticamente cualquier reproducir que permita streaming y la posibilidad de pausar, yo personalmente prefiero el mplayer, pero para gustos...

  • Grabar el streaming de la radio y reproducir el archivo resultante con un reproductor (método screamer radio-coolplayer en windows), aqui si que pienso que hay un reproductor mejor que el resto (de los que he probado mplayer, xine, xmms, amarok), vlc ya que es el único que al llegar al final del archivo detecta que ese archivo ha aumentado y continua reproduciendo y permitiendo la navegación a través de él adelante y atrás. El inconveniente que necesitaremos ejecutar dos programas, su gran ventaja es que no importa que nos pasemos pausando, podremos adelantar la radio y retrasarla a voluntad para sincronizar, no solo al principio, sino también conforme se vaya desajustando la sincronización con el tiempo, que suele pasar.
Para grabar uso el streamripper, asi que si no lo tienes instalarlo por consola es sencillo:

sudo aptitude install streamripper

Personalmente me he currado un par de script para automatizar el proceso, uno para cada método:

1-radioplay:

#!/bin/bash
clear
echo "---------------"
echo " 1 = Cadena SER"
echo " 2 = Cadena SER 2"
echo " 3 = RNE Radio 1"
echo " 4 = Radio Marca"
echo " 5 = COPE"
echo " 6 = OndaCero"
echo " 7 = Punto Radio"
echo " 8 = Canal Sur Radio"
echo " 9 = RNE Radio 3"
echo " 10 = Rockservatorio"
echo " 11 = RNE Radio 5"
echo " 12 = Europa FM"


echo
echo -n "Nº de radio a escuchar: "
read radio

if [ "$radio" == "1" ] ; then
clear
echo -n "Radio a la escucha: "
echo "Cadena SER Moron"
echo
mplayer -nolirc -prefer-ipv4 -cache 256 http://91.121.64.12:8811/

...


exit
fi
#FIN




2-radiorec:

#!/bin/bash
clear
echo "---------------"
echo " 1 = Cadena SER"
echo " 2 = Cadena SER 2"
echo " 3 = RNE Radio 1"
echo " 4 = Radio Marca"
echo " 5 = COPE"
echo " 6 = OndaCero"
echo " 7 = Punto Radio"
echo " 8 = Canal Sur Radio"

echo
echo -n "Nº de radio a escuchar: "
read radio

if [ "$radio" == "1" ] ; then
clear
echo -n "Grabando: "
echo "Cadena SER Moron"
echo
streamripper http://91.121.64.12:8811/ -a programa.mp3 -o always -s -r -d ~/radio/CadenaSer-`date +%d`-`date +%m`-`date +%y` & sleep 10 && vlc ~/radio/CadenaSer-`date +%d`-`date +%m`-`date +%y`/programa.mp3

...

fi
killall streamripper
sleep 15
exit
#FIN

Este es mas elaborado, ripea el stream en un directorio nombrado con el nombre del canal y la fecha y lo reproduce con vlc, cuando se cierra el vlc se mata el proceso del streamripper y sale automaticamente, el archivo queda para si te quieres recrear con como cantan los goles esos "periodistas" xD

Problemas con el audio

Nunca había tenido problemas con el audio, todas las distribuciones que había usado, tanto en CD como ya instaladas habían detectado mi tarjeta de sonido sin problemas, sin embargo de repente ayer me encontre sin audio, en cualquier programa, nada, algo muy extraño. Pude comprobar que no era problema de hardware con un liveCD (zenwalk), y el sonido funcionaba bien.

Buscando el problema he seguido todos los pasos de este manual, sin aparentemente ningún problema:

Tarjeta gráfica detectada correctamente:

~$ lspci | grep -i audio
00:02.7 Multimedia audio controller: Silicon Integrated Systems [SiS] AC'97 Sound Controller (rev a0)
~$ cat /proc/asound/cards
0 [SI7012 ]: ICH - SiS SI7012
SiS SI7012 with ALC655 at irq 22

Driver de sonido instalados:

~$ lsmod | grep -i snd
snd_intel8x0 34972 2
snd_ac97_codec 100644 1 snd_intel8x0
ac97_bus 3200 1 snd_ac97_codec
snd_pcm_oss 44672 0
snd_mixer_oss 17664 1 snd_pcm_oss
snd_pcm 80388 3 snd_intel8x0,snd_ac97_codec,snd_pcm_oss
snd_seq_dummy 4740 0
snd_seq_oss 33152 0
snd_seq_midi 9600 0
snd_rawmidi 25728 1 snd_seq_midi
snd_seq_midi_event 8448 2 snd_seq_oss,snd_seq_midi
snd_seq 53232 6 snd_seq_dummy,snd_seq_oss,snd_seq_midi,snd_seq_midi_event
snd_timer 24324 2 snd_pcm,snd_seq
snd_seq_device 9228 5 snd_seq_dummy,snd_seq_oss,snd_seq_midi,snd_rawmidi,snd_seq
snd 54660 14 snd_intel8x0,snd_ac97_codec,snd_pcm_oss,snd_mixer_oss,snd_pcm,snd_seq_oss,snd_rawmidi,snd_seq,snd_timer,snd_seq_device
soundcore 8800 1 snd
snd_page_alloc 11400 2 snd_intel8x0,snd_pcm

Control de volumen aparentemente bien, tanto con alsamixer como con gnome-sound-properties (el icono que hay al lado del reloj) todas las salidas estaban habilitadas y al 100%.

Pero no había forma, todos los test de gstreamer-properties estaban mudos.

Y el programa que estaba usando el sonido:
~$ lsof /dev/snd/*
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
mixer_app 5866 jjgomera 19u CHR 116,7 14618 /dev/snd/controlC0
Solo el mezclador, pero aparentemente estaba bien, todos habilitados y al 100%.

He tardado bastante en darme cuenta de donde estaba el fallo, evidentemente en el mezclador, y es que jugueteando con él (gnome-sound-properties), he localizado que por defecto no aparecen todas los canales en pantalla, y al habilitarlos todos había algunas que sí estaban desactivadas, esa tontería era la clave.


En concreto en mi caso el que estaba desconectado y dando la lata era el IEC958 Playback AC97-SPSA, otra cuestión es cómo se había desactivado.

Sopcast en linux

Sin duda, dentro de los programas tvp2p que proliferan en windows, este siempre fue mi preferido, por su limpieza, ausencia de publicidad, buena traducción a un idioma entendible, carga de canales, y siempre limpio de malwares, adwares y demás calaña. Como no, también es el único que tiene versión para linux, no es lo mismo que para windows ya que ellos solo proporcionan una triste versión por consola, pero funcionar, funciona la mar de bien.

Recientemente además han sacado una nueva versión, la 3.0.1, que iguala el número de la versión de windows, pero sin aparentes cambios con la versión anterior, la 1.1.1, pedazo salto de versión, para tan pocos cambios.

Para distribuciones debiánicas he empaquetado la ultima versión, sopcast_3.0.1_1.i386.deb, para que sea instalable fácilmente, simplemente descargar y abrir con el gestor de paquetes.

Para el resto de distribuciones os descargáis el programa de su página: sp-auth.tgz, lo descomprimis y copiais el archivo al directorio de ejecutables /usr/bin con el nombre sp-sc, con esta orden desde terminal:

sudo cp /direcotorio_donde_descomprimiste/sp-sc-auth /usr/bin/sp-sc

Además, habría que instalar las dependencias, la librería libstdc++5, aunque probablemente ya la tengáis instalada:

sudo aptitude install libstdc++5


El programa ya así es utilizable, para ello buscamos el canal del partido que queremos ver, por ejemplo en tvmix, y localizamos el enlace sop de ese canal aquí. Una vez que disponemos del enlace del canal (por ejemplo sop://broker1.sopcast.com:3912/6001), abrimos una terminal y escribimos:

sp-sc sop://broker1.sopcast.com:3912/6001 6881 2000

siendo 6881 el puerto que usará el sopcast para conectarse al exterior (preferiblemente un puerto abierto en el router y firewall, aunque tampoco se nota mucho, estos chinos deben usar todos modem xD) y 2000 el puerto que usaremos para comunicarnos con el reproductor.
A continuación en otra terminal cargamos el canal con el reproductor que prefiramos:

mplayer http://localhost:2000/tv.asf

fíjate en el numero que es el que usamos como último parámetro en el comando del sopcast.

No es muy difícil de usar, pero, es evidente, resulta engorroso; afortunadamente hay desarrolladas diversos gui (programas gráficos) para poder ejecutar más cómodamente el sopcast:

qsopcast····················· gsopcast



Yo prefiero el qsopcast, pero, como todo, esto también es cuestión de gustos, desde luego, en cuanto a funcionalidad la cosa anda muy pareja, ambos permiten cargar url (útil para canales privados que no aparecen en la lista de canales oficiales), cargar varios canales a la vez (nada recomendable a no ser que tengas una superconexión), grabar el canal, configurar reproductor, puerto...
Algo lógico ya que el desarrollador es el mismo, la única diferencia, el qsopcast es capaz de manipular medianamente los enlaces sop desde el navegador y cargarlos en el programa, para ello debemos indicarle al firefox como manipular el protocolo sop, abrimos en una pestaña la dirección about:config y creamos dos nuevas variables:

network.protocol-handler.app.sop de tipo cadena y valor /usr/bin/qsopcast
network.protocol-handler.external.sop de tipo lógico y valor true

y digo medianamente porque aunque la dirección del enlace pinchado aparezca en la barra de direcciones al abrirse el programa hace falta darle al botón ejecutar para que empiece a cargar

Para distribuciones debiánicas los he empaquetado para una instalación más sencilla:

qsopcast_0.3.5-rkmod-1_i386.deb
gsopcast_0.4.0-1_i386.deb

Existe una tercera alternativa, wxsopcast, un script en python, que aunque tiene todas las características de los otros deja bastante que desear en su presentación de la lista de canales, por lo demás está muy bien:



No hace falta instalarlo, simplemente descargamos el script, (si alguien quiere la versión traducida al castellano, wxsopcast_es.py) le damos permisos de ejecución, instalamos las dependencias:

sudo aptitude install python-wxgtk2.8

Abrimos una terminal y nos situamos en el directorio donde tengamos el script y ejecutamos:

python wxsopcast.py

también podemos crearle un lanzador con la orden

python /ruta_completa/wxsopcast.py


PD: recordar eso si, que aunque todos los gui son software libre, el sopcast propiamente dicho no tiene nada de libre, aunque mejor no quejarse mucho porque es la única alternativa

Actualización: ya hay disponible una versión de gsopcast que carga los enlaces automáticamente desde el navegador, así que desde ahora esta es la versión preferida, para ello hay que desinstalar primero los paquetes de arriba si están instalados, a continuación se instala este paquete que ya trae el motor incorporado, gsopcast_0.4.0-2_i386.deb, y si seguis prefiriendo el qsopcast podeis instalarlo a continuación desde el paquete de arriba sin problemas. Esta última mejora gracias a chunchengch de ubuntuforums

Así ya podemos utilizar la agenda de tvmix, como si estuviesemos en windows :)

Agradecimientos:

-Cristobal: Por sus manuales de debianización realmente sencillos
-Wei Lian: desarrollador de qsopcast y gsopcast
-Fenix-TX: Por la traducción de qsopcast y gsopcast al castellano
-Ryukent: Por su modificación del qsopcast para ser capaz de manipular enlaces sop desde el navegador
-czk: Desarrollador del wxsopcast