Extract Audio from MXF to AMR — Free Online Tool

Extract audio from professional MXF broadcast files and convert it to AMR format using the libopencore_amrnb codec — ideal for repurposing broadcast-grade speech content for mobile or telephony applications. This tool strips the video and re-encodes the PCM or AAC audio from your MXF container into the compact, speech-optimized AMR-NB format entirely in your browser.

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

MXF files from broadcast and post-production workflows typically carry uncompressed or lightly compressed audio — most commonly PCM (pcm_s16le or pcm_s24le) at high sample rates and bit depths. During this conversion, FFmpeg discards all video streams entirely and re-encodes the audio using the libopencore_amrnb encoder, which implements the Adaptive Multi-Rate Narrowband codec. AMR-NB is a lossy, speech-optimized codec that operates at a fixed 8 kHz sample rate, so the high-fidelity PCM audio from your MXF file is significantly downsampled to narrowband telephony quality. The output is a raw .amr file containing a single mono audio track — AMR-NB does not support stereo, so any multi-channel audio in the MXF will be mixed down. This conversion prioritizes compact file size and voice intelligibility over audio fidelity.

What Each Flag Does

Flag What it does
ffmpeg Invokes the FFmpeg tool. In the browser version of this tool, this runs entirely via FFmpeg.wasm (WebAssembly), meaning no files leave your device and no server processing occurs.
-i input.mxf Specifies the input MXF file — a professional broadcast container that may contain video (H.264, MPEG-2, or MJPEG), one or more PCM or AAC audio tracks, timecode, and SMPTE metadata.
-vn Disables video output entirely — since MXF is a video container but the target AMR format is audio-only, this flag instructs FFmpeg to ignore and discard all video streams rather than attempting to process them.
-c:a libopencore_amrnb Sets the audio encoder to libopencore_amrnb, the open-source implementation of the AMR-NB codec. This re-encodes the MXF's PCM or AAC audio into the narrowband, speech-optimized AMR format fixed at 8 kHz mono — the standard codec used in 3GPP mobile telephony.
-b:a 12200 Sets the AMR-NB encoding mode to 12,200 bits per second, which is the highest quality mode available in AMR-NB and the one that provides the best speech intelligibility when extracting dialogue or voiceover from a broadcast MXF source.
output.amr Defines the output filename with the .amr extension. FFmpeg recognizes this extension and writes the audio in the IETF AMR file format, which includes the standard '#!AMR' file header required for compatibility with mobile players and telephony systems.

Common Use Cases

  • Extracting a spoken interview or on-camera dialogue track from a broadcast MXF master to send as a voice memo or telephone-compatible audio file
  • Repurposing field recorder or ENG camera MXF clips containing only speech for integration into mobile telephony or IVR (Interactive Voice Response) systems
  • Converting broadcast news voiceover tracks stored in MXF for playback or archiving on legacy mobile devices that natively support AMR playback
  • Stripping and compressing narration or commentary audio from a post-production MXF deliverable to create a low-bandwidth preview for remote review over constrained networks
  • Extracting speech content from timecode-stamped MXF interview footage for transcription services that accept AMR audio input from mobile dictation workflows

Frequently Asked Questions

Yes — this conversion involves substantial quality loss. MXF files in broadcast workflows often carry pcm_s16le or pcm_s24le audio at 48 kHz, which is CD-quality or better. AMR-NB resamples audio down to 8 kHz and uses lossy compression specifically tuned for human speech intelligibility, not music or full-range audio. The result will sound like a phone call — perfectly acceptable for voice content, but not suitable for music, sound effects, or anything requiring fidelity beyond the spoken word.
AMR format supports only a single mono audio track, so FFmpeg will select the first audio stream from your MXF file by default and mix it down to mono if needed. MXF files used in broadcast often carry multiple discrete audio channels — for example, separate left/right or dual-language tracks. If you need a specific track other than the first, you would need to modify the FFmpeg command to include a stream selector such as -map 0:a:1 to target the second audio stream explicitly.
AMR-NB uses a set of fixed bitrate modes measured in bits per second, ranging from 4,750 bps (most compressed, lower intelligibility) to 12,200 bps (least compressed, best speech clarity). Unlike MP3 or AAC where bitrate flexibility is wide, all AMR-NB modes operate at 8 kHz — so you're tuning compression aggressiveness, not bandwidth. For voice content extracted from broadcast MXF footage where clarity matters, 12,200 bps (the default used by this tool) is the right choice. Lower modes like 4,750 or 5,150 are appropriate only when file size is extremely constrained, such as for embedded telephony systems.
No. AMR is a bare-bones audio container with no support for timecode, UMID, or the rich metadata that MXF was designed to carry. All broadcast metadata, timecode tracks, and production information embedded in the MXF file are discarded during this conversion. If preserving metadata is important for your workflow, extract and archive that information separately before converting, as AMR has no mechanism to store it.
To change the output bitrate, replace the 12200 value in '-b:a 12200' with any valid AMR-NB mode: 4750, 5150, 5900, 6700, 7400, 7950, or 10200. To target a specific audio stream in a multi-track MXF file, add '-map 0:a:1' before the output filename (replacing '1' with the zero-indexed track number you want). For example: ffmpeg -i input.mxf -vn -map 0:a:2 -c:a libopencore_amrnb -b:a 7950 output.amr would extract the third audio track at a lower bitrate.
Yes. On Linux or macOS you can use a shell loop: for f in *.mxf; do ffmpeg -i "$f" -vn -c:a libopencore_amrnb -b:a 12200 "${f%.mxf}.amr"; done. On Windows Command Prompt: for %f in (*.mxf) do ffmpeg -i "%f" -vn -c:a libopencore_amrnb -b:a 12200 "%~nf.amr". Note that libopencore_amrnb must be compiled into your local FFmpeg build — some default FFmpeg distributions omit it due to patent licensing; check with ffmpeg -codecs | grep amr to confirm availability.

Technical Notes

MXF (Material Exchange Format) is a professional container standardized under SMPTE, designed to carry audio, video, timecode, and rich production metadata in broadcast and post-production environments. Its audio streams are most commonly uncompressed PCM (pcm_s16le at 48 kHz for standard broadcast, or pcm_s24le for higher-precision production work), though AAC-encoded audio can also appear in certain MXF profiles. AMR-NB (Adaptive Multi-Rate Narrowband), implemented here via libopencore_amrnb, is a codec from the 3GPP mobile telephony standard that hard-constrains output to 8 kHz mono audio — making it fundamentally incompatible with the full-fidelity, multi-channel audio typical in MXF masters. The downsampling from 48 kHz to 8 kHz is irreversible and dramatic. AMR-NB is patent-encumbered, which is why some FFmpeg builds require explicit compilation with opencore-amr support; the browser-based WebAssembly version used here includes it. The output .amr file uses the IETF-defined AMR storage format with the magic number '#!AMR
', which is recognized by most mobile media players. One known limitation: if your MXF source has audio encoded at 44.1 kHz rather than 48 kHz, FFmpeg will still resample correctly to 8 kHz, but ensure your FFmpeg build includes the required resampling library (libswresample). Multi-channel MXF audio (e.g., 5.1 surround from a film mix) will be automatically mixed to mono, which may produce phase artifacts if channels contain content that cancels when summed — for such sources, explicitly select a single dialogue channel with -map rather than relying on automatic downmix.

Related Tools