pedroreina.net

Grabar audio de la TDT
Por la TDT además de cadenas de televisión se reciben cadenas de radio. Parece una fuente de contenidos muy interesante para grabarlos manteniendo la calidad de sonido con la que se emitan. Seguro que hay multitud de maneras de hacerlo. Aquí explico cómo lo hago yo usando Debian Lenny, Kaffeine, mplayer y ffmpeg.
Programar la grabación
Utilizo Kaffeine versión 0.8.7 para grabar de la TDT, lo que me permite programar con mucha comodidad las grabaciones.

Voy a ir explicando el proceso con un ejemplo concreto. Quiero grabar y quizá conservar un programa de Radio Clásica, este, que vemos en una captura de su página web:

Programa

Creamos un temporizador desde el comienzo del programa hasta el comienzo del siguiente:

Temporizador

Y la lista de programaciones nos queda así:

Programaciones

Naturalmente, podemos programar varios eventos.

Archivo obtenido
Lo que se obtiene de la grabación es el archivo concierto.m2t:

# file concierto.m2t
concierto.m2t: MPEG transport stream data

# ls -l -h concierto.m2t
-rw-r--r-- 1 pedro pedro 292M jun 26 19:00 concierto.m2t

Es decir, que se consumen unos 2 MB por minuto de grabación.

Este archivo se puede reproducir con Kaffeine, naturalmente, puesto que lo creó él, y con mplayer:

# mplayer concierto.m2t
MPlayer 1.0rc2-4.3.2-DFSG-free (C) 2000-2007 MPlayer Team
Playing concierto.m2t.
TS file format detected.
NO VIDEO! AUDIO MPA(pid=2011) NO SUBS (yet)! PROGRAM N. 1000
======================================================================
Opening audio decoder: [mp3lib] MPEG layer-2, layer-3
AUDIO: 48000 Hz, 2 ch, s16le, 256.0 kbit/16.67% (ratio: 32000->192000)
Selected audio codec: [mp3] afm: mp3lib (mp3lib MPEG layer-2, layer-3)
======================================================================
AO: [alsa] 48000Hz 2ch s16le (2 bytes per sample)
Video: no video
Starting playback...
A:30375.0 ( 8:26:14.9) of 9567.9 ( 2:39:27.9) 0.3%

Aunque en este caso se presenta el problema de que el tiempo de reproducción no comienza en 0.

Convertir en mp2
Para que el comienzo del archivo sea el momento 0 y también para trabajar con más comodidad, convertimos el archivo m2t en mp2. Lo hacemos con ffmpeg:

# ffmpeg -i concierto.m2t -acodec copy concierto.mp2
FFmpeg version r11872+debian_0.svn20080206-18, Copyright (c) 2000-2008 Fabrice Bellard, et al.
Input #0, mpegts, from 'concierto.m2t':
Duration: 02:29:53.5, start: 30367.538578, bitrate: 272 kb/s
Program 1000
Stream #0.0[0x7db](SPA): Audio: mp2, 48000 Hz, stereo, 256 kb/s
Output #0, mp2, to 'concierto.mp2':
Stream #0.0(SPA): Audio: 0x0000, 48000 Hz, stereo, 256 kb/s
Stream mapping:
Stream #0.0 -> #0.0
Press [q] to stop encoding
size= 281052kB time=8993.7 bitrate= 256.0kbits/s
video:0kB audio:281052kB global headers:0kB muxing overhead 0.000000%

En mi sistema se tarda unos 11 segundos en hacer la conversión.

Se obtiene el archivo concierto.mp2:

# file concierto.mp2
concierto.mp2: MPEG ADTS, layer II, v1, 256 kbps, 48 kHz, Stereo

# ls -l -h concierto.mp2
-rw-r--r-- 1 pedro pedro 275M jun 27 21:05 concierto.mp2

Este archivo ya es mucho más habitual que el anterior formato y por tanto habrá muchos más programas que lo puedan manejar. Vemos que Radio Clásica emite a 256 kb/s, pero otras emisoras emiten con menos calidad.

Ya se puede borrar el archivo concierto.m2t, que no se va a usar más.

Extraer las obras
Ahora falta extraer del archivo concierto.mp2 las dos obras emitidas (estaban anunciadas tres pero no se emitió la central).

Para la extracción vamos a usar otra vez ffmpeg, pero hay que saber exactamente dónde empieza cada obra y cuánto dura. Para ello, reproduzco el archivo con mplayer y anoto el punto de comienzo y el punto final.

Me gusta usar mplayer para esto porque se dispone de seis teclas para avanzar y retroceder en la reproducción:

Izquierda   retrocede 10 segundos

Derecha   avanza 10 segundos

Arriba   retrocede 1 minuto

Abajo   avanza 1 minuto

AvPág   retrocede 10 minutos

RePág   avanza 10 minutos

Señalo en negrita el dato que voy comprobando:

# mplayer concierto.mp2
MPlayer 1.0rc2-4.3.2-DFSG-free (C) 2000-2007 MPlayer Team
Playing concierto.mp2.
Audio file file format detected.
======================================================================
Opening audio decoder: [mp3lib] MPEG layer-2, layer-3
AUDIO: 48000 Hz, 2 ch, s16le, 256.0 kbit/16.67% (ratio: 32000->192000)
Selected audio codec: [mp3] afm: mp3lib (mp3lib MPEG layer-2, layer-3)
======================================================================
AO: [alsa] 48000Hz 2ch s16le (2 bytes per sample)
Video: no video
Starting playback...
A: 395.3 (06:34.0) of 8993.0 ( 2:29:53.0) 0.2%

La primera obra comienza en el momento 6:34 y termina en el momento 52:22, luego tiene una duración de 45:48. Con estos datos, la llamada a ffmpeg es:

# ffmpeg -ss 0:06:34 -t 0:45:48 -i concierto.mp2 -acodec copy Beethoven-Cuarteto13.mp2

Se observa que la sintaxis de ffmepg pide expresar los tiempos en formato H:MM:SS.

En mi sistema esta orden tarda 1.5 segundos aproximadamente.

Análogamente, en 3 segundos tengo la segunda obra separada:

# ffmpeg -ss 1:01:16 -t 1:26:00 -i concierto.mp2 -acodec copy Mahler-Sinfonia9.mp2

Una vez comprobado que los archivos obtenidos son los correctos, ya se puede borrar el archivo concierto.mp2, que no se va a usar más.

Esto es lo que hemos obtenido como resultado final:

# ls -l -h *.mp2
-rw-r--r-- 1 pedro pedro 84M jun 27 19:22 Beethoven-Cuarteto13.mp2
-rw-r--r-- 1 pedro pedro 158M jun 27 19:32 Mahler-Sinfonia9.mp2

Reproducir los archivos
Los archivos obtenidos se pueden reproducir con Kaffeine y mplayer, claro está, que son los dos programas usados en esta explicación, pero muchos otros programas serán capaces. He probado que funcionan alsaplayer y audacious. Muestro este último en mi sistema:

audacious

Puedo escuchar en cualquier lugar los archivos obtenidos, ya que mi PMP, un iAudio 7, los reproduce perfectamente:

iaudio7

Posibilidades para seguir
Mejor visto con cualquier navegador HTML 4.01 válido CSS válido