FFmpeg Cookbook
JA

Mobile Video Playback Fixer

Fix phone videos that won't play properly on a PC (especially Windows): the file won't open, you get audio only, or a portrait video plays sideways. The tool checks the file in your browser and changes only what is needed. No upload; up to 500 MB.

Your file is not uploaded
Drag & drop a video, or tap to select
MP4 / MOV / MKV / WebM, up to 500 MB
—
—
Settings
Container— Video— Audio— Rotation—
Processing… 0%

Equivalent FFmpeg command

CLI command for your current settings. Updates live as you change controls.

ffmpeg -hide_banner -i input.mp4 -map "0:v:0?" -map "0:a:0?" -sn -dn -c:v copy -c:a copy -movflags +faststart fixed.mp4

Useful next tools

Popular uses
iPhone video not playing on WindowsPortrait video plays sideways fixHEVC/VP9/AV1 compatibility

How to use

  1. Add your videoDrop a video file (up to 500 MB) or pick one from your device.
  2. Click "Analyze video"Reads container, codecs, and rotation, then shows the recommended fix.
  3. Pick a targetChoose Windows / Chrome (H.264 + AAC) or Apple (keep HEVC when possible). The planned fix updates when you change it.
  4. Fix & downloadClick Fix with these settings, then download the fixed MP4.

Recommended settings

iPhone video won't play on Windows / audio only
Windows / Chrome + Auto
The cause is usually HEVC or 10-bit video, so it converts to H.264 (8-bit) + AAC.
Portrait video plays sideways
Windows / Chrome + Burn into pixels
Even a player that ignores the rotation flag shows it upright, because the picture itself is turned.
Android VP9 / AV1 won't open in desktop editors
Windows / Chrome + Auto
Some editors cannot import VP9 or AV1. H.264 usually opens.
ProRes / DNxHR needs a delivery MP4
Windows / Chrome + Balanced
ProRes and DNxHR are editing formats that few players support. For sharing, H.264 + AAC fits better.
Sharing between Apple devices (keep HEVC)
Apple + Auto
Usually nothing is re-encoded, so it is quick and lossless. An hev1 tag is rewritten to hvc1.

When it goes wrong

Want to keep HEVC and guarantee Windows playback

Cause: Windows / browser HEVC support depends on OS, codec extensions, and GPU.

Fix: That cannot be guaranteed. For reliable playback, use Windows / Chrome and convert to H.264.

Portrait video rotates twice after burning

Cause: A manual transpose stacks on top of FFmpeg's autorotate or on rotation metadata left in the output.

Fix: The tool skips transpose and lets FFmpeg's autorotate burn the orientation in. On the CLI, re-encode without adding transpose.

Re-encoding is slow

Cause: Re-encode time depends on the video length, the resolution and your device.

Fix: When the analysis says "Lossless remux", nothing is re-encoded and it is quick. If you only watch on Apple devices, the Apple target avoids converting HEVC.

Colors look washed out or blown out

Cause: Converting HDR video to 8-bit H.264 does not tone-map it (adjust brightness and color for SDR screens).

Fix: This tool cannot fix that. Use an editor that converts HDR to SDR.

Files over 500 MB are rejected

Cause: The tool accepts files up to 500 MB.

Fix: Use desktop FFmpeg, or split the file below 500 MB with another app first.

Questions

Why can an MP4 still fail to play?

MP4 is only a container; what matters is the codecs inside. HEVC, VP9 or AV1 video and HE-AAC, Opus or PCM audio do not play on some systems.

What is remux (-c copy)? Does it reduce quality?

Remux rewrites the container while copying streams as-is. No re-encoding, so no quality loss.

Why does portrait video sometimes play sideways?

Phones often store orientation as metadata. Some players ignore it. Burning orientation into pixels fixes it more reliably.

What's the difference between hvc1 and hev1?

Both are HEVC in MP4, but they store the stream settings (parameter sets) differently. Apple devices and apps may not play HEVC unless it is tagged `hvc1`.

Can I fix audio only?

Yes. If video is already compatible, the tool keeps it as-is and only transcodes audio to AAC.

Is my file uploaded?

No. Everything runs locally in your browser.

Can it fail?

Yes — corrupt inputs, unusual stream layouts, or memory constraints can cause failures. Try a shorter clip first.

Can I reuse the command on CLI?

Yes. The command is shown after the fix; replace names such as input.mp4 with your own file names and run it with desktop FFmpeg. One exception: when Metadata only is used with a video re-encode, desktop FFmpeg 8.1 does not keep the rotation flag in the output.

More detail (settings, limits, FFmpeg commands)

What each setting means

Compatibility target
Windows / Chrome converts to H.264 + AAC, which most systems play. Apple keeps HEVC and often only repackages the file, which is fast and lossless, but whether Windows plays HEVC depends on the system.
Orientation
Auto = burn for Windows, keep metadata for Apple. Metadata only = fast and lossless but some players ignore it. Burn into pixels = always correct but requires video re-encoding.
Quality (on video re-encode)
High = CRF 20 (best quality, larger) / Balanced = CRF 23 (default) / Smaller = CRF 28 (smallest). Used only when the video is re-encoded.
Downmix to stereo
Mixes 5.1 and other surround sound down to 2-channel stereo. It applies only when the audio is converted to AAC; copied audio is left as is.

Browsers and limits

  • Max input size: 500 MB
  • Makes files playable; it does not tone-map HDR to SDR or improve picture quality
  • Keeping HEVC does not guarantee Windows / browser playback (environment-dependent)

The same job with the FFmpeg command line

Lossless MOV → MP4 remux (+faststart)
ffmpeg -i input.mov -map 0:v:0? -map 0:a:0? -c copy -movflags +faststart output.mp4
Keep HEVC but force hvc1 tag (Apple-friendly, lossless)
ffmpeg -i input.mov -map 0:v:0? -map 0:a:0? -c copy -tag:v hvc1 -movflags +faststart output.mp4
Most compatible output (H.264 + AAC)
ffmpeg -i input.mov -map 0:v:0? -map 0:a:0? -c:v libx264 -preset veryfast -crf 23 -pix_fmt yuv420p -c:a aac -b:a 192k -movflags +faststart output.mp4
Burn orientation (avoid metadata-only rotation issues)
ffmpeg -i input.mp4 -map 0:v:0? -map 0:a:0? -c:v libx264 -preset veryfast -crf 23 -pix_fmt yuv420p -c:a copy -movflags +faststart output.mp4
When re-encoding, FFmpeg turns the picture upright from the rotation metadata and writes no rotation flag. No transpose needed.