Convert SWF to MXF — Free Online Tool

Convert SWF Flash animations and multimedia files to MXF, a professional broadcast container used in post-production workflows. This tool re-encodes the FLV1 or MJPEG video from the SWF into H.264 (libx264) and upgrades the MP3 audio to uncompressed PCM, making archived Flash content ready for professional editing suites and broadcast ingest systems.

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 encapsulate vector graphics, animation, and multimedia streams — typically using FLV1 (Sorenson Spark) video and MP3 audio — inside a Flash-specific container that modern systems can no longer natively play. During this conversion, FFmpeg demuxes the SWF container and extracts the embedded video and audio streams. The video is fully re-encoded from FLV1 or MJPEG into H.264 using libx264 at a CRF of 23, which produces efficient, high-quality output suitable for professional use. The audio is transcoded from MP3 (lossy) into PCM signed 16-bit little-endian (pcm_s16le), an uncompressed lossless format standard in broadcast MXF workflows. The resulting MXF file is a professional-grade Op1a or similar MXF wrapper compatible with editing tools like Avid Media Composer, Adobe Premiere, and broadcast ingest pipelines — preserving the visual content of the Flash file in a format that does not depend on the Flash runtime.

What Each Flag Does

Flag What it does
ffmpeg Invokes the FFmpeg command-line tool, which handles the demuxing of the SWF container, decoding of its FLV1/MP3 streams, and re-encoding into the MXF output.
-i input.swf Specifies the input SWF file. FFmpeg's SWF demuxer reads the Flash container and identifies the embedded video (typically FLV1 or MJPEG) and audio (typically MP3) elementary streams for decoding.
-c:v libx264 Re-encodes the SWF's video stream using the H.264 encoder (libx264), converting from FLV1 or MJPEG into the modern, broadcast-compatible H.264 codec that MXF ingest systems universally support.
-c:a pcm_s16le Transcodes the SWF's MP3 audio into uncompressed PCM signed 16-bit little-endian audio, which is the standard uncompressed audio format expected in professional MXF broadcast workflows and eliminates any further lossy compression on the audio track.
-crf 23 Sets the H.264 Constant Rate Factor to 23 — the libx264 default — which targets a visually good quality level suitable for archival and professional review without producing unnecessarily large files; lower values (e.g., 15) increase quality and file size.
-b:a 192k Specifies a 192k audio bitrate target; while this parameter has no effect on the uncompressed pcm_s16le stream (which ignores bitrate targeting), it is included for pipeline consistency and would take effect if the audio codec were switched to a compressed format like AAC.
output.mxf Defines the output filename and tells FFmpeg to wrap the encoded H.264 video and PCM audio into an MXF container, which is the professional broadcast format used by Avid, broadcast playout systems, and post-production facilities.

Common Use Cases

  • Archiving legacy Flash animations or training videos from early 2000s websites into a broadcast-safe format for institutional media libraries
  • Ingesting SWF-based video content captured or exported from Flash authoring tools into Avid Media Composer or similar NLE systems that require MXF
  • Preparing Flash video content for broadcast playout by converting it to an MXF container with uncompressed PCM audio, meeting typical broadcast audio delivery specs
  • Recovering and preserving SWF advertising or promotional video content — originally created for web distribution — into a professional archive format before the source Flash assets are lost
  • Converting SWF e-learning or presentation videos into MXF so they can be re-edited, dubbed, or repurposed in a professional post-production environment
  • Delivering Flash-originated video content to a broadcast facility or post house that requires MXF with H.264 video and uncompressed audio as part of their ingest specification

Frequently Asked Questions

