Convert SWF to RM — Free Online Tool

Convert SWF (Shockwave Flash) files to RealMedia (.rm) format directly in your browser, transcoding Flash's FLV1/MP3 streams into MJPEG video and AAC audio for legacy RealPlayer compatibility. This conversion bridges two obsolete-but-persistent formats, making archived Flash content accessible in RealMedia-based systems without any server upload.

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 FLV1 (Sorenson Spark) video and MP3 audio streams inside Adobe's Flash container. Since RealMedia only supports MJPEG for video, FFmpeg must fully decode the FLV1 video frames and re-encode every frame as a MJPEG still image sequence — this is a full transcode, not a remux. The MP3 audio is similarly decoded and re-encoded into AAC, which is the default audio codec for the RM container in this configuration. Both re-encoding steps introduce generation loss, so quality settings matter. The resulting .rm file is wrapped in RealNetworks' proprietary container, historically designed for progressive streaming over low-bandwidth internet connections.

What Each Flag Does

Flag What it does
ffmpeg Invokes the FFmpeg tool, which handles all decoding, transcoding, and muxing for this SWF-to-RM conversion entirely within your browser via WebAssembly (FFmpeg.wasm), or on your local machine if run in a terminal.
-i input.swf Specifies the input SWF file. FFmpeg will demux the Flash container and expose the internal FLV1 video and MP3 (or AAC) audio streams for decoding and re-encoding.
-c:v mjpeg Sets the video codec to MJPEG (Motion JPEG), which is required because RealMedia does not support FLV1 (the native SWF video codec). Every video frame from the SWF is decoded and re-encoded as an individual JPEG image.
-c:a aac Sets the audio codec to AAC, which is the default audio codec for this RM output. The source audio (typically MP3 in SWF) is fully decoded and re-encoded to AAC, as required by this RealMedia configuration.
-q:v 5 Sets the MJPEG video quality on a scale of 1 (highest quality, largest file) to 10 (lowest quality, smallest file). A value of 5 is the balanced default; lower values are recommended if the SWF contains fine animation detail that needs to survive the vector-to-raster conversion cleanly.
-b:a 128k Sets the AAC audio bitrate to 128 kilobits per second, a standard quality level suitable for music and voice content. Since the SWF audio is already lossy MP3, this represents a second round of lossy encoding — increasing to 192k or 256k can help minimize audible degradation.
output.rm Specifies the output filename with the .rm extension, instructing FFmpeg to wrap the MJPEG video and AAC audio streams into the RealMedia proprietary container format developed by RealNetworks.

Common Use Cases

  • Archiving legacy Flash-based educational animations into RealMedia format for institutions that still maintain RealPlayer-based content management or intranet streaming systems from the early 2000s.
  • Converting SWF promotional videos or product demos from defunct websites into RM format for inclusion in historical media archives that catalogue late-1990s and early-2000s internet content.
  • Preparing Flash cartoon or animation clips for playback on older set-top boxes, kiosk hardware, or industrial media players that support RealMedia but cannot play SWF files after Flash's end-of-life.
  • Migrating SWF-based e-learning modules into RM files for legacy LMS (Learning Management System) platforms that were built around RealMedia streaming before modern video formats became standard.
  • Extracting the video content from a SWF file and re-encoding it as a MJPEG-in-RM file to use as a reference master in editing workflows that require frame-accurate MJPEG sources.
  • Reproducing the authentic late-1990s streaming video aesthetic — MJPEG video in a RealMedia container — for retro media art projects or period-accurate multimedia presentations.

Frequently Asked Questions

SWF files use FLV1 (Sorenson Spark) as their primary video codec, which is not supported by the RealMedia container at all. RM only supports MJPEG for video in this configuration, so FFmpeg must fully decode every FLV1 frame and re-encode it as a MJPEG image — there is no shortcut remux path available. The same applies to audio: SWF typically carries MP3, while the RM output here uses AAC, requiring a full audio transcode as well.
There will be some quality loss since both the video and audio are fully re-encoded. MJPEG encodes each video frame independently as a JPEG image, so it does not benefit from inter-frame compression the way FLV1 does — this means the RM file will likely be significantly larger than the source SWF for the same visual quality. At the default -q:v 5 setting, quality is moderate; lower values (e.g., 1–2) produce sharper frames at the cost of much larger file sizes. SWF content with fine vector-based animation may show visible compression artifacts in the MJPEG output that were not present in the original.
No. SWF is an interactive format that can contain ActionScript, clickable buttons, vector graphics, and branching logic. RealMedia is a purely linear video container with no support for interactivity or vector graphics. FFmpeg treats the SWF as a video source, rendering it to a flat raster video stream — all interactivity, scripting, and resolution-independent vector graphics are lost permanently in the conversion.
To change video quality, modify the -q:v value: use 1 or 2 for the highest quality MJPEG output (larger files) or 9–10 for smaller, lower-quality files. For audio, replace 128k in -b:a 128k with a higher bitrate like 192k or 256k for better audio fidelity, or 64k to reduce file size. For example, a high-quality version would be: ffmpeg -i input.swf -c:v mjpeg -c:a aac -q:v 2 -b:a 192k output.rm.
Yes, on a desktop with FFmpeg installed you can use a shell loop. On Linux or macOS: for f in *.swf; do ffmpeg -i "$f" -c:v mjpeg -c:a aac -q:v 5 -b:a 128k "${f%.swf}.rm"; done. On Windows Command Prompt: for %f in (*.swf) do ffmpeg -i "%f" -c:v mjpeg -c:a aac -q:v 5 -b:a 128k "%~nf.rm". The browser-based tool processes one file at a time, but the displayed FFmpeg command is ideal for batch workflows on files larger than 1GB.
The resulting .rm file is designed for RealPlayer, which is still available for download from RealNetworks for Windows and older macOS versions. VLC Media Player also has solid RealMedia playback support and is the most practical modern option. Some older versions of Windows Media Player with the appropriate codec pack could play RM files, but modern browsers and most current media players have dropped native RealMedia support due to its proprietary nature and age.

Technical Notes

RealMedia (.rm) is a proprietary container developed by RealNetworks and was dominant in internet streaming circa 1997–2005. The format has no official public specification, and FFmpeg's RM muxer supports a limited codec set — specifically MJPEG for video and AAC or MP3 for audio in this context. MJPEG stores each frame as an independent JPEG, which means the output file lacks temporal compression; a 30-second animation at 24fps results in 720 individually compressed JPEG frames, making file sizes considerably larger than equivalent FLV1 or H.264 encoded content. The -q:v parameter for MJPEG follows FFmpeg's quality scale where 1 is best and 31 is worst (despite only 1–10 being offered here). Neither SWF nor RM supports subtitle tracks, chapters, or multiple audio streams, so no metadata of those types is lost. Standard metadata fields (title, author) from SWF headers are unlikely to carry over to the RM container due to differing metadata structures. The AAC audio track encoded at 128k provides adequate fidelity for voice and music content; the original SWF's MP3 audio is fully decoded before re-encoding to AAC, introducing a second generation of lossy compression that may be audible on critical listening if the source MP3 was already low-bitrate.

Related Tools