Convert SWF to WTV — Free Online Tool

Convert SWF Flash animations and multimedia content to WTV format using H.264 video encoding and AAC audio — making legacy Flash files compatible with Windows Media Center's DVR container. This tool runs entirely in your browser using FFmpeg.wasm, so no files leave your device.

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 store content using Flash-native codecs — typically FLV1 (Sorenson Spark) video and MP3 audio — inside Adobe's proprietary container. Since WTV requires codecs compatible with Windows Media Center's broadcast recording infrastructure, this conversion fully re-encodes the video stream from FLV1 to H.264 (libx264) and transcodes the audio from MP3 to AAC. There is no remuxing shortcut here: both the video and audio must be decoded and re-encoded because neither FLV1 video nor the SWF container structure is natively compatible with WTV. The output is a WTV file with a CRF 23 H.264 video stream and 128k AAC audio, which WTV supports alongside its metadata embedding and multiple audio track features.

What Each Flag Does

Flag What it does
ffmpeg Invokes the FFmpeg tool, which handles all demuxing, decoding, encoding, and muxing operations needed to transform the SWF input into a WTV output.
-i input.swf Specifies the input SWF file. FFmpeg uses its SWF demuxer to parse the Flash container and extract the embedded FLV1 or MJPEG video and MP3 or AAC audio streams for processing.
-c:v libx264 Instructs FFmpeg to re-encode the video stream using the libx264 H.264 encoder, which is required because FLV1 (the typical SWF video codec) is not a valid codec inside the WTV container.
-c:a aac Transcodes the audio stream to AAC using FFmpeg's built-in AAC encoder, matching WTV's default and preferred audio codec for broadcast-style recordings.
-crf 23 Sets the Constant Rate Factor for the H.264 encode to 23, which is libx264's default quality level — balancing visual quality and file size. Lower values (e.g., 18) produce higher quality and larger files; higher values (e.g., 28) reduce file size at the cost of quality.
-b:a 128k Sets the AAC audio bitrate to 128 kilobits per second, a standard quality level that preserves most of the audio detail from the original SWF's MP3 audio while keeping the WTV file size manageable.
output.wtv Defines the output filename and tells FFmpeg to mux the encoded H.264 video and AAC audio into a WTV container, which structures the data in the format expected by Windows Media Center.

Common Use Cases

  • Archiving legacy Flash-based educational content or training videos from the pre-HTML5 era into a DVR-compatible format before Flash support is fully removed from all systems
  • Preserving SWF-based animated advertisements or promotional reels into WTV for playback and review through Windows Media Center on older enterprise setups
  • Converting Flash-based broadcast-style video presentations into WTV so they can be catalogued alongside recorded TV content in a Windows Media Center library
  • Migrating animated SWF explainer videos into a container that supports multiple audio tracks, enabling future dubbing or commentary tracks to be added within the WTV wrapper
  • Extracting and re-encoding Flash video content embedded in SWF files into a standardised H.264/AAC package that media archivists can store in WTV alongside other broadcast recordings

Frequently Asked Questions

No — WTV is a linear video container designed for recorded broadcast TV, so it cannot represent SWF's vector graphics, ActionScript interactivity, or timeline-based animation logic. FFmpeg rasterizes the SWF content by rendering it as a pixel-based video stream, capturing only what is visually displayed. All interactive elements, clickable regions, and scripted behaviors are permanently lost in the output WTV file.
SWF files typically carry FLV1 (Sorenson Spark) video, which is not a supported codec inside the WTV container. WTV is built around codecs used in Windows broadcast recording pipelines, principally H.264 and MPEG-2. Because FLV1 cannot be placed directly into a WTV wrapper, FFmpeg must fully decode the FLV1 stream and re-encode it as H.264 using libx264, which does introduce a generation of lossy compression.
CRF 23 is libx264's default and produces visually good quality for most content, but because FLV1 is already a lossy codec, you are decoding a compressed source and re-encoding it — a double-lossy process. For SWF files containing simple flat-color Flash animations, the quality loss is typically negligible because H.264 handles that type of content very efficiently. For SWF files that embed pre-compressed video footage, you may notice some degradation. Lowering the CRF value (e.g., to 18) in the FFmpeg command will reduce quality loss at the cost of a larger file.
SWF files carry very limited standardized metadata — generally no title, artist, or description fields in the way MP4 or MKV containers do. WTV supports rich metadata embedding (title, channel, broadcast time, etc.) as part of its DVR design, but FFmpeg does not synthesize broadcast metadata from SWF content. The resulting WTV file will have minimal metadata unless you manually add tags using FFmpeg's -metadata flag alongside the conversion command.
Yes — the -b:a 128k flag sets the AAC audio bitrate to 128 kilobits per second, which is adequate for most speech and music. If your SWF contains high-quality music or audio that was encoded at a higher MP3 bitrate, you can raise this to -b:a 192k or -b:a 256k to improve fidelity. Conversely, if the SWF only contains speech or simple sound effects, -b:a 96k will reduce file size with little perceptible difference.
On Windows, you can use a simple batch script: place all your SWF files in a folder and run 'for %f in (*.swf) do ffmpeg -i "%f" -c:v libx264 -c:a aac -crf 23 -b:a 128k "%~nf.wtv"' from the Command Prompt. On Linux or macOS, use 'for f in *.swf; do ffmpeg -i "$f" -c:v libx264 -c:a aac -crf 23 -b:a 128k "${f%.swf}.wtv"; done' in a terminal. This is particularly useful for large collections or files over 1GB that exceed the browser tool's processing comfort zone.

Technical Notes

SWF is a proprietary Adobe container that bundles vector graphics, FLV1 or MJPEG video, and MP3 or AAC audio with Flash-specific metadata and scripting bytecode. FFmpeg's SWF demuxer can extract the embedded audio and video streams but cannot execute ActionScript or render dynamic vector content frame-by-frame in the same way a Flash runtime would — what you get in the output is FFmpeg's best linear rendering of the SWF's media streams. WTV (Windows Television) is a Microsoft-proprietary container introduced in Windows Vista Media Center, structured around broadcast recording use cases; it supports H.264 and MPEG-2 video with AAC or MP3 audio, subtitle tracks, and multiple audio streams. One notable limitation is that WTV files are primarily intended for consumption by Windows Media Center and compatible players — they are not as universally playable as MP4 or MKV, so the WTV output may not open in all media players without codec packs. If your SWF source has no video stream and is audio-only, the command will still function but you should verify the output with -vn to skip video encoding. Transparency in SWF (common in overlay animations) is not preserved, as WTV has no alpha channel support.

Related Tools