Flash Is Dead — Your SWF Files Are Not
Adobe Flash Player reached its official end of life on December 31, 2020. Every major browser has removed Flash support, and Adobe itself blocks Flash content from running. If you have SWF files — animations, interactive presentations, games, or video content — they are effectively trapped in a format that nothing can play.
Converting SWF to MP4 is the most practical way to preserve this content. However, SWF conversion is more nuanced than typical video format conversion because SWF files come in two fundamentally different types: video SWFs (which contain embedded FLV/H.264 video streams) and vector SWFs (which contain programmatic animations rendered by the Flash Player runtime).
This guide covers both types and explains the best approach for each.
Understanding SWF File Types
| Type | Contents | Conversion Method |
|---|---|---|
| Video SWF | Embedded FLV or H.264 stream | Direct extraction or re-encode |
| Animation SWF | Vector graphics, ActionScript | Screen recording or runtime rendering |
| Interactive SWF | Games, apps, UI elements | Screen recording only |
| Slideshow SWF | Static frames with transitions | Frame extraction + video assembly |
Check what type of SWF you have:
ffprobe -v error -show_streams input.swf
If FFmpeg detects video and audio streams, you have a video SWF and can convert it directly. If it shows no streams or only minimal data, you have a vector/interactive SWF that requires a different approach.
Method 1: Converting Video SWFs with FFmpeg
For SWF files that contain embedded video streams (common for Flash video players from the YouTube/Vimeo era):
ffmpeg -i input.swf -c:v libx264 -crf 20 -preset medium \
-c:a aac -b:a 128k -movflags +faststart output.mp4
If the SWF contains an H.264 stream that is MP4-compatible, you can try copying it:
ffmpeg -i input.swf -c:v copy -c:a aac -b:a 128k output.mp4
Extracting the Embedded FLV
Some SWF files wrap an FLV file that can be extracted first, then converted:
# Extract the FLV
ffmpeg -i input.swf -c copy extracted.flv
# Convert FLV to MP4
ffmpeg -i extracted.flv -c:v libx264 -crf 20 \
-c:a aac -b:a 128k -movflags +faststart output.mp4
For more on FLV conversion, see our guide on how to convert FLV to MP4.
Method 2: Rendering Animation SWFs
Vector animation SWFs cannot be directly converted by FFmpeg because the content is not pre-rendered video — it is a set of drawing instructions that the Flash Player executes at runtime. You need a Flash runtime to render the frames.
Using Ruffle (Open Source Flash Emulator)
Ruffle is an open-source Flash Player emulator written in Rust. It can run SWF files in a desktop window, which you can then screen-record:
- Download and install Ruffle desktop
- Open your SWF file with Ruffle
- Use a screen recorder to capture the playback as MP4
Using FFmpeg Screen Capture
On Linux, you can automate this with FFmpeg's screen capture:
# Start Ruffle in the background, then capture
ffmpeg -f x11grab -framerate 30 -video_size 800x600 \
-i :0.0+100,200 -c:v libx264 -crf 18 output.mp4
Adjust the position offset (+100,200) and size (800x600) to match your Ruffle window.
Using JPEXS Free Flash Decompiler
JPEXS can export SWF animations frame-by-frame as PNG sequences, which you then assemble into video:
# After exporting frames as frame_001.png, frame_002.png, etc.
ffmpeg -framerate 24 -i "frame_%03d.png" \
-c:v libx264 -crf 18 -pix_fmt yuv420p output.mp4
Set the -framerate to match the SWF's original frame rate (commonly 12, 24, or 30 fps).
Online Conversion
For video-type SWF files, use the Video Converter online to convert directly to MP4 without installing any tools.
Quality and Settings Tips
Frame rate: Flash animations commonly run at 12, 15, 24, or 30 fps. When assembling from frame sequences, matching the original frame rate is critical — using the wrong rate makes the animation play too fast or too slow. Check the original SWF's frame rate with JPEXS or SWFTools (swfdump -X input.swf).
Resolution: SWF vector animations are resolution-independent. When screen-recording or exporting frames, you can render at any resolution. For archival purposes, render at 1080p (1920x1080) if the content fills the frame. For web use, 720p is typically sufficient.
Audio: Flash animations often have event-based sound effects and background music stored in MP3 or ADPCM format. These get captured during screen recording. If you need to extract audio separately, JPEXS can export individual sound assets from the SWF.
Interactivity: Interactive SWF content (games, quizzes, navigation) cannot be fully captured as video since the experience depends on user input. Record a walkthrough showing the key interactions, or consider preserving the SWF in its original form using Ruffle for future playback.
For video compression settings, check our guide on how to compress video without losing quality.
Common Issues and Troubleshooting
FFmpeg fails to detect any streams
This means the SWF is a vector animation, not a video container. FFmpeg cannot convert it directly — use the Ruffle screen recording or JPEXS frame export method described above.
Audio plays but video is blank
Some SWF files use the Flash drawing API for visuals rather than embedded video frames. FFmpeg extracts the audio but has nothing to render for video. Use the screen recording method instead.
Converted video is only a few seconds long
Video SWF files sometimes have a short preloader or splash screen as the "video" portion, while the main content is ActionScript-driven animation. The few seconds FFmpeg extracts is just the preloader. Use Ruffle to play the full content and screen-record it.
Low quality from screen recording
Increase the recording resolution and use a lower CRF (e.g., 16-18). Screen recordings compress well because Flash animations have large areas of flat color, so the file size stays reasonable even at high quality settings.
Preserving Flash Content for the Future
Beyond conversion to MP4, consider these preservation strategies:
- Keep the original SWF alongside the MP4 — future emulators may render it better
- Use Ruffle for interactive content that loses meaning as linear video
- Archive to the Internet Archive's Flash collection, which uses Ruffle for in-browser playback
- Document the original frame rate and resolution in the MP4 file's metadata
Conclusion
Converting SWF to MP4 depends entirely on what type of SWF you have. Video SWFs with embedded streams convert directly through FFmpeg in seconds. Vector animation SWFs require a Flash runtime (Ruffle) to render the content, which you then capture as video. Interactive SWFs are best preserved in their original form using emulators, with video walkthroughs for reference.
Ready to convert? Try our free Video Converter — no registration required.



