Performance
Give your SBC, mini PC or compact Linux server hardware video processing through a Mac on the LAN, without adding a discrete GPU.
Remote VideoToolbox delivers 186–209 fps in the 1080p moving-video tests, with less than one CPU second of Linux FFmpeg work per 60-second clip.
Static color bars are a control. Use the moving inputs for quality comparisons.
Speed is the median of three complete transcodes. Hover or tap a bar for exact values and run ranges. Remote CPU time measures the Linux FFmpeg client.
Exact values for this comparison
All measured results
Big Buck Bunny — all codecs and resolutions
H.264 High · 720p
| Pipeline | fps | VMAF | File MB | File Mb/s |
|---|---|---|---|---|
| Intel iGPU VA-API | 434.7 | 91.98 | 30.034 | 4.004 |
| CPU fast | 100.2 | 97.73 | 29.99 | 3.999 |
| CPU medium | 76.8 | 97.75 | 30.0 | 4.0 |
| VideoToolbox local | 241.0 | 91.08 | 29.479 | 3.931 |
| VideoToolbox remote | 391.7 | 96.16 | 29.515 | 3.935 |
| NVIDIA NVENC P4 | 579.7 | 93.54 | 29.457 | 3.928 |
| NVIDIA NVENC P7 | 390.5 | 93.67 | 29.493 | 3.932 |
H.264 High · 1080p
| Pipeline | fps | VMAF | File MB | File Mb/s |
|---|---|---|---|---|
| Intel iGPU VA-API | 302.2 | 96.61 | 44.962 | 5.995 |
| CPU fast | 66.6 | 97.6 | 45.001 | 6.0 |
| CPU medium | 44.6 | 97.64 | 45.0 | 6.0 |
| VideoToolbox local | 199.7 | 95.68 | 44.981 | 5.997 |
| VideoToolbox remote | 200.9 | 95.68 | 44.976 | 5.997 |
| NVIDIA NVENC P4 | 390.8 | 97.16 | 44.759 | 5.968 |
| NVIDIA NVENC P7 | 192.4 | 97.34 | 44.886 | 5.985 |
HEVC Main · 720p
| Pipeline | fps | VMAF | File MB | File Mb/s |
|---|---|---|---|---|
| Intel iGPU VA-API | 211.9 | 92.06 | 22.539 | 3.005 |
| CPU fast | 28.7 | 97.19 | 22.947 | 3.06 |
| CPU medium | 26.5 | 97.25 | 22.965 | 3.062 |
| VideoToolbox local | 261.2 | 91.4 | 22.084 | 2.945 |
| VideoToolbox remote | 331.1 | 91.4 | 22.083 | 2.944 |
| NVIDIA NVENC P4 | 579.8 | 92.69 | 22.543 | 3.006 |
| NVIDIA NVENC P7 | 283.3 | 92.86 | 22.602 | 3.014 |
HEVC Main · 1080p
| Pipeline | fps | VMAF | File MB | File Mb/s |
|---|---|---|---|---|
| Intel iGPU VA-API | 162.3 | 96.07 | 30.033 | 4.004 |
| CPU fast | 21.3 | 96.31 | 30.093 | 4.012 |
| CPU medium | 17.3 | 96.65 | 30.04 | 4.005 |
| VideoToolbox local | 184.7 | 95.64 | 29.462 | 3.928 |
| VideoToolbox remote | 186.1 | 95.63 | 29.464 | 3.928 |
| NVIDIA NVENC P4 | 352.5 | 95.24 | 30.425 | 4.057 |
| NVIDIA NVENC P7 | 137.3 | 95.43 | 30.538 | 4.072 |
Moving testsrc2 signal — all codecs and resolutions
H.264 High · 720p
| Pipeline | fps | VMAF | File MB | File Mb/s |
|---|---|---|---|---|
| Intel iGPU VA-API | 502.8 | 93.41 | 29.893 | 3.986 |
| CPU fast | 135.8 | 98.19 | 30.06 | 4.008 |
| CPU medium | 111.2 | 98.49 | 30.073 | 4.01 |
| VideoToolbox local | 286.8 | 92.6 | 30.029 | 4.004 |
| VideoToolbox remote | 350.8 | 92.51 | 30.035 | 4.005 |
| NVIDIA NVENC P4 | 547.0 | 95.55 | 29.84 | 3.979 |
| NVIDIA NVENC P7 | 396.1 | 95.43 | 29.792 | 3.972 |
H.264 High · 1080p
| Pipeline | fps | VMAF | File MB | File Mb/s |
|---|---|---|---|---|
| Intel iGPU VA-API | 295.0 | 95.86 | 44.853 | 5.98 |
| CPU fast | 89.7 | 95.97 | 45.105 | 6.014 |
| CPU medium | 75.3 | 96.57 | 45.09 | 6.012 |
| VideoToolbox local | 206.8 | 95.68 | 45.028 | 6.004 |
| VideoToolbox remote | 209.1 | 95.68 | 45.025 | 6.003 |
| NVIDIA NVENC P4 | 419.8 | 96.7 | 45.548 | 6.073 |
| NVIDIA NVENC P7 | 193.7 | 96.85 | 45.432 | 6.058 |
HEVC Main · 720p
| Pipeline | fps | VMAF | File MB | File Mb/s |
|---|---|---|---|---|
| Intel iGPU VA-API | 219.7 | 93.04 | 22.43 | 2.991 |
| CPU fast | 34.7 | 97.74 | 22.541 | 3.005 |
| CPU medium | 32.8 | 97.72 | 22.547 | 3.006 |
| VideoToolbox local | 254.2 | 92.51 | 22.63 | 3.017 |
| VideoToolbox remote | 339.0 | 92.42 | 22.643 | 3.019 |
| NVIDIA NVENC P4 | 547.5 | 94.81 | 22.466 | 2.996 |
| NVIDIA NVENC P7 | 286.2 | 94.89 | 22.452 | 2.994 |
HEVC Main · 1080p
| Pipeline | fps | VMAF | File MB | File Mb/s |
|---|---|---|---|---|
| Intel iGPU VA-API | 169.7 | 94.56 | 30.044 | 4.006 |
| CPU fast | 25.4 | 93.27 | 30.015 | 4.002 |
| CPU medium | 24.0 | 94.18 | 30.039 | 4.005 |
| VideoToolbox local | 186.4 | 94.0 | 30.159 | 4.021 |
| VideoToolbox remote | 189.2 | 94.0 | 30.174 | 4.023 |
| NVIDIA NVENC P4 | 357.1 | 93.99 | 29.808 | 3.974 |
| NVIDIA NVENC P7 | 138.0 | 94.63 | 29.845 | 3.979 |
Static SMPTE bars (control) — all codecs and resolutions
Static bars are controls. Use the moving inputs for quality comparisons.
H.264 High · 720p
| Pipeline | fps | VMAF | File MB | File Mb/s |
|---|---|---|---|---|
| Intel iGPU VA-API | 490.7 | 93.84 | 0.261 | 0.035 |
| CPU fast | 289.3 | 97.43 | 0.143 | 0.019 |
| CPU medium | 265.7 | 97.42 | 0.15 | 0.02 |
| VideoToolbox local | 314.4 | 93.58 | 0.185 | 0.025 |
| VideoToolbox remote | 359.6 | 93.58 | 0.182 | 0.024 |
| NVIDIA NVENC P4 | 591.3 | 95.45 | 0.381 | 0.051 |
| NVIDIA NVENC P7 | 417.0 | 95.45 | 0.296 | 0.04 |
H.264 High · 1080p
| Pipeline | fps | VMAF | File MB | File Mb/s |
|---|---|---|---|---|
| Intel iGPU VA-API | 318.7 | 97.44 | 0.219 | 0.029 |
| CPU fast | 181.7 | 97.43 | 0.185 | 0.025 |
| CPU medium | 171.3 | 97.43 | 0.191 | 0.026 |
| VideoToolbox local | 207.2 | 97.47 | 0.225 | 0.03 |
| VideoToolbox remote | 210.4 | 97.47 | 0.225 | 0.03 |
| NVIDIA NVENC P4 | 420.7 | 97.42 | 0.366 | 0.049 |
| NVIDIA NVENC P7 | 217.5 | 97.43 | 0.231 | 0.031 |
HEVC Main · 720p
| Pipeline | fps | VMAF | File MB | File Mb/s |
|---|---|---|---|---|
| Intel iGPU VA-API | 400.4 | 93.84 | 0.123 | 0.016 |
| CPU fast | 87.7 | 97.43 | 0.678 | 0.09 |
| CPU medium | 95.3 | 97.43 | 0.677 | 0.09 |
| VideoToolbox local | 308.2 | 93.55 | 0.41 | 0.055 |
| VideoToolbox remote | 355.6 | 93.55 | 0.396 | 0.053 |
| NVIDIA NVENC P4 | 650.2 | 95.46 | 0.249 | 0.033 |
| NVIDIA NVENC P7 | 286.6 | 95.45 | 0.233 | 0.031 |
HEVC Main · 1080p
| Pipeline | fps | VMAF | File MB | File Mb/s |
|---|---|---|---|---|
| Intel iGPU VA-API | 254.4 | 97.43 | 0.151 | 0.02 |
| CPU fast | 58.6 | 97.43 | 0.905 | 0.121 |
| CPU medium | 59.3 | 97.42 | 0.908 | 0.121 |
| VideoToolbox local | 187.7 | 97.37 | 0.484 | 0.064 |
| VideoToolbox remote | 189.9 | 97.37 | 0.484 | 0.064 |
| NVIDIA NVENC P4 | 376.9 | 97.41 | 0.221 | 0.03 |
| NVIDIA NVENC P7 | 138.2 | 97.42 | 0.203 | 0.027 |
File MB uses decimal megabytes. File Mb/s is the complete container bitrate reported by ffprobe. VMAF scores every frame of the first measured repeat. Download the measured data for SSIM, exact scored-file sizes, hashes, CPU time, energy and all repeat-level measurements.
Hardware and method
| Machine | Configuration |
|---|---|
| Linux | Intel Core i7-12650H, 32 GB RAM, Ubuntu 24.04; Intel iHD 24.3.4 / libva 2.22 |
| Mac | Apple M2, 16 GB RAM, macOS 15.7.5; both VideoToolbox pipelines |
| NVIDIA | GeForce RTX 3070 Ti, 8 GB VRAM; Ryzen 7 5800X3D, 48 GB RAM, Ubuntu 24.04; driver 580.178.04, 200.0 W GPU limit |
| Remote connection | Wired LAN; Mac interface negotiated 2.5 GbE |
These are complete decode → resize → encode → file workflows. Remote VideoToolbox sends compressed video from Linux to the Mac and receives the encoded output. Intel uses hardware decode, scale_vaapi and encode; CPU pipelines use software decode and bicubic scaling; native Mac uses hardware decode, scale_vt and encode. NVIDIA uses NVDEC, bicubic scale_cuda and NVENC with local files.
Inputs, settings and measurement details
- Big Buck Bunny: seconds 60–120 of the Blender Foundation’s 1080p30 Sunflower release. Credit: Big Buck Bunny, Blender Foundation; Sunflower release, Blender Institute. Project and licensing.
- Moving test signal: FFmpeg
testsrc2, 1920×1080 at 30 fps for 60 seconds. - Static color bars: FFmpeg
smptebarswith the same dimensions, frame rate and duration.
Prepared inputs use H.264 High, 8-bit BT.709, libx264 -preset fast -crf 10. All pipelines use the same preparation recipe and source segment. Quality is measured against the prepared input.
Each run processes one stream of H.264 High or HEVC Main, 8-bit 4:2:0 video at 30 fps. File budgets are 4/6 Mb/s for H.264 and 3/4 Mb/s for HEVC at 720p/1080p. Calibration adjusts the requested bitrate using the full clip. Tables report the actual file sizes and rates; static bars are controls.
Reported file sizes and bitrates include container overhead and filler. The NVENC and Mac energy matrices use whole-file calibration within 2% of the moving-video budgets.
All pipelines use average/VBR, a 60-frame maximum GOP and zero frame reordering. Both VideoToolbox paths require hardware encoding with realtime=0 and prio_speed=0.
NVENC uses P4 and P7 with tune=hq, rc=vbr, multipass=disabled and -bf 0, at a 200.0 W GPU limit.
Three measured repeats follow a 60-frame warm-up. Pipeline order rotates and jobs run sequentially. Throughput includes FFmpeg startup, video processing and writing the file. Calibration, validation and scoring run separately.
Outputs are independently decoded and checked for frame counts, format, dimensions, GOP and timestamps.
VMAF 0.6.1 and SSIM score all 1,800 frames of the first measured repeat, using bicubic reference resizing and aligned timestamps.
Binary and input SHA-256 hashes, scorer version and unrounded measurements are in the downloadable data.
Power and quality
Energy is measured over each complete transcode: Mac system for local VideoToolbox and GPU board for NVENC. Exact values include average watts and frames per joule.
| Input | Output | VideoToolbox, Mac system J | NVENC P4, GPU board J | NVENC P7, GPU board J |
|---|---|---|---|---|
| big-buck-bunny | H264 1280x720 | 33.7 | 297.7 | 429.1 |
| big-buck-bunny | H264 1920x1080 | 60.0 | 465.3 | 892.3 |
| big-buck-bunny | HEVC 1280x720 | 36.5 | 295.0 | 581.7 |
| big-buck-bunny | HEVC 1920x1080 | 57.6 | 500.8 | 1213.2 |
| testsrc2 | H264 1280x720 | 40.8 | 315.3 | 428.1 |
| testsrc2 | H264 1920x1080 | 49.3 | 431.3 | 877.0 |
| testsrc2 | HEVC 1280x720 | 40.0 | 317.4 | 582.7 |
| testsrc2 | HEVC 1920x1080 | 51.2 | 497.1 | 1199.8 |
| smptebars | H264 1280x720 | 34.0 | 300.7 | 408.3 |
| smptebars | H264 1920x1080 | 49.3 | 431.1 | 781.4 |
| smptebars | HEVC 1280x720 | 38.5 | 282.8 | 576.7 |
| smptebars | HEVC 1920x1080 | 54.0 | 469.2 | 1197.6 |
Energy measurement and sources
Mac system energy integrates SMC PSTR power readings using mactop 2.1.6. NVENC energy uses the change in the NVML cumulative counter between FFmpeg start and end. Both include idle consumption during the transcode.
Measurement references: SMC system-power sensor, mactop power calculation, and NVIDIA NVML API.
Further reading: Waseda’s NVENC board/chip power study and Notebookcheck’s M2 Air power measurements.
Network and performance guidance
Use a wired LAN for remote encoding. Packet transcoding transfers compressed video in both directions, keeping bandwidth low. Raw-frame workflows such as OBS send the uncompressed frames to the Mac.
Reproduce the comparison
The benchmark instructions cover the five-pipeline suite, nvenc-suite and videotoolbox-energy, including preparation, dependencies and publication commands.