Your iPhone video won’t play after copying to a PC — that’s usually HEVC inside a .mov plus a subtle codec-tag mismatch. FFmpeg can fix it in one command, without re-encoding, preserving image quality bit-for-bit. This guide covers the fast remux, the hvc1 tag trick, a full H.264 re-encode for stubborn older players, batch scripts for Windows/macOS/Linux, and the iPhone setting that avoids the problem entirely. ~8 min read.
Tested on: FFmpeg 6.1 / Windows 11 / macOS Sonoma / Ubuntu 24.04
What you’ll learn
- Why iPhone .mov files choke on Windows (
hev1vshvc1) - Lossless fix:
-c copy+-tag:v hvc1in one command - Max compatibility: re-encode to H.264
- Batch-convert a whole folder
- Switching iPhone to record H.264 directly
- FAQ
1. Why iPhone .mov files break elsewhere
Since iOS 11, iPhone records to HEVC (H.265) in a .mov container by default. Two things can go wrong.
A: the .mov container
.mov is Apple’s QuickTime container. Structurally it’s nearly identical to MP4, but some older players, editors, and upload services refuse it.
B: hev1 vs hvc1 tag
HEVC streams live under one of two codec tags:
| Tag | Where decoder config lives | Compatibility |
|---|---|---|
hev1 | Inline in the bitstream | Some players fail at first frame |
hvc1 | In the container sample description | QuickTime, iOS, Safari, Discord all happy |
iPhone writes hvc1 natively, but third-party editors or older FFmpeg pipelines sometimes re-tag to hev1, breaking Windows playback. Re-asserting hvc1 with FFmpeg fixes it (FFmpeg wiki H.265).
2. The fast fix: remux + hvc1 tag
Seconds, lossless, and the video is suddenly compatible everywhere.
ffmpeg -i iphone.mov -c copy -tag:v hvc1 -movflags +faststart iphone.mp4
-c copy— copy without re-encoding-tag:v hvc1— force thehvc1tag on the video stream-movflags +faststart— relocate moov atom to the front (required for web / SNS)
Output plays correctly on Windows Films & TV, macOS QuickTime, Discord, and Twitter.
3. Max-compatibility: re-encode to H.264
For truly old environments that can’t decode HEVC at all (Windows 8-era PCs, older Android, some smart TVs), re-encode to H.264. The file will be roughly 1.5–2× larger but plays virtually everywhere.
ffmpeg -i iphone.mov \
-c:v libx264 -crf 20 -preset medium \
-c:a aac -b:a 192k \
-movflags +faststart \
iphone_h264.mp4
-crf 20— high quality (18–23 is the sensible range)-preset medium— balanced speed/size-c:a aac -b:a 192k— iPhone audio is usually already AAC, but we pin it explicitly
iPhone 4K HDR footage also needs HDR → SDR tonemapping → HDR to SDR guide
Keeping portrait orientation
iPhone portrait video uses rotation metadata rather than physically rotated pixels. When you re-encode, some pipelines drop that metadata and the result is sideways. To bake the rotation in:
ffmpeg -i iphone_vertical.mov \
-c:v libx264 -crf 20 -preset medium \
-c:a aac -b:a 192k \
-movflags +faststart -metadata:s:v rotate=0 \
iphone_vertical.mp4
-metadata:s:v rotate=0 resets rotation metadata on the output, and the video is stored as native-orientation pixels. See our rotate/flip guide for details.
4. Batch conversion
macOS / Linux
for f in *.mov *.MOV; do
[ -f "$f" ] || continue
ffmpeg -i "$f" -c copy -tag:v hvc1 -movflags +faststart "${f%.*}.mp4"
done
Windows .bat (drag-and-drop multiple files)
Save as iphone_to_mp4.bat:
@echo off
setlocal enabledelayedexpansion
if "%~1"=="" (
echo Drag one or more MOV files onto this .bat
pause & exit /b 1
)
:loop
if "%~1"=="" goto end
ffmpeg -i "%~1" -c copy -tag:v hvc1 -movflags +faststart "%~dpn1.mp4"
shift
goto loop
:end
echo Done!
pause
Don’t have FFmpeg yet? See FFmpeg install guide (Windows / macOS / Linux).
5. Switching iPhone to H.264 at capture
To skip conversion entirely, flip iPhone’s camera format:
- Settings → Camera → Formats
- Select Most Compatible (H.264)
From then on, recordings are H.264 MP4. Note: 4K 60fps and HDR modes still force HEVC per Apple’s HT207022.
Existing HEVC clips still need conversion.
6. Troubleshooting
Windows won’t play the MP4 even after -tag:v hvc1
Why: Windows has no built-in HEVC decoder.
Fix: Install Microsoft’s “HEVC Video Extensions” from the Store (small paid app), or re-encode to H.264.
No audio on the converted file
Why: Some older iPhones recorded ALAC or raw PCM in certain modes — MP4 can’t play that back in every player.
Fix: Re-encode audio only:
ffmpeg -i iphone.mov -c:v copy -tag:v hvc1 -c:a aac -b:a 192k -movflags +faststart output.mp4
Converting Live Photo .MOV
Why: Live Photos are 1–3 second .MOV paired with a HEIC still. Same conversion works:
ffmpeg -i IMG_1234.MOV -c copy -tag:v hvc1 IMG_1234.mp4
Audio drift after Twitter re-encode
Why: iPhone’s VFR (variable frame rate) + Twitter’s re-encode produces A/V drift.
Fix: Convert to CFR first:
ffmpeg -i iphone.mov -c:v libx264 -crf 20 -r 30 -c:a aac -b:a 192k -movflags +faststart output.mp4
-r 30 pins the frame rate to 30. See VFR to CFR conversion.
Slow-motion video plays at normal speed
Why: iPhone’s 240fps slo-mo uses playback-rate metadata that FFmpeg remux drops.
Fix: Explicitly slow the clip:
ffmpeg -i slowmo.mov -filter:v "setpts=8*PTS" -r 30 -c:a copy output.mp4
setpts=8*PTS plays at 1/8 speed. For audio sync add -filter:a atempo=0.125.
FAQ
Q1. What’s the difference between .MOV and .mp4?
A. They’re almost the same container structurally. .mov is Apple’s original QuickTime format; .mp4 is the ISO standard (MPEG-4 Part 14). With the same codecs inside, remuxing between them is trivial.
Q2. Does remuxing change file size?
A. Barely (±1–3%). Only container headers differ — the video/audio data is copied verbatim.
Q3. Can I convert with Apple’s built-in apps?
A. macOS “Preview” and QuickTime Player can export to H.264 via File → Export, but format choices are limited (e.g., 720p cap) and there’s no batch mode. FFmpeg is more flexible.
Q4. Should I add -tag:v hvc1 to H.264 videos too?
A. No — that tag is H.265-specific. H.264 files use avc1 by default without any extra option.
Q5. How do I view iPhone 4K HDR footage on a regular PC?
A. The HEVC Main 10 + HDR10 source looks washed out on SDR. Tonemap:
ffmpeg -i iphone_4k_hdr.mov \
-vf "zscale=t=linear:npl=100,tonemap=hable:desat=0,zscale=p=bt709:t=bt709:m=bt709,format=yuv420p" \
-c:v libx264 -crf 20 -c:a aac -b:a 192k output_sdr.mp4
Full details in HDR to SDR Tonemapping.
Related resources
FFmpeg Cheat Sheet (PDF): container conversion, codec tags, and compatibility commands on a single A4.
Related posts
- MKV to MP4: The Complete Remux Guide
- HDR to SDR Tonemapping — Full Guide
- Rotate / Flip Video — Metadata vs Filter
- VFR to CFR Conversion
Tested on ffmpeg 6.1.1 / Windows 11 + macOS Sonoma + Ubuntu 24.04
Primary sources: ffmpeg.org/ffmpeg.html / FFmpeg wiki H.265 / Apple HT207022