Some quality loss is unavoidable because the SWF's original video (typically FLV1/Sorenson Spark) is lossy to begin with, and re-encoding it to H.264 introduces another generation of compression. At the default CRF of 23, libx264 produces visually high-quality output that is generally indistinguishable from the source for most content, but pixel-perfect lossless reproduction is not possible with this pipeline. If the SWF contains MJPEG video instead of FLV1, quality retention is typically better since MJPEG frames are individually compressed and H.264 at CRF 23 will easily match or exceed the original fidelity. Lowering the CRF value (e.g., to 15 or 10) will reduce compression further at the cost of a larger file.
MXF is a professional broadcast format and the overwhelming convention in broadcast and post-production is to carry uncompressed or lightly compressed audio — MP3 is not an accepted audio codec in most MXF broadcast delivery specifications. PCM signed 16-bit little-endian (pcm_s16le) is a lossless, uncompressed audio format that ensures full compatibility with editing tools like Avid, Final Cut Pro, and broadcast playout servers. While this does mean the audio is transcoded (introducing a one-time decode of the lossy MP3), the output PCM audio will carry every bit of information that survived in the MP3 with no further degradation.
Yes — the video quality is controlled by the -crf flag, which uses H.264's Constant Rate Factor scale. The default is 23, which is a good balance between file size and quality. To get higher quality, lower the number: -crf 15 produces noticeably sharper output, and -crf 0 is mathematically lossless (though very large). To prioritize smaller file sizes, raise the value: -crf 28 or -crf 35 will compress more aggressively. For professional broadcast delivery, values between 15 and 20 are common. You can also switch the video codec to mpeg2video (replacing -c:v libx264) if your broadcast ingest system specifically requires MPEG-2 in MXF.
No — MXF is a purely audio/video container and has no mechanism to carry Flash's vector graphics engine, ActionScript code, or interactive elements. Only the rasterized video frames and audio streams embedded in the SWF are extracted and re-encoded. If the SWF was primarily vector animation with no pre-rendered video track, the output quality will depend entirely on how FFmpeg rasterizes those frames, and interactive features will be permanently lost. MXF is intended for linear media, so this conversion is best suited for SWF files that contain actual video/audio content rather than purely interactive Flash applications.
On Linux or macOS, you can loop over all SWF files in a directory with a shell one-liner: for f in *.swf; do ffmpeg -i "$f" -c:v libx264 -c:a pcm_s16le -crf 23 -b:a 192k "${f%.swf}.mxf"; done. On Windows Command Prompt, use: for %f in (*.swf) do ffmpeg -i "%f" -c:v libx264 -c:a pcm_s16le -crf 23 -b:a 192k "%~nf.mxf". The browser-based tool processes one file at a time, so the FFmpeg desktop command is the recommended approach for batch workflows involving large collections of archived SWF files.
SWF files are often compact because they use Flash's native vector compression, store animation as mathematical instructions rather than pixel frames, and use lossy MP3 audio. MXF with H.264 video stores rasterized pixel frames (even though H.264 compresses them efficiently), and the audio is now uncompressed PCM — which alone is many times larger than MP3 at equivalent duration. A 5-minute SWF might be a few megabytes while the MXF output could be tens to hundreds of megabytes, depending on resolution and frame rate. This size increase is expected and is a direct result of the shift from a web-delivery format to a professional broadcast-production format.

Technical Notes

SWF files present several technical challenges for conversion. FFmpeg's SWF demuxer can extract embedded FLV1 (Sorenson Spark H.263 variant) or MJPEG video streams and MP3 or AAC audio, but it cannot render vector graphics or ActionScript animations — those require a full Flash runtime. If the SWF contains only vector/timeline animation without a pre-encoded video track, FFmpeg may produce unexpected results or fail to extract usable video. The output MXF uses the Op1a operational pattern by default with libx264 video and pcm_s16le audio, which is broadly compatible with Avid Media Composer, Adobe Premiere Pro, and most broadcast ingest systems. Note that MXF does not support transparency (alpha channels), but SWF's transparency features would not survive this pipeline regardless. The -b:a 192k flag is technically redundant for pcm_s16le since PCM is uncompressed and ignores bitrate targeting, but it is harmless. If your delivery spec requires PCM at 24-bit depth, substitute -c:a pcm_s24le for higher dynamic range headroom. Timecode metadata from the SWF source is not preserved, as SWF does not carry broadcast timecode; you may need to set timecode manually in your NLE after ingest.

Related Tools