Extract Audio from SWF to AMR — Free Online Tool

Extract audio from SWF Flash files and convert it to AMR format, encoding the audio stream using the libopencore_amrnb codec optimized for speech and mobile telephony. This is especially useful for recovering voice narration or dialogue from legacy Flash presentations and e-learning content.

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 audio encoded as MP3 (libmp3lame) or AAC alongside their vector animation and interactive content. During this conversion, FFmpeg discards all video, animation, and interactivity data entirely and extracts only the raw audio stream. That audio is then re-encoded from scratch using the libopencore_amrnb codec at 12,200 bps — the highest quality AMR-NB bitrate — producing a narrow-band AMR file sampled at 8 kHz and optimized for speech intelligibility. Because AMR-NB operates at a fixed 8 kHz sample rate, any music or wide-frequency audio from the SWF will be downsampled significantly, making this conversion best suited for spoken-word content rather than music or sound effects.

What Each Flag Does

Flag What it does
ffmpeg Invokes the FFmpeg tool. This command runs entirely in your browser via FFmpeg.wasm (WebAssembly) without uploading your SWF file to any server, but you can also paste this full command into a local terminal to process files over 1GB.
-i input.swf Specifies the input SWF file. FFmpeg reads the Flash container and demuxes its internal streams — which may include FLV1 or MJPEG video and MP3 or AAC audio — before processing begins.
-vn Disables all video output. This tells FFmpeg to completely ignore the animation, vector graphics, and any video streams inside the SWF, ensuring only the audio track is processed into the AMR output.
-c:a libopencore_amrnb Sets the audio encoder to libopencore_amrnb, which implements the AMR Narrow-Band speech codec. This encoder re-encodes the SWF's MP3 or AAC audio into the AMR-NB format at a fixed 8 kHz sample rate, optimized for speech intelligibility on mobile telephony systems.
-b:a 12200 Sets the AMR-NB bitrate to 12,200 bits per second, which corresponds to the highest quality mode (Mode 7, or MR122) defined in the AMR-NB standard. This gives the best possible speech fidelity within the constraints of the narrow-band codec.
output.amr Specifies the output file. The .amr extension tells FFmpeg to wrap the encoded AMR-NB audio in the standard single-channel AMR file format, which is recognized by Android devices, 3GPP-compliant players, and telephony platforms.

Common Use Cases

  • Recovering voice-over narration from legacy Flash e-learning modules to repurpose in modern mobile training apps that accept AMR audio
  • Extracting spoken dialogue from archived Flash-based interactive presentations for transcription or accessibility compliance workflows
  • Converting speech recordings originally published in SWF format for playback on older mobile handsets and feature phones that natively support AMR
  • Pulling instructor audio out of Flash-based online course content so it can be stored and transmitted efficiently via SMS or MMS messaging systems
  • Archiving the spoken commentary track from Flash animations before they become completely inaccessible as Flash support is fully deprecated across browsers
  • Preparing SWF-embedded voice recordings for integration into IVR (Interactive Voice Response) telephony systems that require AMR-encoded audio

Frequently Asked Questions

For speech, the quality loss is generally acceptable at the default 12,200 bps bitrate, which is the highest available for AMR-NB. However, AMR-NB hard-limits audio to an 8 kHz sample rate, meaning any audio above 4 kHz is discarded. If the original SWF contained voice-over recorded at 44.1 kHz MP3, you will hear a telephone-like quality in the output — clear enough for intelligible speech but noticeably narrower than the source. For music or sound effects embedded in the SWF, this conversion will sound quite poor.
AMR is natively supported on Android devices and many feature phones, but it has very limited support on modern desktop platforms. Windows Media Player does not support it by default, macOS does not natively open AMR files, and most web browsers cannot play AMR without a plugin. If your goal is broad compatibility, consider extracting the SWF audio to MP3 or AAC instead. AMR is most practical when you specifically need a format for mobile telephony systems, IVR platforms, or legacy devices.
All of it is completely discarded. The -vn flag instructs FFmpeg to ignore every video and animation stream in the SWF, and since AMR is a pure audio-only container, there is no mechanism to carry visual or interactive data anyway. Only the audio track from the SWF is processed and re-encoded into the output AMR file. No metadata from the SWF, such as author tags or timestamps, is carried over to the AMR container.
Replace the 12200 value in the -b:a flag with any of the standard AMR-NB bitrates: 4750, 5150, 5900, 6700, 7400, 7950, or 10200. For example, use -b:a 7950 for a balance between file size and speech clarity. Note that AMR-NB is a codec with very low bitrates by design — even at the minimum 4,750 bps, spoken word remains intelligible, though at noticeably reduced quality. All values are in bits per second, not kilobits.
Yes. On Linux or macOS, you can use a shell loop: for f in *.swf; do ffmpeg -i "$f" -vn -c:a libopencore_amrnb -b:a 12200 "${f%.swf}.amr"; done. On Windows Command Prompt, use: for %f in (*.swf) do ffmpeg -i "%f" -vn -c:a libopencore_amrnb -b:a 12200 "%~nf.amr". Each SWF will be processed sequentially, producing a corresponding AMR file with the same base filename. This is particularly useful for batch-archiving large collections of old Flash e-learning files.
SWF files typically store audio as MP3 (libmp3lame) or AAC, neither of which can be placed directly into an AMR container. AMR exclusively stores audio encoded with the AMR-NB or AMR-WB speech codec. Because the codec format is fundamentally different, a full decode-and-re-encode pass is mandatory — FFmpeg cannot stream-copy from SWF to AMR. This also means the conversion is lossy twice over: the audio was already lossy in the SWF, and it is lossy again when re-encoded to AMR-NB.

Technical Notes

The libopencore_amrnb encoder enforces a fixed 8,000 Hz sample rate and mono channel output regardless of the source audio in the SWF. FFmpeg will automatically resample and downmix the SWF audio before encoding, so no additional flags are needed, but this resampling is a significant quality bottleneck for non-speech content. The AMR-NB bitrate options (4,750 to 12,200 bps) correspond to specific standardized codec modes defined in 3GPP TS 26.071, not arbitrary values — FFmpeg will snap to the nearest valid mode if given an in-between value. The output .amr file uses the single-channel AMR file format with the magic header '#!AMR
', which is compatible with 3GPP-compliant players. Note that libopencore_amrnb must be compiled into your FFmpeg build; many default Linux package manager builds include it, but some minimal or legally restricted builds may not. The AMR container carries no standard metadata fields, so any title, artist, or comment tags present in the original SWF audio are silently dropped in the output.

Related Tools