Extraer audio de ficheros SWF

A raíz de enseñarle a Crispín el Flash de "Loituma", que puedes estar horas escuchando aunque se trata del mismo trozo de canción repetido una y otra vez, éste me pasó un par de enlaces coñones de ejemplos de música que se repite muchas veces: El "come to Kenia" y los "badgers". Dado que me gustaba la musiqueta pues me copié el fichero SWF Flash de dichas animaciones.

Ahora la cuestión es, ¿cómo extraigo el audio de un fichero Flash en Linux? Bien, aquí tenéis un ejemplo de cómo se procede en Debian.

Primero buscamos paquetes relacionados con los ficheros SWF, para ello hacemos:

$ apt-cache search swf | grep SWF

Cuya salida (recortada un pelín) es:

flasm - assembler and disassembler for Flash (SWF) bytecode
libflash-dev - GPL Flash (SWF) Library - development files
libflash-mozplugin - GPL Flash (SWF) Library - Mozilla-compatible plugin
python-ming - Ming (SWF) module for Python
swf-player - Mozilla plugin for SWF files (Macromedia Flash)
swfdec-mozilla - Mozilla plugin for SWF files (Macromedia Flash)
swftools - Collection of utilities for SWF file manipulation/creation


Vaya, parece que en la última línea hay algo interesante, vamos a mirar con más detalle el paquete swftools:

$ apt-cache show swftools

La salida es:

Description: Collection of utilities for SWF file manipulation/creation SWF Tools is a collection of SWF (Flash) manipulation and creation utilities.
.
This package includes: pdf2swf, jpeg2swf, png2swf, gif2swf, font2swf, wav2swf, swfcombine, swfextract, swfdump, swfstrings, swfbbox and swfc.
.
* pdf2swf is a PDF to SWF Converter. It generates one frame per page and enables you to have fully formatted text, including tables, formulas etc. inside your Flash Movie. It's based on the xpdf PDF parser from Derek B. Noonburg.
* jpeg2swf takes one or more JPEG pictures and generates an SWF slideshow.
* png2swf takes one or more PNG pictures and generates an SWF slideshow.
* gif2swf converts GIFs into SWF. It is also able to handle animated gifs.
* font2swf converts font files (TTF, Type1) into SWF.
* wav2swf converts WAV files into SWF.
* swfcombine is a tool for inserting SWFs into Wrapper SWFs. (Templates) E.g. for including the pdf2swf SWFs into some sort of Browsing-SWF.
* swfextract allows to extract Movieclips, Sounds, Images etc. from SWF files.
* swfdump prints out various informations about SWFs.
* swfstrings scans SWFs for text data.
* swfbbox allows to readjust SWF bounding boxes.
* swfc is a tool for creating SWF files from simple script files.

Pues es justo lo que buscamos, el swfextract puede sacar las pistas de audio del SWF. ¡A instalarlo! (ahora como root)

# apt-get install swftools

Una vez instalado vuelvo al sitio donde guardé los ficheros SWF y tras una consulta rápida al manual del swfextract veo que se usa del siguiente modo.

Primero listamos el contenido del SWF con la orden:

$ swfextract fichero.swf

Que da la salida:

Objects in file fichero.swf:
[-i] 25 Shapes: ID(s) 1, 8, 25-28, 30, 32, 34, 36, 39
[-i] 20 MovieClips: ID(s) 2, 9, 10, 19, 29, 31, 33, 35
[-s] 1 Sound: ID(s) 40
[-f] 1 Frame: ID(s) 0
[-m] 1 MP3 Soundstream

Así localizamos el ID de la pista de audio (indicada como Sound). Con dicho ID (40 en este caso) ya sólo queda hacer lo siguiente para obtener nuestro fichero MP3:

$ swfextract fichero.swf -s 40

Con lo que se genera un fichero llamado "output.mp3".

Another job well done!

0 comentarios: