Convert 3G2 to SWF — Free Online Tool
Convert 3G2 mobile video files to SWF (Shockwave Flash) format directly in your browser, re-encoding the video stream from H.264 to the FLV1 (Sorenson Spark) codec and transcoding audio from AAC to MP3 using the LAME encoder. This is particularly useful for embedding legacy mobile footage into Flash-based web applications or archived multimedia projects.
to
FFmpeg Command
Copy this command to run the same conversion locally with FFmpeg on your desktop. Download FFmpeg
Drop your 3G2 file here
or click to browse
Free — no uploads, no signups. Your files never leave your browser.
Settings
Note: Browser-based encoding uses approximate quality targets. For precise CRF compression, copy the FFmpeg command above and run it on your desktop.
Estimated output:
Conversion Complete!
DownloadHow It Works
3G2 files typically contain H.264 video and AAC audio, packaged in a container designed for CDMA mobile networks. Since SWF natively supports the FLV1 (Sorenson Spark) codec rather than H.264, this conversion requires a full video re-encode — not a simple remux. FFmpeg decodes the H.264 stream from the 3G2 container and re-encodes it using the FLV1 codec at a quantizer quality level of 5, which balances file size and visual fidelity. The AAC audio track is simultaneously decoded and re-encoded as MP3 using the LAME encoder at 128 kbps, because the SWF format relies on MP3 as its primary audio codec. The output is a self-contained SWF file embedding both the FLV1 video and MP3 audio, suitable for playback in Flash Player or legacy Flash-enabled environments.
What Each Flag Does
| Flag | What it does |
|---|---|
ffmpeg
|
Invokes the FFmpeg command-line tool, which handles the decoding of the 3G2 container, codec transcoding, and writing of the SWF output file. |
-i input.3g2
|
Specifies the input file — a 3G2 container typically holding H.264 video and AAC audio encoded for CDMA mobile transmission. FFmpeg reads and demuxes this file to extract the raw video and audio streams for re-encoding. |
-c:v flv1
|
Sets the output video codec to FLV1 (Sorenson Spark / H.263), which is the standard video codec supported natively within the SWF container format. The H.264 stream from the 3G2 file is fully decoded and re-encoded to FLV1. |
-c:a libmp3lame
|
Uses the LAME encoder to transcode the AAC audio from the 3G2 source into MP3, which is the primary audio format supported by SWF. This is a required step since SWF does not reliably support AAC audio. |
-q:v 5
|
Sets the FLV1 video quality using a quantizer scale from 1 (highest quality, largest file) to 10 (lowest quality, smallest file). A value of 5 represents the default balanced setting — appropriate for typical low-resolution 3G2 mobile footage being repurposed for Flash playback. |
-b:a 128k
|
Sets the MP3 audio output bitrate to 128 kbps, which is a widely accepted standard for CD-quality stereo audio. Given that 3G2 source audio from mobile networks is often recorded at low bitrates, 128 kbps is unlikely to be a bottleneck and will produce clean-sounding output in the SWF file. |
output.swf
|
Specifies the output filename and tells FFmpeg to write an SWF (Shockwave Flash) container file embedding the newly encoded FLV1 video and MP3 audio streams. |
Common Use Cases
- Embedding archived mobile video clips recorded on early 2000s CDMA phones into Flash-based CD-ROM presentations or legacy interactive kiosks
- Migrating old 3G2 footage captured on Verizon or Sprint feature phones into SWF files for playback within legacy Flash web portals that predate HTML5 video
- Packaging 3G2 mobile video into SWF format for use in Adobe Flash authoring tools (Animate or older Flash CS versions) as imported video assets
- Preserving and converting 3G2 content from early mobile marketing campaigns into SWF files for digital archive systems that catalog Flash-era web content
- Preparing 3G2 video clips for inclusion in legacy eLearning courseware built on Flash-based platforms like Adobe Captivate or Articulate Presenter
- Converting mobile-shot 3G2 footage to SWF for playback in standalone Flash projector (.exe/.app) applications that cannot read 3G2 containers
Frequently Asked Questions
Yes, this conversion involves two generations of lossy re-encoding. The original 3G2 file already used lossy H.264 compression, and converting to FLV1 (Sorenson Spark) introduces a second round of compression artifacts. FLV1 is an older, less efficient codec than H.264, so at equivalent file sizes it will produce lower visual quality. The default quantizer setting of -q:v 5 provides a reasonable middle ground, but if your source 3G2 was already heavily compressed for mobile transmission, the output SWF may show visible blocking or softness.
SWF's native audio format is MP3 — the format has limited and inconsistent support for AAC audio within its container structure. Since 3G2 files use AAC as their default audio codec, FFmpeg must fully decode the AAC stream and re-encode it as MP3 using the LAME encoder. This means there is a second generation of audio quality loss as well. At 128 kbps MP3, the quality difference from the original AAC is usually subtle for voice and moderate-quality mobile audio, but audiophiles may notice some degradation on music content.
No. Adobe Flash Player reached end-of-life on December 31, 2020, and all major browsers — Chrome, Firefox, Safari, and Edge — have removed Flash support entirely. SWF files generated from this conversion are intended for legacy environments: standalone Flash Player, Adobe Animate, Flash projector executables, or specialized archival viewers like Ruffle (a Flash emulator). If your goal is modern web playback, consider converting your 3G2 file to MP4 or WebM instead.
The -q:v flag controls FLV1 video quality on a scale of 1 (best quality, largest file) to 10 (lowest quality, smallest file). The default value of 5 is a balanced midpoint. To improve quality for a cleaner-looking SWF, lower the value, for example -q:v 2. To produce a smaller SWF file at the cost of more compression artifacts — useful if the source 3G2 was already a tiny low-resolution mobile clip — raise it, for example -q:v 8. You can also adjust audio bitrate by changing -b:a 128k to values like 96k or 192k depending on your needs.
On Linux or macOS, you can run a shell loop in your terminal: for f in *.3g2; do ffmpeg -i "$f" -c:v flv1 -c:a libmp3lame -q:v 5 -b:a 128k "${f%.3g2}.swf"; done. On Windows Command Prompt, use: for %f in (*.3g2) do ffmpeg -i "%f" -c:v flv1 -c:a libmp3lame -q:v 5 -b:a 128k "%~nf.swf". This preserves the original filename for each output SWF and processes every 3G2 file in the current directory sequentially.
No. SWF is not a metadata-rich container — it has no standardized fields for preserving the kind of mobile-origin metadata that 3G2 files may carry, such as recording device information, GPS coordinates, or creation timestamps embedded by CDMA handsets. This metadata is discarded during the conversion. If preserving that metadata is important, extract and save it separately using a tool like ExifTool before converting, since it cannot be embedded into the SWF container.
Technical Notes
The 3G2-to-SWF conversion is one of the more technically demanding format pairs because it requires both video and audio to be fully re-encoded — there is no stream copying possible here. The FLV1 codec (also known as Sorenson Spark or H.263) is a significantly older compression standard than the H.264 found in 3G2 files, which means the resulting SWF will generally be larger or lower quality than the source at equivalent settings. 3G2 files designed for CDMA networks often have very low resolutions (176x144 or 320x240), which can limit SWF output quality since FLV1 does not recover detail that was never in the source. The -movflags +faststart flag present in 3G2 input handling has no equivalent in SWF output, as SWF does not use a similar progressive download structure. SWF also has no support for subtitles, chapters, or multiple audio tracks, so any such features in a source 3G2 file are simply dropped. Additionally, SWF embeds the video and audio directly into the Flash file structure rather than using a separate transport stream, which can result in slightly larger output files compared to equivalent FLV container files.