Convert RM to TS — Free Online Tool

Convert RealMedia (.rm) files to MPEG-2 Transport Stream (.ts) format, re-encoding the legacy RealVideo/RealAudio content into broadcast-ready H.264 video and AAC audio. This is especially useful for rescuing archival streaming-era media from the late 1990s and 2000s and making it compatible with modern broadcast pipelines, HLS streaming, and media servers.

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 proprietary RealVideo and RealAudio codecs that are largely unsupported by modern players and broadcast systems. Because these codecs are incompatible with the MPEG-2 Transport Stream container, a full re-encode is required — there is no simple remux option here. FFmpeg decodes the RealVideo and RealAudio streams from the .rm file and re-encodes them from scratch: video is encoded to H.264 using libx264 with a CRF of 23 (a visually transparent quality level), and audio is encoded to AAC at 128k bitrate. The output .ts file uses a packetized transport stream structure, which segments the data into fixed-size 188-byte packets — the standard for broadcast television and HLS-compatible streaming.

What Each Flag Does

Flag What it does
ffmpeg Invokes the FFmpeg binary — the open-source multimedia processing engine running here as WebAssembly in your browser via FFmpeg.wasm. The same command works identically on desktop FFmpeg installations for files over 1GB.
-i input.rm Specifies the input RealMedia file. FFmpeg will use its librm demuxer to parse the proprietary RealMedia container and extract the RealVideo and RealAudio elementary streams for decoding.
-c:v libx264 Re-encodes the decoded RealVideo stream using the libx264 H.264 encoder, replacing the proprietary RealVideo codec with a universally compatible format required by the MPEG-2 Transport Stream container.
-c:a aac Re-encodes the decoded RealAudio stream to AAC using FFmpeg's native AAC encoder, producing an audio stream that is valid within an MPEG-2 TS container and compatible with broadcast and HLS workflows.
-crf 23 Sets the Constant Rate Factor for the H.264 video encode to 23, a broadly balanced quality level. Lower values (e.g., 18) produce higher quality and larger files — useful when the source .rm has enough resolution to justify it.
-b:a 128k Sets the AAC audio output bitrate to 128 kilobits per second, a standard quality level suitable for most speech and music content from the streaming-era RealAudio sources this conversion typically handles.
output.ts Specifies the output filename and tells FFmpeg to use the MPEG-2 Transport Stream muxer, packaging the H.264 video and AAC audio into 188-byte TS packets compatible with broadcast systems, HLS streaming, and modern media players.

Common Use Cases

  • Digitally archiving old RealMedia news clips, lectures, or webcasts from the late 1990s and early 2000s into a format compatible with modern broadcast and streaming infrastructure.
  • Preparing legacy corporate training videos stored in .rm format for ingestion into a modern video-on-demand platform that requires H.264-in-TS as its upload format.
  • Converting RealMedia recordings of live events or concerts for use as source segments in an HLS (HTTP Live Streaming) workflow, which requires .ts segment files.
  • Migrating a library of .rm files from an old RealPlayer-era media server to a modern broadcast encoder or playout system that expects MPEG-2 Transport Stream input.
  • Recovering watchable video from .rm files found on old hard drives or CD-ROMs where RealPlayer is no longer available, producing a universally compatible .ts file playable on virtually any modern device.
  • Pre-processing .rm source footage for editing in broadcast-oriented non-linear editors that accept MPEG-2 TS as an interchange format.

Frequently Asked Questions

Yes, some quality loss is unavoidable because this conversion requires a full re-encode of both video and audio — you cannot simply rewrap a .rm file into a .ts container. The original RealVideo and RealAudio content was already lossy-compressed, so you are decoding that lossy data and re-encoding it again with H.264 and AAC. Using CRF 23 (the default) produces visually good results for most archival content, but if the source .rm file was already heavily compressed or low resolution (as many streaming-era files were), the output quality is ultimately limited by the source. Lowering the CRF value toward 18 will preserve more detail at the cost of a larger file.
RealMedia files use proprietary RealVideo and RealAudio codecs that are not valid elementary stream types within an MPEG-2 Transport Stream. The TS container specification only supports a defined set of stream types — primarily MPEG-2 video, H.264, H.265, AAC, AC-3, and similar broadcast codecs. Because RealVideo is not one of these, FFmpeg must fully decode and re-encode the streams. There is no copy-stream shortcut for this format pair.
The video quality is controlled by the -crf flag. CRF stands for Constant Rate Factor and ranges from 0 (lossless) to 51 (worst quality) for libx264. The default of 23 is a balanced starting point, but for archival conversions of already-compressed RealMedia files, lowering it to 18 or 20 will help retain more detail during the re-encode. For example, replace '-crf 23' with '-crf 18' in the command. You can also change the audio bitrate by replacing '-b:a 128k' with a higher value like '-b:a 192k' for better audio fidelity.
Yes. MPEG-2 Transport Stream with H.264 video and AAC audio is precisely the format that HLS (HTTP Live Streaming) requires for its media segments. The output of this conversion is directly usable as HLS segment content, making it straightforward to take converted .rm archives and serve them through an HLS pipeline. You would typically use a tool like ffmpeg's hls muxer or a packaging tool to split the .ts into timed segments and generate an .m3u8 playlist.
Mostly no. RealMedia files can store metadata in proprietary RealNetworks-specific metadata fields that do not map cleanly to standard TS metadata structures. FFmpeg will attempt to transfer any standard key-value metadata it can parse, but the MPEG-2 Transport Stream format has limited metadata support compared to containers like MKV or MP4, and does not support chapters. Critically, RM files also do not support subtitles, so no subtitle data will be lost either — but you should not expect rich metadata to survive this conversion intact.
Yes. On Linux or macOS, you can loop over all .rm files in a directory with a shell one-liner: 'for f in *.rm; do ffmpeg -i "$f" -c:v libx264 -c:a aac -crf 23 -b:a 128k "${f%.rm}.ts"; done'. On Windows PowerShell, use: 'Get-ChildItem *.rm | ForEach-Object { ffmpeg -i $_.Name -c:v libx264 -c:a aac -crf 23 -b:a 128k ($_.BaseName + ".ts") }'. The browser-based tool on this page processes one file at a time, but copying the FFmpeg command and running it locally is the recommended approach for batch jobs or files larger than 1GB.

Technical Notes

RealMedia was designed exclusively for low-bitrate internet streaming in an era of dial-up and early broadband connections, so most .rm files you encounter will have low resolutions (240p–480p), low frame rates, and heavy compression artifacts baked into the source — the re-encode to H.264 cannot recover lost detail. The libx264 encoder used here is far more efficient than the original RealVideo codec, meaning the output .ts file will likely be larger than the input .rm at equivalent visual quality, because RealVideo was tuned for extreme compression at the expense of quality. The MPEG-2 Transport Stream container is inherently designed for transmission reliability — its 188-byte packet structure includes error correction data and is robust to partial data loss, making it well-suited for broadcast and streaming but slightly less efficient than MP4 as a pure storage format. One important limitation: RealMedia's DRM-protected .rm files (commonly from commercial RealPlayer content) cannot be decoded by FFmpeg and will fail to convert. Only unprotected .rm files are supported by this tool.

Related Tools