Mostrando entradas con la etiqueta audio. Mostrar todas las entradas
Mostrando entradas con la etiqueta audio. Mostrar todas las entradas

jueves, septiembre 19, 2013

Extracción de pistas de audio sin perdida (FLAC) desde la consola de GNU/Linux

Si tratamos de preservar una colección de CDs de Audio lo mejor será volcar las pistas en un formato sin perdida para su futura utilización. Vamos a utilizar FLAC (Free Lossless Audio Codec) pues se trata de un formato abierto que nos permitirá ahorrar algo de espacio. También trataremos de hacerlo de la forma más automática posible y para ello utilizaremos el programa abcde (A Better CD Encoder).

Comencemos por la instalación del software necesario, en el caso de Ubuntu sería:

sudo apt-get install flac abcde

Luego creamos un fichero llamado por ejemplo abcde.conf donde indicaremos lo siguiente:

INTERACTIVE=n
FLACOPTS='--verify --best' 
OUTPUTTYPE="flac"
OUTPUTFORMAT='Pista${TRACKNUM}'
VAOUTPUTFORMAT='Pista${TRACKNUM}'
PADTRACKS=y                             # Enumera las pista como 01 02 en lugar de 1 2
MAXPROCS=2
 
Para los nombre de los ficheros resultantes podemos utilizar las siguientes variables:
${ARTISTFILE}
${ALBUMFILE}
${TRACKNUM}
${TRACKFILE} 
 
Finalmente sólo tendremos que llamar a abcde indicándole el fichero de configuración:
abcde -c /home/usuario/abcde.conf 

 
En algunas ocasiones nos puede interesar cambiar el formato del audio o simplemente tener un fragmento del mismo en otro formato como mp3, para ello podemos realizar:
 
ffmpeg -i audio-original.flac -t 30 fragmento-30-segundos.mp3
 

Instalación de ffmpeg en Ubuntu 14.04

sudo add-apt-respository ppa:mc3man/trusty-media
sudo apt-get update
sudo apt-get install ffmpeg gstreamer0.10-ffmpeg


miércoles, julio 17, 2013

Editando vídeos desde la consola de GNU/Linux

Supongamos que partimos de un vídeo en formato DV (formato sin compresión habitual en las cámaras de vídeo) con la grabación completa y deseamos un fragmento. Por lo tanto, lo primero será reproducirlo para ver en que instantes de tiempo vamos a realizar los cortes. Tendremos que anotar el tiempo en que se inicia y la duración del fragmento que deseamos, todo en segundos.

Para extraer el fragmento se puede utilizar la herramienta avconv  de audio y vídeo del proyecto Libav, es un proyecto de software libre para la manipulación de datos multimedia.

Su instalación en Ubuntu es muy sencilla:
sudo apt-get install libav-tools


Para trocear un vídeo utilizaremos:

avconv -i video.dv -vcodec copy --ss <inicio-en-segundos> -t <duración-en-segundos> -acodec copy trozo.dv


Probablemente el fragmento de vídeo en formato DV ocupe mucho espacio, puede ser interesante reducir su peso y perder la menor calidad posible, para ello una buena opción puede ser el codec de vídeo H.264/MPEG-4 AVC.

Convertir un vídeo a ffv1 y pcm_s16le para preservación:
avconv -vsync passthrough -i trozo.dv -vcodec ffv1 -g 1 -acodec pcm_s16le -map 0:v -map 0:a trozo.mkv


Convertir un vídeo a H.264/MPEG-4 AVC:

avconv -i trozo.dv -vcodec libx264 trozo.mp4

También nos puede interesar convertir el video a WebM, un formato de audio y vídeo diseñado libre de royaltis para su utilización en HTML5,  el proyecto está respaldado por Google.

Convertir un vídeo a WebM:

avconv -i trozo.dv trozo.webm

En algunas ocasiones nos podemos encontrar que el vídeo sólo tiene un canal de audio grabado, es decir, sólo escuchamos el sonido por uno de nuestros altavoces. Para poder solucionarlo podemos utilizar la herramienta Sound eXchange (SoX), un editor de audio desde la línea de comandos publicado con licencia GNU por Chris Bagwell.

Primero habrá que extraer el audio del fragmento de vídeo, para ello haremos uso nuevamente de la herramienta avconv y lo pasaremos al formato FLAC (Free Lossless Audio Codec), FLAC es un codec de audio de baja compresión sin perdida de información, a diferencia de MP3.
FLAC es un formato abierto y libre de royaltis, soporta metadatos, posicionamiento rápido y almacenar la imagen de portada.

Extraer el audio de un vídeo:
avconv -i trozo.mp4 -f flac audio.flac

Unir varios vídeos en uno:mencoder -oac copy -ovc copy -o final.VOB trozo1.VOB trozo2.VOB

Duplicar el audio de un canal en el otro y aumentar el volumen al doble:
sox -v 2.0  audio.flac audio-completo.flac channels 1

Sox nos avisará en el caso que el aumento del volumen produzca saturación del canal, indicando el número de ondas que se han recortado en la operación. Un ejemplo de esta situación: sox WARN sox: `audio.flac' balancing clipped 638 samples; decrease volume?

Ahora toca incorporar el nuevo audio al trozo del vídeo del cual lo obtuvimos. Para ello utilizaremos avconv, donde le facilitaremos como flujo de vídeo (-i trozo.mp4) el trozo de vídeo del que partíamos y como flujo de audio (-i audio-completo.flac) el audio con el canal duplicado. También hay que indicarle a avconv que el codec de vídeo sea H.264/MPEG-4 AVC (-vcodec libx264):

avconv -i trozo.mp4 -i audio-completo.flac -map 0:0 -map 1:0 -vcodec libx264  trozo-final.mp4

En algunas ocasiones nos puede solicitar avconv un bit rate, en ese caso se lo podemos indicar de la siguiente forma para uno de 640kb/s:


avconv -i trozo.mp4 -i audio-completo.flac -map 0:0 -map 1:0 -vcodec libx264 -ab 640k trozo-final.mp4



Para duplicar el audio de varios vídeos se puede utilizar el siguiente script en python:


#!/usr/bin/python
import sys, os
 
for i in range(1,len(sys.argv)):
    fichero= str(sys.argv[i])
    fichero_salida="%s-st.%s" % (fichero.rsplit(".",1)[0],fichero.rsplit(".",1)[1])
    os.system("avconv -i %s -f flac kk.flac" % fichero)
    os.system("sox -v 2.0  kk.flac kk2.flac channels 1")
    os.system("avconv -i %s -i kk2.flac -map 0:0 -map 1:0 -vcodec libx264  %s" % (fichero,fichero_salida))
    if os.path.exists("kk.flac"):
      os.remove("kk.flac")
    if os.path.exists("kk2.flac"):
      os.remove("kk2.flac"
 
 
El script espera que le facilitemos los vídeos a procesar como argumentos, y los convertirá a vídeos con el codec H.264/MPEG-4 AVC, el sonido en los dos canales y con el volumen duplicado.

Rotar un vídeo 

ffmpeg -i input.mp4 -c copy -metadata:s:v:0 rotate=90 output.mp4
  

Capturar la pantalla en vídeo (screencast)
Tenemos que indicarle a avconv que tome la fuente del servidor Xorg (-f x11grab): avconv -f x11grab -s 1366x768 -r 25 -i :0.0 -same_quant video.mp4