¿Qué es un archivo SWF?
Un archivo SWF es el formato de entrega de Adobe Flash: un archivo binario que combina gráficos vectoriales, texto, video, sonido y bytecode de ActionScript para su reproducción en Flash Player. Adobe dejó de ofrecer soporte para Flash Player el 31 de diciembre de 2020, por lo que ahora el contenido necesita un emulador u otro software especializado.
Cómo funcionan los archivos SWF
SWF es un formato binario basado en etiquetas diseñado para una entrega eficiente a Flash Player, no para intercambiar gráficos entre editores. Sus etiquetas contienen gráficos, mapas de bits, sonido y video, junto con bytecode que una máquina virtual interpreta como ActionScript. La reproducción simple se rige únicamente por una línea de tiempo; el contenido interactivo también ejecuta ActionScript, que puede hacer referencia a recursos externos al archivo. Los archivos hasta SWF 8 usan ActionScript 1.0 o ActionScript 2.0, mientras que los de SWF 9 y versiones posteriores pueden usar ActionScript 3.0 en una segunda máquina virtual (AVM2), por lo que dos archivos con la misma extensión pueden necesitar compatibilidad con distintos entornos de ejecución. Adobe dejó de ofrecer soporte para Flash Player el 31 de diciembre de 2020 y bloqueó la ejecución de contenido Flash en él a partir del 12 de enero de 2021; Chrome 88 y Firefox 85 eliminaron la compatibilidad con Flash ese mismo enero. El acceso depende ahora de la emulación, de herramientas de extracción específicas del formato o de la conversión.
Datos clave
- Los primeros tres bytes identifican el empaquetado:
FWSindica que no hay compresión,CWSsignifica que todo lo que sigue a los primeros 8 bytes está comprimido con zlib (SWF 6 y versiones posteriores), yZWSindica compresión LZMA (SWF 13 y versiones posteriores). El cuarto byte es la versión de SWF. Una herramienta que solo reconoce los dos primeros rechaza los archivosZWS; el demultiplexor SWF de FFmpeg solo buscaFWSyCWSal identificar el formato. - En SWF 9 y versiones posteriores, el indicador ActionScript3 de la etiqueta FileAttributes (etiqueta 69) registra si el archivo usa ActionScript 3.0 o
ActionScript 1.0/2.0, y ambos se ejecutan en máquinas virtuales distintas. Los archivos más antiguos usanActionScript 1.0/2.0, y los anteriores a SWF 8 pueden carecer por completo de esa etiqueta. Ruffle, un emulador de Flash Player de código abierto, registra por separado su compatibilidad con cada uno e indica que aún no está terminado, así que prueba los archivos concretos que te interesan en lugar de suponer que toda una colección se comporta de manera uniforme. - Un demultiplexor multimedia no es un reproductor Flash. El demultiplexor SWF de FFmpeg permite acceder a los flujos de video, los sonidos, los mapas de bits sin pérdida y las imágenes
DefineBitsJPEG2integrados, y omite todas las demás etiquetas, por lo que los gráficos vectoriales, la animación de la línea de tiempo, el comportamiento de ActionScript y los mapas de bits de las otras etiquetas JPEG no aparecen en su salida; esta no es un inventario del contenido multimedia del archivo. Convertir ese contenido en video o imágenes fijas implica renderizarlo en un reproductor o emulador y capturar el resultado; Ruffle incluye una herramienta de exportación que renderiza fotogramas en PNG. - El plugin original no es una alternativa. Adobe no publica parches de seguridad para Flash Player tras la fecha de fin de vida útil, bloqueó la ejecución de contenido Flash en Flash Player a partir del 12 de enero de 2021, retiró sus páginas de descarga y advierte que las copias no autorizadas son una fuente habitual de malware.
Cuándo son importantes los archivos SWF
Trata SWF principalmente como un formato de entrada para migración o preservación, porque los navegadores modernos ya no ofrecen la reproducción habitual de Flash. Convertir una animación puede conservar su aspecto visual, pero perder los scripts, la interacción o el comportamiento temporal.
Cómo ayuda Transloadit con los archivos SWF
La tabla de formatos de audio/video de Transloadit indica que swf admite lectura y escritura en los stacks de FFmpeg que utilizan Robots como /video/encode. Una fila independiente para avm2, «SWF (ShockWave Flash) (AVM2)», indica que solo admite escritura.
El demultiplexor SWF de FFmpeg lee el audio, el video y algunos datos de mapas de bits integrados en un archivo y omite otras etiquetas, por lo que la animación vectorial y el comportamiento controlado por ActionScript no se convierten.
Explora los formatos de archivo y las capacidades de compresión de Transloadit
Fuentes
- Adobe: especificación del formato de archivo SWF, versión 19 (copia; el enlace original de Adobe ya no funciona)
- Página de información general sobre el fin de vida útil de Adobe Flash Player
- Biblioteca del Congreso: familia de formatos de archivo Flash SWF
- Chromium: hoja de ruta de Flash (compatibilidad eliminada en Chrome 88)
- Notas de la versión 85.0 de Firefox (compatibilidad con Flash eliminada)
- Ruffle: compatibilidad con ActionScript
- README de Ruffle (estado del proyecto y herramienta de exportación a PNG)
- FFmpeg n8.0: libavformat/swfdec.c (demultiplexor SWF)