Skip to main content

Video Codecs Explained

Sep 12, 2026 • 10 min read

A codec (coder-decoder) is the algorithm that compresses raw video into a file and decompresses it for playback. Your browser must support the codec to extract frames — no codec support = no extraction.

🎯 TL;DR — Codec Support in Our Tool

CodecBrowser SupportContainerAction
H.264 / AVC✅ UniversalMP4, MOVWorks everywhere — recommended
HEVC / H.265⚠️ VariesMP4, MOVSafari ✅, Chrome/Edge need HW, Firefox ❌
VP8✅ UniversalWebMWorks everywhere (legacy WebM)
VP9✅ ModernWebMChrome/Firefox/Edge/Safari 14+ ✅
AV1⚠️ ModernWebM, MP4Chrome/Firefox/Edge ✅, Safari 16+ ⚠️
ProRes 422/4444❌ NoneMOVTranscode to H.264 first
DNxHD/DNxHR❌ NoneMOVTranscode to H.264 first

Codec Deep Dives

H.264 / AVC — The Universal Standard

Status: ✅ Works everywhere — Chrome, Firefox, Safari, Edge, iOS, Android, Smart TVs.

  • Mature, hardware-accelerated on every device since ~2010.
  • 8-bit 4:2:0 (standard), 10-bit 4:2:2 (Hi10P) — browser support for 10-bit varies.
  • Baseline/Main/High profiles — High profile is standard for HD.
  • Best practice: Encode at CRF 18–20, preset medium/fast for extraction source.

HEVC / H.265 — The Efficiency Upgrade

Status: ⚠️ Hardware-dependent. ~50% better compression than H.264.

PlatformHEVC SupportNotes
Safari (macOS/iOS)✅ NativeFull hardware decode since 2017
Chrome (Windows)⚠️ With HWNeeds Intel 7th gen+ / AMD RDNA / Nvidia Pascal+
Chrome (Mac)✅ Via VideoToolboxApple Silicon / T2 / AMD dGPU
Firefox❌ NoLicensing refusal — no HEVC support
Edge (Windows)⚠️ With HWSame as Chrome — needs HEVC extensions

Our tool: Falls back to software decode if hardware missing — slower, may fail on high-res. Transcode to H.264 for guaranteed extraction.

VP9 — Google's Web Codec

Status: ✅ Excellent modern support. Royalty-free, used by YouTube, Netflix.

  • Native in Chrome, Firefox, Edge, Safari 14+.
  • Supports alpha channel (VP9 with alpha) — perfect for transparent WebM.
  • Hardware decode on most devices 2016+.
  • Best for: WebM screen recordings, web delivery, transparency.

AV1 — The Next Generation

Status: ⚠️ Cutting edge. ~30% better than HEVC, royalty-free.

  • Chrome 70+, Firefox 67+, Edge 79+, Safari 16.4+ (partial).
  • Hardware decode: Intel 11th gen+, AMD RDNA2+, Apple M1+, Nvidia RTX 30-series+.
  • Supports alpha, HDR, 10/12-bit.
  • Note: Safari support still evolving — test before relying on it.

ProRes / DNxHD — Professional Intermediates

Status:Zero browser support. These are editing codecs, not delivery codecs.

  • ProRes 422/422 HQ/4444/4444 XQ — 10-bit, 4:2:2 or 4:4:4, alpha in 4444.
  • DNxHD/DNxHR — Avid equivalent, similar profile structure.
  • File sizes: 100–500 Mbps (vs 5–20 Mbps for H.264).
  • Must transcode before extraction.

Transcoding for Extraction — Quick Commands

FFmpeg — Universal Transcoder

# ProRes MOV → H.264 MP4 (high quality, fast) ffmpeg -i input.mov -c:v libx264 -crf 18 -preset fast -pix_fmt yuv420p output.mp4 # ProRes 4444 (with alpha) → WebM VP9 with alpha ffmpeg -i input.mov -c:v libvpx-vp9 -auto-alt-ref 0 -pix_fmt yuva420p -b:v 0 output.webm # DNxHR → H.264 MP4 ffmpeg -i input.mov -c:v libx264 -crf 18 -preset fast output.mp4 # HEVC → H.264 (if browser can't decode) ffmpeg -i input.mp4 -c:v libx264 -crf 18 -preset fast output.mp4 # Any → H.264 MP4 (safe universal) ffmpeg -i input.* -c:v libx264 -crf 18 -preset fast -pix_fmt yuv420p -movflags +faststart output.mp4

HandBrake — GUI Alternative

  1. Open HandBrake → Load source file
  2. Preset: "Fast 1080p30" or "HQ 1080p30"
  3. Video tab: H.264 (x264), RF 18–20, Fast or Medium preset
  4. Dimensions: Keep source resolution (or downscale if 4K+)
  5. Start Encode → Save as .mp4

Shutter Encoder — Pro Alternative

Free, powerful, supports ProRes/DNxHR input → H.264/HEVC/VP9/AV1 output. Good batch queue.

Common Extraction Errors & Fixes

❌ "Worker/Decoder Failed to Start"

Cause: Codec not supported by browser WebCodecs (ProRes, DNxHR, HEVC without HW).

Fix: Transcode to H.264 MP4 using FFmpeg/HandBrake above.

❌ "SEEK_TIMEOUT: Video seeking timed out"

Cause: Corrupted file, non-standard container, or codec browser can't seek in.

Fix: Remux with FFmpeg: ffmpeg -i input.mov -c copy output.mp4 (no re-encode, fixes container).

❌ "ZIP_FAILED: Could not create ZIP archive"

Cause: Too many frames / too large → browser OOM.

Fix: Lower FPS, use WebP/JPG, chunk video, close other tabs.

❌ "CODEC_UNSUPPORTED"

Cause: Browser can't decode the codec at all (ProRes, DNxHR, obscure codecs).

Fix: Transcode to H.264. That's it — H.264 always works.

❌ Black frames / green frames / corrupted output

Cause: Variable frame rate (VFR) confusing seek, or hardware decoder bug.

Fix: Force CFR in transcode: ffmpeg -i input -vsync cfr -c:v libx264 ...

How to Check Your Video's Codec

FFprobe (CLI)

ffprobe -v error -select_streams v:0 -show_entries stream=codec_name,codec_long_name,profile,pix_fmt,width,height,r_frame_rate -of csv=p=0 input.mp4

MediaInfo (GUI)

Free, cross-platform. Drag file → shows codec, profile, bitrate, frame rate, color space.

Browser DevTools

  1. Open video in new tab (or our tool)
  2. Right-click video → "Show video info" (Chrome) / "Video stats for nerds" (YouTube)
  3. Shows codec, resolution, frame rate, bitrate

Codec Selection Checklist for Extraction

Extract Frames Free →