viernes, 10 de abril de 2015

Grabar desde el micrófono en Debian utilizando arecord y ffmpeg

Existen quizás múltiples y variadas formas de grabar desde la entrada del micrófono en un linux cualquiera en general, pero para saber exactamente la manera en que grabamos sin pasar por una app mejor hacerlo desde el terminal.

Nada de comandos extraños y rebuscados, simplemente ejecutamos la aplicación que queramos utilizar y le pasamos los parámetros que deseemos para grabar y listo, así de simple.

La más sencilla es creo "arecord", en Debian forma parte de "alsa-utils" y si ya lo tienen instalado no hay que hacer nada más, si no es el caso, entonces deben instalar el paquete para poder utilizarlo.

Si no tienen configurado el volumen del micrófono pueden hacerlo a través de "alsamixer", abren el terminal y tipean "alsamixer", si ya lo hicieron entonces pueden seguir con la grabación.

Para grabar con "arecord" abrimos un terminal en la carpeta que queramos guardar la grabación y ejecutamos lo siguiente:

arecord mic.wav

Para salir de la grabación presionamos: "Ctrl + C"

Como pueden ver guardamos el archivo con el formato "wav", esto es así dado que "arecord" solo graba en los siguientes formatos (voc, wav, raw or au), si le colocan un formato "mp3" solo será un "wav" mal renombrado.

La grabación anterior es con la calidad que le asigna "arecord" por defecto, aunque el archivo es más pequeño (en mb) graba en 8 bit, 8000 Hz y en mono, si queremos grabar con más calidad (aumentan los mb) podemos pedirle a "arecord" que grabe en formato "CD":

arecord -f cd mic.wav

De esta manera graba en (16 bit little endian, 44100 Hz, stereo), para más información pueden ejecutar "man arecord".

Y como para todo hay, seguramente se estarán preguntando ¿y como se hace para grabar en formato "mp3"?, la respuesta más fácil es utilizando "FFmpeg".

(Aquí debo recordar que tengo los repositorios http://www.deb-multimedia.org/)

Para poder grabar con "FFmpeg" hay que instalarlo primero, al igual que las siguientes librerías (si quieren grabar con algunas de ellas): "libmp3lame (mp3)", "libfaac, libfdk_aac (aac)", "libvorbis (ogg)".

Instalado lo anterior, en teoría ya podemos grabar en cualesquiera de esos formatos desde la entrada del micrófono,

Pero antes debemos saber cual es nuestra entrada al mic para poder grabar con ffmpeg, no es la gran cosa y solo es cuestión de probar, podemos ir a su página y revisar su configuración (está en ingles):
Página de FFmpeg.

Básicamente es ejecutar lo siguiente en el terminal:

arecord -l

Que nos devolverá algo como:

arecord -l **** List of CAPTURE Hardware Devices **** card 0: ICH [Intel ICH], device 0: Intel ICH [Intel ICH] Subdevices: 1/1 Subdevice #0: subdevice #0 card 0: ICH [Intel ICH], device 1: Intel ICH - MIC ADC [Intel ICH - MIC ADC] Subdevices: 1/1 Subdevice #0: subdevice #0

Lo que debemos identificar es "card" y "device", esto es para utilizar en los parámetros que le pasaremos posteriormente a "FFmpeg", dirán seguro "que rollo", pero no, como decía antes es cuestión de probar, para ejemplo y sacado de la página de FFmpeg: hw:(X),(Y), where (X)=card, (Y)=device.

En mi caso utilizo "hw:0,0" pero pudiera ser "hw:0,1" o "hw:1,1" en fin, el caso particular de cada quien dependiendo el "hardware" que posea, y creo que eso se entiende sin problema.

En la carpeta donde queramos grabar abrimos un terminal:

ffmpeg -f alsa -ac 2 -i hw:0,0 -acodec libmp3lame -ar 44100 -ab 64k mic.mp3

Para salir presionamos "Q" si no funciona usamos "Ctrl + C".

Explicado por partes, con lo anterior estamos utilizando "alsa", con "dos canales (stereo)", nuestro "hardware hw:0,0", el codec para grabar es "libmp3lame", a "44100 Hz", con "64kbps" y para grabar en formato "mp3".

Si queremos grabar con más calidad subimos los "kbps" a "96k" o "128k", depende de cada quien, en "64k" es una grabación decente con buena calidad, si queremos grabar con "bits variables" utilizamos "-q:a 9" en sustitución de "-ab 64k", quedaría así:

ffmpeg -f alsa -ac 2 -i hw:0,0 -acodec libmp3lame -ar 44100 -q:a 9 mic.mp3

También es una grabación decente con un buen nivel de compresión, para ver más opciones pueden ir a la Página de FFmpeg.

Para grabar en "aac" lo anterior aplica y solo cambiamos el "codec de grabación" y el "formato", ejemplo:

ffmpeg -f alsa -ac 2 -i hw:0,0 -acodec libfdk_aac -ar 44100 -ab 64k mic.aac

Si quieren saber más pueden ir a la Página de FFmpeg.

Ahora, para grabar en formato "ogg" sería de esta manera:

ffmpeg -f alsa -ac 2 -i hw:0,0 -acodec libvorbis -ar 44100 -ab 64k mic.ogg

Como vieron se puede grabar en varios formatos desde el terminal con un mínimo esfuerzo, y aunque quedó más largo de lo que esperaba es triste entrar al blog y leer comandos que no sabemos que hacen ni para que sirven.

Espero les sirva.

No hay comentarios: