Wat is het SWF-bestandsformaat?
Bestanden met de extensie .swf bevatten animaties - die interactief kunnen zijn - opgeslagen in een binair multimediaformaat dat oorspronkelijk in 1996 werd gecreëerd door FutureWave Software. De naam staat voor Small Web Format, wat het oorspronkelijke doel weerspiegelt: het leveren van compacte, bandbreedtevriendelijke animaties via het internet.
Het formaat werd overgenomen door Macromedia en later door Adobe, en wordt gebruikt voor het maken en opslaan van:
- multimedia-inhoud inclusief audio en video,
- vectorafbeeldingen en bitmaps,
- ActionScript-bytecode en interactieve applets.
Applicaties die historisch werden gebruikt om .swf-bestanden te maken zijn onder meer Adobe Flash en Adobe Animate, dat het opvolgde; open-source tools zoals SWFTools waren ook beschikbaar. In 2008 stelde Adobe de formaatspecificatie gedeeltelijk open, waardoor zoekmachines zoals Google en Yahoo de inhoud binnen animaties konden indexeren. Het formaat ontwikkelde zich gedurende vele jaren: vroege versies maakten alleen het animeren van vectorafbeeldingen mogelijk, en latere releases breidden de mogelijkheden uit naar streaming audio en video en eenvoudige 3D-animatie.
Adobe Flash Player - de browserplug-in die nodig was om .swf-bestanden af te spelen - bereikte het einde van zijn levensduur op 31 december 2020. Bestanden kunnen nog steeds buiten een browser worden afgespeeld met de zelfstandige Ruffle-emulator of via de Flash-preservatiespeler van het Internet Archive. Bronprojecten werden doorgaans opgeslagen als .FLA-bestanden en gecompileerd naar .swf voor distributie; gerelateerde formaten zijn onder meer .FLV voor Flash-videostreams en .SWC voor herbruikbare Flash-componentbibliotheken.
Beveiliging & veiligheid
RISICO: MEDIUMSWF was een beruchte vector voor malware - Flash Player had een lange geschiedenis van kritieke CVE's voor het uitvoeren van code op afstand, wat een belangrijke reden was waarom het werd stopgezet. De legacy plug-in is verdwenen, dus drive-by SWF-exploits in browsers zijn geen actuele bedreiging meer. Restrisico's: (1) een SWF bevat ActionScript dat netwerkoproepen kan doen of URL's kan openen, dus voer niet-vertrouwde bestanden alleen uit in de gesandboxte Ruffle (voorkeur) in plaats van de offline debug-projector; (2) kwaadaardige .exe „projector”-bestanden die zich voordoen als een onschadelijke animatie; (3) installeer nooit de stopgezette Flash Player opnieuw van „codec”-sites van derden - die installatieprogramma's zijn zelf vaak malware.
Formaatdetails
in een notendopProgramma's die SWF-bestanden openen
Technische details
diepe specificaties| Magic bytes | FWS (46 57 53) = ongecomprimeerd; CWS (43 57 53) = zlib-gecomprimeerd; ZWS (5A 57 53) = LZMA-gecomprimeerd - allemaal op byte-offset 0 |
| Versie- & lengtevelden | Byte 3 codeert het SWF-versienummer (1-46); bytes 4-7 slaan de volledige ongecomprimeerde bestandslengte op als een little-endian uint32 |
| MIME-type | application/x-shockwave-flash |
| Compressie | Geen (SWF 1-5); zlib toegepast na de 8-byte header (SWF 6+, CWS-handtekening); LZMA toegepast na de 8-byte header (SWF 13+, ZWS-handtekening) - de eerste 8 bytes worden nooit gecomprimeerd |
| Coördinateneenheid | Twip (1/20 van een pixel); alle ruimtelijke waarden worden opgeslagen als twip-integers met behulp van SWF-bitvelden met variabele lengte |
| Tag-gebaseerde structuur | Inhoud gecodeerd als getagde records: 2-byte korte header (10-bit recordtype + 6-bit lengte) of 6-byte lange header voor payloads ≥ 63 bytes |
| Vectorafbeeldingen | Vormen gedefinieerd via SHAPE-records met kwadratische Bézier-curve-randen; vultypen omvatten effen kleur, lineair/radiaal verloop en bitmap |
| Scripting-engine | ActionScript 1 & 2 draaien op AVM1 (stack-gebaseerde geïnterpreteerde VM); ActionScript 3 (SWF 9+) draait op AVM2 (register-gebaseerd, met JIT in sommige runtimes) |
| Videocodecs | Sorenson Spark (SWF 6+), Screen Video (SWF 7+), On2 VP6 en VP6 met alfakanaal (SWF 8+) |
| Audiocodecs | Ongecomprimeerde PCM, ADPCM, MP3, Nellymoser (SWF 6+), Speex (SWF 10+) |
| Lettertype-insluiting | TrueType-contouren geconverteerd naar SWF-vormrecords; DefineFont2- en DefineFont3-tags bevatten volledige Unicode-karaktertabellen |
| 3D-transformaties | PlaceObject3-tag (SWF 11+) voegt een 4×4 perspectiefmatrix toe die 3D-rotatie en projectie van display-list-objecten mogelijk maakt |
| Binaire data-insluiting | DefineBinaryData-tag (SWF 9+) staat toe dat willekeurige ruwe binaire payloads worden opgeslagen in de .swf-container |
| Tijdlijnmodel | Frame-gebaseerde display-lijst; elk frame is een diff van PlaceObject- en RemoveObject-tags toegepast op de scene-graph - geen volledige keyframe-snapshot |
| Uitgebracht | 1996 (FutureSplash Animator); Adobe published the SWF File Format Specification, now withdrawn after Flash EOL |
| Open standaard | Ja · royaltyvrij |
| Specificatie | web.archive.org |
SWF conversies
Community V&A
gevraagd door gebruikersNog geen vragen - wees de eerste om iets te vragen over SWF-bestanden.