miércoles, 20 de julio de 2011

Extraer el audio de un archivo SWF con VLC a través de la línea de comandos

La manera más sencilla que he encontrado de extraer el audio de un fichero flash en formato swf (o flv) es a través del reproductor VLC.

En las pruebas que realizado he sacado un archivo de audio wav a partir de un archivo flash swf. Primero explico como hacerlo a través de la interfaz y luego, a través de la línea de comandos que puede ser muy interesante dependiendo de para qué lo queramos.

A través de la interfaz gráfica:

Para ello (lo tengo en inglés así que los nombres de menús y botones pueden no ser iguales):
  • Abrir VLC
  • Abrir el primer menú ("Media") y "Advanced Open File..."
  • En la parte superior elegimos el archivo flash del que queramos extraer el audio
  • En el botón de "Play" veremos que se pueden elegir otras opciones... elegimos "Stream"
  • Se abrirá un asistente cuya primera pantalla es el archivo de entrada que ya elegimos, le damos a "Next"
  • En la siguiente sección hay que elegir el destino, que será un fichero que elegiremos. En esta misma pantalla, desactivar la casilla "Transcoding"
  • Con estas opciones ya es suficiente, pulsamos sobre el botón "Stream" y en pocos segundos tendremos el archivo de audio donde hayamos indicado.

A través de la línea de comandos:


En los pasos anteriores, si en el asistente abrimos la última pantalla, veremos un texto que es el equivalente al comando necesario para ejecutar por línea de comandos. Por tanto, quedaría algo así:
  • Situarnos en la carpeta donde se encuentre el fichero vlc.exe (de lo contrario habrá que indicar la ruta completa, entre comillas preferiblemente).
  • Ejecutar el siguiente comando:
    vlc "D:\ruta\al\archivo\flash.swf" :sout=#file{dst="D:\ruta\al\archivo\audio.wav"} :no-sout-rtp-sap :no-sout-standard-sap :ttl=1 :sout-keep
  • Si queremos que a continuación se cierre el VLC, añadir al final:
    vlc://quit
  • Y si no se quiere mostrar la interfaz gráfica para nada, añadir después del vlc.exe:
    -I dummy  --dummy-quiet