Convert SWF to M4V — Free Online Tool

Convert SWF Flash animations and video to M4V, Apple's MPEG-4 container format built for iTunes and iOS devices. This tool re-encodes SWF's legacy FLV1/MP3 streams into H.264 video and AAC audio — making obsolete Flash content playable on any modern Apple device or media player.

FFmpeg Command

Copy this command to run the same conversion locally with FFmpeg on your desktop. Download FFmpeg

Free — no uploads, no signups. Your files never leave your browser.

Estimated output:

Conversion Complete!

Download

How It Works

SWF files typically carry video encoded with the FLV1 (Sorenson Spark) codec and MP3 audio, both of which are incompatible with modern Apple devices and most contemporary players. During this conversion, FFmpeg decodes the FLV1 video stream and re-encodes it as H.264 (libx264) using a CRF value of 23, which balances file size and visual quality well for typical Flash-era content. The MP3 audio track is transcoded to AAC, the standard audio codec for the M4V/iTunes ecosystem. Because SWF is a composite format that can also contain vector graphics, ActionScript interactivity, and timeline animations rendered at runtime, only the rasterized video and audio content that FFmpeg can extract will be preserved — interactive elements and vector layers are not transferable to a passive video container. The -movflags +faststart flag reorganizes the M4V's metadata to the front of the file, enabling progressive playback before the full download completes.

What Each Flag Does

Flag What it does
ffmpeg Invokes the FFmpeg binary — the open-source multimedia processing engine that powers this conversion. In the browser-based tool, this runs via FFmpeg.wasm (WebAssembly) without any server upload.
-i input.swf Specifies the input SWF file. FFmpeg uses its SWF demuxer to parse the Flash container and extract any embedded video (typically FLV1/Sorenson Spark) and audio (typically MP3) streams for decoding.
-c:v libx264 Re-encodes the video stream using the H.264 encoder (libx264), replacing SWF's legacy FLV1/Sorenson Spark codec with the modern standard required for M4V compatibility with Apple devices and iTunes.
-c:a aac Transcodes the audio from the SWF's typical MP3 stream to AAC, the native audio codec for Apple's M4V/MPEG-4 ecosystem and a requirement for seamless playback on iOS devices and in iTunes.
-crf 23 Sets the H.264 Constant Rate Factor to 23, a perceptually good quality level that works well for the modest resolutions typical of Flash-era SWF video. Lower values (e.g., 18) produce higher quality at larger file sizes; higher values (e.g., 28) reduce file size with more compression.
-b:a 128k Sets the AAC audio bitrate to 128 kilobits per second, which is sufficient for most SWF audio content and matches common iTunes audio quality standards for spoken word and moderate-fidelity music.
-movflags +faststart Moves the M4V container's metadata (moov atom) to the beginning of the output file, enabling the video to begin playing in a browser or iOS app before the full file has finished downloading — essential for web delivery of M4V content.
output.m4v Specifies the output filename with the .m4v extension, signaling to FFmpeg to write an MPEG-4 container in Apple's M4V variant, compatible with iTunes, iOS, Apple TV, and most MPEG-4-aware media players.

Common Use Cases

  • Archiving legacy Flash-based educational animations or training videos before they become completely inaccessible due to Flash's end-of-life in 2020
  • Converting old Flash game cutscenes or intro sequences extracted from SWF files into a format playable on iPhones, iPads, or Apple TV
  • Preparing Flash-era promotional or advertising videos for import into iTunes or Final Cut Pro for reuse in modern marketing materials
  • Rescuing SWF-encoded video content from archived websites or CD-ROMs and converting it to a format compatible with iOS video players
  • Creating M4V versions of Flash animations for distribution through iTunes U or as downloadable video podcasts on Apple Podcasts
  • Converting SWF video tutorials or screencasts recorded in older Flash-based tools into a format that can be imported into iMovie or Photos on macOS

Frequently Asked Questions

No — M4V is a passive video container and cannot represent any of SWF's interactive features, including ActionScript logic, clickable buttons, timeline controls, or form elements. FFmpeg treats the SWF as a video source and extracts only the rendered video frames and audio stream. If your SWF is primarily interactive rather than a linear video, the output may be incomplete, static, or very short, capturing only the first frame or a non-interactive render of the content.
SWF animations are often based on vector graphics, which are resolution-independent and stored as mathematical instructions rather than pixel data. When FFmpeg reads an SWF, it rasterizes the vector content at a fixed resolution — typically the SWF's declared stage dimensions — and re-encodes that bitmap output. This means smooth, infinitely scalable Flash vectors become fixed-resolution H.264 frames. The CRF 23 setting is a good quality baseline, but if the source SWF has a small stage size (e.g., 320x240), the output M4V will also be low resolution regardless of the quality setting.
M4V files are almost always larger than equivalent SWF files. SWF stores vector graphics and animation instructions as compact bytecode, which is extremely space-efficient compared to encoding every frame as pixel data. Once the SWF content is rasterized and encoded as H.264 video in an M4V container, you're storing full frame data rather than drawing commands. A 500KB SWF animation could easily produce a 5–20MB M4V depending on duration, stage size, and complexity.
Yes — the -crf flag controls H.264 quality using a scale where lower numbers mean higher quality and larger files, and higher numbers produce smaller files with more compression artifacts. The default of 23 is a sensible midpoint. For archival-quality output from a high-resolution SWF, try -crf 18. For smaller files where some quality loss is acceptable, try -crf 28. You can also raise the audio bitrate from 128k to 192k or 256k by changing the -b:a value if the original SWF has high-fidelity audio.
The displayed command processes one file at a time, but you can adapt it for batch processing in a shell script. On Linux or macOS, use: for f in *.swf; do ffmpeg -i "$f" -c:v libx264 -c:a aac -crf 23 -b:a 128k -movflags +faststart "${f%.swf}.m4v"; done. On Windows Command Prompt: for %f in (*.swf) do ffmpeg -i "%f" -c:v libx264 -c:a aac -crf 23 -b:a 128k -movflags +faststart "%~nf.m4v". This is particularly useful for archiving large collections of legacy Flash content.
M4V and MP4 are nearly identical at the container level — M4V is Apple's branded variant of the MPEG-4 container, and files encoded with H.264 video and AAC audio (as this tool produces) are broadly compatible across platforms. Most non-Apple players, including VLC, Android video apps, and Windows Media Player, will play M4V files without issue. The main exception is Apple's optional FairPlay DRM layer, which this tool does not apply — the output is a standard, unencrypted H.264/AAC file in an M4V wrapper.

Technical Notes

SWF is a notoriously complex input format for FFmpeg because it was designed as a delivery format for the Flash Player runtime, not as a video container. FFmpeg's SWF demuxer has limited support and handles primarily SWF files that embed a linear video stream (FLV1/Sorenson Spark or MJPEG) with MP3 or ADPCM audio. SWF files that are purely vector animation driven by ActionScript may produce empty or zero-duration output, since there is no embedded video stream for FFmpeg to decode. The output M4V uses libx264 at CRF 23, which is well-suited for the typically modest resolutions of Flash-era video content (240p–480p was common). AAC audio at 128k is a significant upgrade from the MP3 streams common in older SWF files and is fully compatible with iTunes, iOS, and macOS. The -movflags +faststart flag is important if the M4V will be served over HTTP, as it moves the moov atom to the beginning of the file so video playback can begin before the full file is downloaded. Note that SWF does not support subtitles, chapters, or multiple audio tracks, so none of M4V's advanced container features (which support all three) will be populated from the source file.

Related Tools