Convert 3GPP to RMVB — Free Online Tool

Convert 3GPP mobile video files to RMVB format, re-encoding the video stream with H.264 (libx264) and audio with AAC — transitioning from a 3G-era mobile container to RealNetworks' variable bitrate format optimized for compressed video distribution. This is useful for archiving or sharing mobile-captured footage in a legacy streaming format still common in certain media libraries.

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

3GPP files use H.264 or MJPEG video with AAC or MP3 audio in a container designed for constrained mobile bandwidth. RMVB (RealMedia Variable Bitrate) uses a fundamentally different container structure developed by RealNetworks, so a full re-encode is required — there is no simple remux path. During conversion, the video stream is re-encoded using libx264 with a CRF of 23, which targets a consistent perceptual quality level rather than a fixed bitrate. The audio is re-encoded to AAC at 128k, a higher default than 3GPP's typical 64k, so audio quality may actually improve. The RMVB container does not support the `-movflags +faststart` optimization present in 3GPP output, as that flag is specific to MP4-family containers.

What Each Flag Does

Flag What it does
ffmpeg Invokes the FFmpeg binary. In the browser-based tool, this runs via FFmpeg.wasm (WebAssembly) entirely client-side — no file data is sent to a server.
-i input.3gp Specifies the input 3GPP file. FFmpeg reads both the video stream (typically H.264 or MJPEG from a mobile device) and the audio stream (typically AAC at low bitrate) from this container.
-c:v libx264 Re-encodes the video stream using the libx264 H.264 encoder. This is necessary because RMVB requires a full transcode — there is no direct remux path from the 3GPP container to RMVB, and RealVideo encoding is not available in FFmpeg.
-c:a aac Re-encodes the audio stream to AAC using FFmpeg's native AAC encoder. Even if the 3GPP source already contains AAC audio, the audio must be re-encoded because the container format change and bitrate adjustment to 128k require a new encode pass.
-crf 23 Sets the Constant Rate Factor for the libx264 video encode to 23, which is the standard default balancing perceptual quality and file size. Lower values (e.g., 18) will produce higher quality at larger file sizes, which may be worthwhile when upscaling from a low-bitrate 3GPP source.
-b:a 128k Sets the AAC audio bitrate to 128 kilobits per second — double the 64k default used for 3GPP mobile output. This improves audio clarity in the RMVB output compared to the original mobile-optimized source file.
output.rmvb Specifies the output filename with the .rmvb extension, which tells FFmpeg to use the RealMedia Variable Bitrate muxer to wrap the re-encoded H.264 video and AAC audio streams into the RMVB container format.

Common Use Cases

  • Importing old mobile phone video clips recorded in 3GPP format into a legacy media library or archive that organizes content in RMVB format
  • Sharing mobile-captured footage on forums or platforms where RMVB was historically the standard compressed video format, particularly in East Asian media communities
  • Converting low-bitrate 3GPP videos to RMVB to take advantage of variable bitrate encoding, which can allocate more bits to complex scenes while keeping file sizes manageable
  • Preparing 3G-era mobile recordings for playback in older media players like RealPlayer that are configured to handle RMVB files natively
  • Consolidating a mixed collection of mobile video formats into a single RMVB archive for long-term storage or distribution via legacy peer-to-peer networks
  • Re-encoding 3GPP footage with higher audio bitrate (128k AAC vs the original 64k default) while packaging it in RMVB for improved audio fidelity in the output

Frequently Asked Questions

Because both the input and output involve lossy compression, this conversion is a lossy-to-lossy transcode — some quality degradation is mathematically unavoidable. However, 3GPP files are often already highly compressed for mobile use, so the H.264 re-encode at CRF 23 may produce a result that looks similar or even cleaner due to the more controlled encoding settings. If your source 3GPP file was recorded at very low bitrate on a mobile device, the conversion cannot recover detail that was never captured.
Modern FFmpeg does not include a native RealVideo encoder, so libx264 (H.264) is used as the video codec inside the RMVB container. This is a pragmatic approach: the RMVB container can technically wrap H.264 streams, and the resulting file will play in players that support both the container and the codec. However, some very old or strict RealPlayer versions may expect native RealVideo codec streams and could refuse to play the file.
Change the `-crf 23` value in the command. CRF (Constant Rate Factor) controls perceptual quality: lower values mean higher quality and larger files, while higher values reduce quality and file size. For a 3GPP source that was already heavily compressed, a CRF of 18–20 will preserve more detail, while values above 28 will introduce noticeable blocking artifacts. For example: `ffmpeg -i input.3gp -c:v libx264 -c:a aac -crf 18 -b:a 128k output.rmvb`.
Yes. On Linux or macOS, you can use a shell loop: `for f in *.3gp; do ffmpeg -i "$f" -c:v libx264 -c:a aac -crf 23 -b:a 128k "${f%.3gp}.rmvb"; done`. On Windows Command Prompt, use: `for %f in (*.3gp) do ffmpeg -i "%f" -c:v libx264 -c:a aac -crf 23 -b:a 128k "%~nf.rmvb"`. The browser-based tool processes one file at a time, so the FFmpeg command is the recommended approach for bulk conversions.
3GPP containers can store mobile-specific metadata such as recording timestamp, GPS coordinates, and device information. RMVB has a very limited metadata model compared to modern containers, and FFmpeg does not map 3GPP-specific mobile metadata fields to RMVB equivalents during this conversion. Standard tags like title may partially transfer, but mobile-specific fields will be lost. If preserving this metadata is important, consider extracting it with a tool like ExifTool before converting.
3GPP was designed for 3G mobile networks where bandwidth was severely constrained, so 64k AAC was the default to keep file sizes small enough for streaming over cellular connections. RMVB targets general compressed video distribution without the same bandwidth constraints, so 128k AAC is the default to deliver better audio clarity. This means the RMVB output will typically have noticeably better audio quality than the original 3GPP file, at the cost of a slightly larger file.

Technical Notes

The RMVB container is a legacy format with limited active development, and FFmpeg's RMVB muxer support is functional but minimal compared to its MP4 or MKV support. Notably, RMVB does not support the `-movflags +faststart` optimization that 3GPP output uses — that flag is exclusive to the MP4/MOV container family and is not included in this command. The variable bitrate nature of RMVB is more a container-level description of how RealVideo streams behaved natively; when wrapping H.264 with CRF encoding, the bitrate is already inherently variable due to CRF's design. Neither 3GPP nor RMVB supports subtitle tracks, chapters, or multiple audio tracks in FFmpeg's implementation, so no data of those types will be lost or need special handling. RMVB files produced by FFmpeg with H.264 video may not play correctly in very old standalone RealPlayer installations that predate H.264 support in the RealMedia ecosystem. Modern media players such as VLC and MPC-HC handle these files reliably.

Related Tools