iPhone HEVC Video Won't Play? Converting a 113 MB H.265 .MOV to an 11.3 MB H.264 MP4, and What Compatibility Costs

Originally published on Blogger — tested with VidSmaller.

You film something on your phone, send it to a friend or drop it into a shared folder, and the reply is "it's just sound and a black box". Nothing is wrong with the video. Most modern phones record in HEVC (H.265) by default, and plenty of players still can't decode it: desktop Chrome on Linux, older Windows PCs without the paid HEVC extension, some older TVs and web upload widgets. The fix is boring: turn it into an H.264 MP4, which plays almost everywhere, and make it smaller while you're at it.

The question I actually wanted answered: what does that compatibility cost? HEVC is the more efficient codec, so an H.264 file at the same size should look worse. How much worse, and how much bigger does H.264 need to be to catch up? I ran one real 4K phone-style clip through VidSmaller, the online video compressor I build (so weigh my opinions accordingly), and measured everything afterwards with ffprobe and VMAF. All byte counts below come from the actual files.

The short answer (measured)

FileCodecSizevs originalVMAF (4K model)Plays in Chrome on Linux?
Phone-style original (.mov)HEVC118,010,054 B—referenceNo (audio only)
VidSmaller, typed 12 MBH.26411,887,672 B−89.9%52.1Yes
Local x265, same bitrate (for comparison)HEVC12,128,323 B−89.7%69.7No
Local x264, about 2× the bytes (for comparison)H.26424,353,697 B−79.4%69.5Yes

So: one upload took the clip from 113 MB to 11.3 MB, under the size I typed, and the result plays. The cost of choosing H.264 is real, though. On this busy 4K garden scene, H.264 needed about twice the bytes (24.4 MB vs 12.1 MB) to match HEVC's quality. If you only need it to play, 12 MB is fine for a phone screen. If you'll watch it full-screen on a big monitor, give H.264 a bigger target.

The test clip

I wanted something that looks like what phones actually produce: 4K, 30 fps, handheld, lots of leaves and grass (the hardest kind of detail to compress). I took 40 seconds of a 4K walk through a Suzhou garden (Walking China, CC BY 3.0) and re-encoded it the way an iPhone with HDR turned off would save it: HEVC Main, 3840×2160, 30 fps, about 23.4 Mbps, tagged hvc1, in a .mov with AAC audio. The result was 118,010,054 bytes for 40 seconds.

Step 1: Check which codec your phone used

Before converting anything, confirm it's actually HEVC. On a computer, ffprobe shows it in one line. On an iPhone, the Photos info panel shows "HEVC" next to the resolution. On Android, check the camera's video format setting ("HEVC" or "H.265" vs "H.264").

ffprobe output for the phone file: codec_name=hevc, codec_tag_string=hvc1, 3840x2160, 30 fps, size=118010054

codec_name=hevc with codec_tag_string=hvc1 is the tell. If it says h264, your problem is something else (usually just size, so jump to Step 4).

Step 2: See what "won't play" looks like

I made a small test page with two <video> tags and opened it in Chrome 156 on Linux: the original phone file on the right, the converted file on the left.

Chrome 156 on Linux test page: the VidSmaller H.264 MP4 shows a 3840x2160 frame; the HEVC .mov has no picture, only audio, canPlayType empty

The HEVC file doesn't error out. Chrome reports canPlayType: "", plays the AAC audio and leaves the picture at 0×0. That's exactly the "sound but black screen" your recipient describes. The H.264 file decodes at full 3840×2160.

Step 3: Load the phone file into VidSmaller

Open the compressor's home page and drop the .mov in. No sign-up is needed for a first try. Right now the signed-out limit is up to 3 minutes and 200 MB, which this clip fits. It read the file as 113 MB · 0:40 · 3840×2160 and suggested 67.5 MB by default.

VidSmaller with suzhou-garden-iphone-hevc.mov loaded: 113 MB, 0:40, 3840x2160, estimated result 67.5 MB, cost 1 credit free with no sign-up

Note the preview on the left: it's the same audio-only player, because the preview runs on the same browser decoder that can't do HEVC. The upload and conversion happen in the cloud, so it doesn't matter. (The site writes sizes in binary MB, so 118,010,054 bytes shows as 113 MB.)

Step 4: Leave the output codec on H.264

Under Advanced Compression, the Video Codec menu has H.264 and H.265. H.265 output is locked unless you're on a paid plan. For this job that doesn't matter: H.264 is the whole point, because it's the codec everything can play. H.264 is the safe choice; H.265 (HEVC) is the efficient one.

Advanced Compression Video Codec menu: H.264 selected, H.265 locked

I switched back to Basic Compression for the actual run, since all I wanted to set was a size.

Step 5: Type a target size

