Encode bakeoff · 2026-07-22
VideoToolbox is the Mac-only encode wedge.
For a 20-minute 1080p30 source, M2 Max finished VideoToolbox H.264 at 8 Mbps in 95.1 s and software libx264 medium CRF23 in 102.8 s. The same libx264 job on a Docker Cloudflare standard-1 shape took 2371 s - about 23× slower than Mac x264.
Source: 20-minute 1080p30 scaffold (ultrafast generate is not the sellable step).
Mac path: VideoToolbox H.264 8 Mbps + libx264 medium CRF23 on M2 Max.
Cloud path: Docker
Blocked: M1 Air ffmpeg rows - binary/Homebrew missing on SSH PATH. Remotion Lambda and Blender Cycles were not run.
Mac path: VideoToolbox H.264 8 Mbps + libx264 medium CRF23 on M2 Max.
Cloud path: Docker
--cpus=0.5 --memory=4g libx264 only (no VideoToolbox on Linux CF).Blocked: M1 Air ffmpeg rows - binary/Homebrew missing on SSH PATH. Remotion Lambda and Blender Cycles were not run.
VT H.264 · M2 Max95.1 s20 min @ 8 Mbps
libx264 · M2 Max102.8 smedium CRF23
libx264 · CF-shape2371 s0.5 vCPU / 4 GiB
CF rate-card est.~$0.047wall × published rates
| Step | M2 Max wall | Docker CF-shape | CF $ (rate-card) |
|---|---|---|---|
| Generate src (scaffolding) | 147.8 s | host-generated | - |
| VideoToolbox H.264 8 Mbps | 95.1 s | N/A on CF Linux | - |
| libx264 medium CRF23 | 102.8 s | 2371.1 s | ~$0.0474 |
Why this matters for a video API
Software x264 on a tiny container is a different product from Mac-native VideoToolbox. RenderMac’s ffmpeg.transcode.v1 contract can declare VideoToolbox intent because the runner is Apple Silicon - not because we pretend Linux containers grow a VT encoder.