Convert MXF to HEVC — Free Online Tool
Convert MXF broadcast files to HEVC (.hevc) using libx265, achieving roughly half the file size of the H.264-encoded MXF source at comparable visual quality. This tool runs entirely in your browser via FFmpeg.wasm — no upload required — and displays the exact FFmpeg command for processing files over 1GB locally.
to
FFmpeg Command
Copy this command to run the same conversion locally with FFmpeg on your desktop. Download FFmpeg
Drop your MXF 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
MXF files from broadcast and post-production workflows commonly wrap H.264 (libx264), MJPEG, or MPEG-2 video alongside PCM audio tracks. During this conversion, the video stream is fully re-encoded from its source codec into HEVC (H.265) using the libx265 encoder, applying the x265 compression algorithm to reduce bitrate while maintaining perceptual quality. Because HEVC is a video-only output format (.hevc raw elementary stream), the audio tracks — including any multi-track PCM audio that MXF supports — are dropped entirely; only the video content is extracted and re-encoded. The CRF 28 default targets efficient compression suitable for archival or streaming delivery, and the -x265-params log-level=error flag suppresses verbose x265 encoder output without affecting the encode itself.
What Each Flag Does
| Flag | What it does |
|---|---|
ffmpeg
|
Invokes the FFmpeg binary. In the browser tool this runs via FFmpeg.wasm (WebAssembly), so no local installation is needed; when running locally on your desktop, this calls your system-installed FFmpeg. |
-i input.mxf
|
Specifies the input MXF file. FFmpeg will demux the MXF container and make the wrapped video stream (H.264, MPEG-2, or MJPEG) and any PCM or AAC audio streams available for processing. |
-c:v libx265
|
Selects the libx265 encoder for the video output stream, re-encoding the source MXF video — whatever codec it uses internally — into HEVC (H.265). This is always a full transcode, not a stream copy. |
-crf 28
|
Sets the Constant Rate Factor for libx265 to 28, the recommended default for HEVC that is perceptually comparable in quality to CRF 23 in H.264. Lower values increase quality and file size; higher values reduce both. |
-x265-params log-level=error
|
Passes the log-level=error parameter directly to the libx265 encoder, suppressing the verbose per-frame encoding statistics that x265 normally prints. This keeps console output clean without affecting the encoded video in any way. |
output.hevc
|
Defines the output file as a raw HEVC Annex B elementary stream. The .hevc extension tells FFmpeg to write a containerless video stream containing only the re-encoded HEVC video from the MXF source, with no audio or metadata wrapper. |
Common Use Cases
- Archiving broadcast-camera MXF footage from cameras like Sony XDCAM or Panasonic P2 into a smaller HEVC stream for long-term storage, cutting file sizes by 40–50% compared to the original H.264-wrapped MXF.
- Extracting and re-encoding the video-only stream from a multi-track MXF master to create a compact HEVC reference file for client review, discarding the multi-channel PCM audio that would be remixed separately.
- Transcoding MPEG-2 MXF files from legacy broadcast ingest systems into modern HEVC for delivery to platforms that require H.265 video without needing to repackage audio.
- Reducing storage costs on post-production NAS systems by converting finished MXF program files to HEVC elementary streams before deep archival, where the audio masters are stored separately as BWF or AAC files.
- Generating a lightweight HEVC proxy from an MXF original for use in offline editing or QC review on bandwidth-limited connections, where the smaller HEVC bitrate is critical.
- Testing libx265 CRF settings against a known MXF source to evaluate quality-vs-size tradeoffs before committing to a large-scale broadcast archive transcode pipeline.
Frequently Asked Questions
No. The .hevc output format is a raw HEVC video elementary stream and does not support any audio container. All audio tracks from your MXF file — whether PCM 16-bit, PCM 24-bit, or AAC — are discarded during this conversion. If you need to preserve the audio, export it separately (for example, to WAV or AAC) before or after this conversion, then mux both streams into a container like MKV or MP4.
It depends on the video codec inside your MXF. If the source wraps H.264 (libx264), HEVC at CRF 28 typically produces a file 30–50% smaller at comparable quality. If the source wraps MPEG-2 — common in legacy broadcast MXF — the size reduction can be even more dramatic, sometimes 60% or more, because MPEG-2 is significantly less efficient than HEVC. MJPEG-wrapped MXF files also see very large reductions since MJPEG stores every frame as an independent JPEG image with no inter-frame compression.
CRF (Constant Rate Factor) controls perceptual quality in libx265, where lower values mean higher quality and larger files. A CRF of 28 for HEVC is considered roughly perceptually equivalent to a CRF of 23 in libx264, because HEVC achieves the same visual result at a lower bitrate. So CRF 28 HEVC output from your MXF source should look similar to the original H.264 content while using significantly less data. For broadcast-quality output you may want to lower the CRF to 23 or 20 in the FFmpeg command.
No. The raw .hevc elementary stream format has no container structure capable of storing MXF metadata such as SMPTE timecodes, umid, reel names, or descriptive metadata. All of that information is stripped during conversion. If timecode preservation is critical to your workflow, consider outputting to a container format like MKV or MOV that supports timecode metadata, using a different FFmpeg output target.
Adjust the -crf value in the command. The scale runs from 0 (lossless, very large file) to 51 (lowest quality, smallest file), with 28 as the default. For higher quality output from your MXF source, use a lower value like -crf 20 or -crf 18; for smaller files where some quality loss is acceptable, try -crf 35. For example: ffmpeg -i input.mxf -c:v libx265 -crf 20 -x265-params log-level=error output.hevc
Yes, on your local desktop you can use a shell loop. On Linux or macOS: for f in *.mxf; do ffmpeg -i "$f" -c:v libx265 -crf 28 -x265-params log-level=error "${f%.mxf}.hevc"; done. On Windows Command Prompt: for %f in (*.mxf) do ffmpeg -i "%f" -c:v libx265 -crf 28 -x265-params log-level=error "%~nf.hevc". The browser tool processes one file at a time, so the FFmpeg command is especially useful for batch workflows or for MXF files larger than 1GB.
Technical Notes
MXF is a professional SMPTE-standardized container (SMPTE 377M) and may wrap video in several codecs — libx264 (common in XDCAM EX and file-based broadcast workflows), MPEG-2 (used in XDCAM HD and older broadcast infrastructure), or MJPEG (used in older ingest hardware). Each of these requires a full video decode followed by re-encode into HEVC; there is no remux shortcut since HEVC is a fundamentally different codec. The -x265-params log-level=error flag is passed directly to the libx265 encoder to suppress its normally verbose per-frame statistics output, which is cosmetic and does not affect encoding quality or speed. The output is a raw HEVC Annex B elementary stream (.hevc), which is not the same as an MP4 or MKV container holding HEVC video — some players may not open .hevc files directly, but the stream can be remuxed losslessly into any HEVC-compatible container afterward using ffmpeg -i output.hevc -c copy output.mp4. Multi-track audio present in professional MXF files (e.g., 4-track or 8-track PCM for stems and mix) cannot be carried into the .hevc format and will be lost; plan audio preservation separately. HDR metadata present in some camera MXF files (e.g., PQ or HLG) may or may not be correctly passed through depending on how it is signaled in the source; verify HDR output with ffprobe if this is a concern.