The basic view is one number: the output file size. There are chips for common limits (Discord 19 MB, WhatsApp 15 MB, Email 18 MB, Reddit 100 MB; Discord's free upload limit is 20 MB, so the chip leaves a little margin). I typed 12 to make the gap obvious. The estimate updated to 12.0 MB.

Output file size set to 12, estimated result 12.0 MB, with Discord 19 MB, WhatsApp 15 MB, Email 18 MB and Reddit 100 MB chips

Step 6: Start, wait, download

Click Start Compression. The 113 MB upload went first, then the encode. From click to "ready" took 79 seconds.

VidSmaller progress: Compressing 90 percent, finishing up

The result card read 113 MB → 11.3 MB, −89.9%.

Your video is ready: 113 MB to 11.3 MB, minus 89.9 percent, with a Download button

Step 7: Verify the download

Don't trust the card, check the file:

ffprobe of the download: codec_name=h264, avc1, 3840x2160, 30 fps, 11887672 bytes versus 118010054 bytes for the original

H.264 High profile, avc1 tag, still 3840×2160 at 30 fps, same 40.007 s duration, 11,887,672 bytes. That's under the 12 MB (12,582,912-byte) target and 89.9% smaller than the 118,010,054-byte original, about 9.9× smaller. It plays in Chrome on the same machine that showed a black box for the original.

What compatibility cost: same size, different codec

To see the price of H.264, I encoded the same phone file locally with x265 (HEVC) at the same 2.24 Mbps video bitrate VidSmaller used, then with x264 (H.264) at higher bitrates until it caught up. I scored every file against the original with VMAF (ffmpeg 8.1, vmaf_4k_v0.6.1 model, all 1,200 frames). The VidSmaller output scored 52.1. A local x264 encode at the same bitrate and speed preset scored 52.2, so the service isn't doing anything worse than plain x264. This is just what H.264 can do at 2.2 Mbps on 4K foliage.

EncodeBytesVMAF meanVMAF 5th pctSSIM
VidSmaller H.264, 12 MB target11,887,67252.138.30.751
Local x264 faster, 2240k12,754,32052.238.40.753
Local x264 faster, 4000k22,044,54866.254.30.919
Local x264 faster, 4500k24,353,69769.558.20.941
Local x264 faster, 6500k34,149,87979.169.30.974
Local x265 faster, 1000k6,126,77758.045.60.862
Local x265 faster, 1400k7,918,22162.952.90.908
Local x265 faster, 2240k12,128,32369.760.20.945

Two things stand out. HEVC at about 6.1 MB already beats H.264 at 12 MB (58.0 vs 52.1). And H.264 needs about 24.4 MB to match what HEVC does in 12.1 MB. On this clip, compatibility costs roughly 2× the file size at equal quality. Here's what that looks like at 100% (frame 360, a 420×420 crop of the 4K frame):

100 percent crops of frame 360: phone HEVC original, VidSmaller H.264 at 12 MB (blocky, VMAF 52.1), local x265 at the same size (VMAF 69.7), local H.264 at twice the size (VMAF 69.5)

At 12 MB the H.264 copy breaks the grass and paving into blocks. The HEVC copy at the same size and the H.264 copy at twice the size both hold the fence and stones. Scaled to a phone screen, the 12 MB version looks fine. Full-screen on a 27-inch monitor, you'd notice. If you're not sure how big a target you can afford, the video size calculator turns minutes and a target into a bitrate, and the upload limits page lists the caps per platform.

When to convert HEVC to H.264, and when to keep it

  • Convert to H.264 when someone reports audio but no picture, when a web form or LMS rejects the file, when it's going to an older Windows PC or TV, or when you don't know what the recipient will open it with.
  • Pick a bigger target for H.264 than you would for HEVC: on detailed 4K footage, about twice the size for the same look. Still far smaller than the phone original (24.4 MB was −79.4% here).
  • Keep HEVC when it only goes between Apple devices, recent Android phones, or Windows machines with HEVC support, and the smallest file matters more than playing everywhere.
  • Don't convert just to compress. If the file already plays everywhere it needs to, shrinking it as HEVC keeps more quality per megabyte.

If you'd rather the video never leaves your machine, videocompress.dev is a sister tool that compresses in the browser instead.

Method notes

  • One real run on vidsmaller.com on 28 Oct 2026, signed out (the free no-sign-up credit), headless Chrome 156 on Linux. Everything else is local and labelled as such.
  • The test clip is a 40 s cut from "Walking China - A Stroll in a Classic Chinese Garden in Suzhou City - Xiyuan Temple Garden (4K)" by Walking China, CC BY 3.0, via Wikimedia Commons. The original is HDR VP9; I tone-mapped it to SDR BT.709 and re-encoded it with x265 as a 4K 30 fps HEVC .mov to imitate a phone recording. That re-encode is the "original" all scores are measured against.
  • Local encodes: ffmpeg 7.1, libx264/libx265 preset faster, two-pass at the listed bitrates, audio copied. VMAF/SSIM: ffmpeg 8.1 libvmaf, 4K model, every frame, aligned frame by frame.
  • The VidSmaller encode reported x264 two-pass at 2207 kb/s with settings matching the "faster" preset (ref=2, subme=4), which is why my local x264 run lands within 0.1 VMAF of it.
  • One clip is one clip. Static or low-detail footage will show a smaller gap between the codecs. Leafy handheld 4K is close to the worst case.

Related: the same H.264 vs H.265 question from other angles — when the size target still fails (DEV.to), when the file still won't fit (Medium), and measured before you pay for H.265 (Hashnode).

评论

此博客中的热门博文

Before You Hit Upload in WordPress: Weigh, Compress and Re-Weigh Your Phone Photos (29 MB → 7 MB)

Got iPhone Photos as .HEIC? Convert Them to JPG With Your Wi-Fi Off (I Tested It)

Your Video Is “Under the Limit” and Still Gets Rejected: How to Pick the Right Target Size