MpegFlowBlogBack to home
← Recipes·MOV → MP4·format conversion

Convert MOV to MP4 with FFmpeg (no re-encoding)

Convert .mov to .mp4 for web delivery without re-encoding the video stream. Stream-copy approach, faststart for web playback, and the audio codec compatibility table.

ByMpegFlow Engineering Team·FFmpeg recipe
·3 variants·May 9, 2026

When to use this

You convert MOV to MP4 when delivering video for web playback or sharing across platforms — most browsers and players handle MP4 universally, while MOV (QuickTime) has narrower native support outside Apple's ecosystem. The container is just metadata; if the codecs inside are compatible (H.264 + AAC), no re-encoding is needed and the conversion is near-instant. The only common case requiring re-encoding: ProRes or DNxHR video inside MOV, which browsers don't support.

Command variants

Stream copy with web-optimized faststart
ffmpeg -i input.mov \
  -c copy \
  -movflags +faststart \
  output.mp4

Use this when the MOV contains H.264 + AAC (the common case). Near-instant conversion — just remuxing.

Re-encode (when codecs need conversion)
ffmpeg -i input.mov \
  -c:v libx264 -preset medium -crf 21 \
  -c:a aac -b:a 192k \
  -movflags +faststart \
  output.mp4

Use this when input is ProRes / DNxHR / ALAC. Slower but produces web-compatible MP4.

Probe first to decide
ffprobe -v quiet -select_streams v:0 -show_entries stream=codec_name input.mov

Check the video codec before deciding stream-copy vs re-encode. Returns "h264" → stream-copy works. Returns "prores" / "dnxhr" → must re-encode.

What each parameter does

  • -c copy

    Stream-copy ALL streams (video + audio) without re-encoding. Container changes but bytes inside don't. Near-instant.

  • -movflags +faststart

    Move the moov atom (file metadata) to the start of the file so web browsers can begin playback before downloading the entire file. Critical for web delivery.

  • libx264 / aac

    Standard web-compatible codecs. Use these when input codecs aren't web-compatible.

What this outputs

A .mp4 file. Stream-copy produces a file with identical video/audio bytes to the source — same size, same quality, just rewrapped. Re-encoded output may be slightly smaller or larger depending on the source codec's efficiency.

Pitfalls

  1. ProRes and DNxHR (common in production MOV files) are not browser-compatible. Always probe first; stream-copy will succeed but the resulting MP4 won't play in browsers.
  2. ALAC audio inside MOV won't survive in MP4 — convert to AAC during the same pass.
  3. Without +faststart, web players must download the entire file before starting playback. The flag adds a final pass to relocate the moov atom (a few seconds for large files) but the playback experience is dramatically better.
  4. MOV files can contain reference movies (pointers to external files). Stream-copy will preserve the references but they'll break if the external files aren't accessible. Always work from self-contained MOV files.
  5. Some MOV files use timecode tracks that confuse MP4 players. Strip with -map 0:v -map 0:a if needed.

At production scale

Stream-copy MOV→MP4 is essentially free at scale (network I/O bound, not compute). Re-encoded conversion is at libx264 medium-preset speeds, ~2-5× real-time on modern CPU. A petabyte-scale archive migration from MOV to MP4 (covered in our archive migration architecture) typically uses stream-copy for the codec-compatible portion (~70-80% of files) and re-encodes the rest in batched workflows.

How MpegFlow handles this

MpegFlow detects codec-compatibility automatically and routes stream-copy jobs to a dedicated worker pool that's I/O-optimized rather than compute-optimized. Saves significant cost on large library migrations where most files don't need re-encoding.

Topics
  • FFmpeg
  • format-conversion
  • mp4
  • mov
  • Transcoding
  • Archive migration
See also
  • Architecture
    Petabyte Archive Migration
  • Recipe
    H264 To Hevc Transcoding
Running this at scale?

Get the orchestration layer for free.

The mov → mp4 command above is the easy part. The queue, retries, audit trail, encoder-version pinning, and multi-tenant security around it are what every video team rebuilds from scratch. We did the rebuild — design partners run it free during beta.

Apply More recipes
© 2026 MpegFlow, Inc. · Trust & complianceAll systems nominal·StatusPrivacy