En ocasiones puede ser que quieras quedarte sólo con el audio de un archivo que tienes en formato Flash Video (.flv, el que usan webs como youtube). Para ello puedes extraerlo y guardarlo como un mp3 con ffmpeg de la siguiente forma:
ffmpeg -i video_original.flv audio_destino.mp3
Si lo que quieres es hacer esto mismo en un gran número de vídeos, aquí tienes un script bash que lo hace por ti (lo siento, no funciona en windows):
#!/bin/bash - #=============================================================================== # # FILE: flv2mp3 # # USAGE: ./flv2mp3 # # DESCRIPTION: Extrae la pista de música de un archivo flash # y lo guarda como mp3 # # OPTIONS: --- # REQUIREMENTS: ffmpeg,xterm # BUGS: --- # NOTES: --- # AUTHOR: --- # COMPANY: # CREATED: 02/14/2012 08:38:01 PM CET # REVISION: --- #=============================================================================== set -o nounset # Treat unset variables as an error clear echo =============================================================================== echo echo Introduzca la ruta \(relativa\) en la que se encuentran el\(los\) video\(s\) originales echo Se extraerá el audio de todos los archivos con extensión .flv y se echo guardará en formato mp3 read -p ">>" RUTA echo =============================================================================== echo echo RUTA=$RUTA/ # Comprobamos que existe algún archivo if [ -e "$RUTA"aa ] then ls $RUTA*.flv > /dev/shm/listado_flv # Guardamos la lista de los echo listado_flv: # archivos flash en la memoria ram echo ------------------------------------------------------------------------------- cat /dev/shm/listado_flv echo echo ------------------------------------------------------------------------------- else echo en $RUTA no se han encontrado archivos .flv exit fi # Procesamos los archivos if [ -e /dev/shm/listado_flv ] then echo =============================================================================== echo while read ARCHIVO do echo ·Procesando "$ARCHIVO" NOMBRE=$(echo $ARCHIVO | awk -F . {'print $1'}) xterm -e ffmpeg -i "$ARCHIVO" "$NOMBRE".mp3 done < /dev/shm/listado_flv # Borramos la lista de la ram rm /dev/shm/listado_flv else echo ERROR: No se ha podido escribir la lista a /dev/shm fi echo Finalizado
Una vez que lo ejecutas, te pide la ruta relativa a la carpeta en donde se encuentran los vídeos. Tras esto el programa va extrayendo el audio y guardándolo en formato mp3 y con el mismo nombre que el vídeo del cual procede.
ffmpeg es un programa muy potente, por lo que modificándo un poco el script (que por cierto, si quieres, puedes 😉 ) se puede lograr que guarde el audio en otros formatos, o que realice infinidad de modificaciones tanto sobre el vídeo, como el audio o incluso los subtítulos.
Por último, dos anotaciones:
1º. Por algún motivo que se me escapa, tras procesar el primer archivo, el script no sigue trabajando con el resto de los vídeos (lo que sí sé es que es culpa de ffmpeg). Para solucionarlo lanzo el proceso en un terminal aparte con xterm.
2º. No fui capaz de hacer que ffmpeg no imprimiese la salida en la pantalla, pero al usar un terminal aparte consideré que era mejor opción poder ver lo que está haciendo.
Alguien sabe por que pasa esto??