Convert RM to SWF — Free Online Tool

Convert RealMedia (.rm) files to SWF (Shockwave Flash) format, re-encoding the video stream from MJPEG to the FLV1 (Sorenson H.263) codec and transcoding audio to MP3 using the LAME encoder — making legacy streaming content embeddable in Flash-based web players.

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

RealMedia files typically contain MJPEG video and AAC or MP3 audio packaged in RealNetworks' proprietary container. During conversion to SWF, FFmpeg decodes the MJPEG video frames and re-encodes them using the FLV1 (Sorenson H.263) codec, which is the native Flash video codec expected inside SWF containers. The AAC audio track is simultaneously transcoded to MP3 via the LAME encoder, since SWF's most compatible audio format is MP3. The resulting SWF file bundles both streams into Adobe's Small Web Format container, which Flash Player can interpret directly for playback or embedding. Because both video and audio require full re-encoding (not just remuxing), the conversion is computationally intensive and involves some generation of quality loss.

What Each Flag Does

Flag What it does
ffmpeg Invokes the FFmpeg command-line tool, which handles all decoding, encoding, and container muxing. In this browser-based tool, FFmpeg runs locally via WebAssembly (FFmpeg.wasm) — no files leave your machine.
-i input.rm Specifies the input RealMedia file. FFmpeg will demux the proprietary RealNetworks container, exposing the MJPEG video stream and AAC or MP3 audio stream for processing.
-c:v flv1 Sets the output video codec to FLV1 (Sorenson Spark / Sorenson H.263), which is the standard and most compatible video codec for SWF containers. The MJPEG video from the source RM file is fully decoded and re-encoded using this codec.
-c:a libmp3lame Uses the LAME MP3 encoder to transcode the audio track. SWF's primary supported audio format is MP3, so the AAC audio from the RealMedia source is decoded to raw PCM and then re-encoded as MP3 for maximum Flash player compatibility.
-q:v 5 Sets the FLV1 video quality scale to 5 (on a 1–10 range where 1 is highest quality). This is a variable quality mode for the FLV1 encoder; reducing this value to 1 or 2 will produce sharper output at the cost of a larger SWF file.
-b:a 128k Sets the output MP3 audio bitrate to 128 kilobits per second, a standard quality level that balances file size and audio fidelity. For archival use or music-heavy content, consider raising this to 192k or 256k.
output.swf Specifies the output filename with the .swf extension, which tells FFmpeg to mux the encoded FLV1 video and MP3 audio into an Adobe SWF container suitable for Flash-based playback or embedding.

Common Use Cases

  • Archivists recovering early-2000s streaming video content stored in .rm format who need it packaged as SWF for display in Flash-era web archives or emulators like Ruffle.
  • Web developers maintaining legacy Flash-based portals or intranets that require video content delivered as self-contained SWF files rather than external RealMedia streams.
  • Museum or educational institutions digitizing RealMedia lecture recordings or documentaries for integration into Flash-based e-learning platforms still in use.
  • Game modders or interactive media creators who need to embed short video clips sourced from RealMedia files into SWF-based Flash games or interactive presentations.
  • Digital preservationists converting RealNetworks streaming content into SWF so it can be replayed through Flash emulation layers without needing a RealPlayer installation.

Frequently Asked Questions

Yes, this conversion involves lossy-to-lossy re-encoding, which means some quality degradation is unavoidable. The MJPEG video in the .rm file must be fully decoded and re-encoded to FLV1 (Sorenson H.263), and the audio must be transcoded from AAC to MP3. FLV1 is a relatively dated codec compared to MJPEG, so blocky compression artifacts may be more visible at the same file size. To minimize quality loss, lower the -q:v value (e.g., use 1 or 2 instead of 5) and raise the -b:a audio bitrate.
While SWF technically supports MJPEG video encoding, FLV1 (Sorenson H.263) is the canonical and most universally compatible video codec for SWF containers — it's what Flash Player was primarily designed to decode efficiently. Using FLV1 ensures the broadest compatibility with Flash players, emulators like Ruffle, and legacy browsers with Flash plugins. Encoding with MJPEG inside SWF can cause playback issues in many Flash environments.
Native Flash support was removed from all major browsers in December 2020, so the SWF will not play in Chrome, Firefox, Edge, or Safari without additional tools. However, the open-source Flash emulator Ruffle can play many SWF video files directly in modern browsers as a WebAssembly module. For standalone playback, you can use the standalone Adobe Flash Player projector or archive tools that include legacy Flash runtimes.
To adjust video quality, change the -q:v value: lower numbers (e.g., -q:v 1) produce higher quality at larger file sizes, while higher numbers (e.g., -q:v 9) compress more aggressively. For audio, change -b:a to a higher bitrate like 192k or 256k for better fidelity, or 64k to reduce file size. For example: ffmpeg -i input.rm -c:v flv1 -c:a libmp3lame -q:v 2 -b:a 192k output.swf gives noticeably better quality than the defaults.
No. The SWF container format does not support subtitles, embedded chapter markers, or rich metadata fields. Any text tracks or navigational metadata present in the RealMedia file will be discarded during conversion. RealMedia files also frequently carry proprietary RealNetworks metadata (such as author or copyright tags) that has no equivalent field in SWF, so this information will not carry over.
Yes. On Linux or macOS, you can use a shell loop: for f in *.rm; do ffmpeg -i "$f" -c:v flv1 -c:a libmp3lame -q:v 5 -b:a 128k "${f%.rm}.swf"; done. On Windows Command Prompt, use: for %f in (*.rm) do ffmpeg -i "%f" -c:v flv1 -c:a libmp3lame -q:v 5 -b:a 128k "%~nf.swf". This is especially useful when processing large collections of archived RealMedia streaming content.

Technical Notes

The FLV1 codec (also known as Sorenson Spark or Sorenson H.263) is a simplified variant of the H.263 video standard and was the dominant video codec inside Flash content from roughly 2002 to 2008. It is significantly less efficient than modern codecs — expect SWF output files to be larger or of noticeably lower quality than the source RM at equivalent bitrates, because MJPEG (used in RM) preserves full intra-frame detail while FLV1 applies inter-frame prediction with coarser quantization. The -q:v parameter in this context controls FFmpeg's internal quality scale for FLV1, where 1 is highest quality and 10 is lowest; it maps to the codec's quantizer settings rather than a fixed bitrate. Audio transcoding from AAC to MP3 via libmp3lame is generally clean at 128k and above, but introduces a second generation of lossy compression since AAC audio in the source must first be decoded to PCM before being re-encoded as MP3. RealMedia's proprietary streaming features (packet loss recovery, bandwidth-adaptive streaming) are inherently lost in the output, as SWF has no equivalent mechanism. The SWF container does not support multiple audio tracks, so only the first (default) audio stream from the RM file will be included.

Related Tools