Benchmarks

These numbers are intended as a practical baseline for FFmpeg users evaluating whether a Mac hardware transcoding server is worth adding to a LAN workflow. Actual throughput depends on source content, bitrate, encoder options, client CPU, network, and whether the session sends raw frames or compressed packets.

v0.7.0 Validated Baseline

The primary v0.7.0 validation used a Linux client and an M2 Air VideoToolbox server connected at 2.5 GbE. Measured TCP capacity was approximately 1.93 Gb/s client-to-server and 2.35 Gb/s server-to-client. Encode comparisons use three alternating local/remote repeats, except the tuned HEVC 4K speed result from a two-repeat fixed-depth sweep. Decode and transcode comparisons use two repeats.

Encode

Codec and mode Resolution Local VideoToolbox Remote VideoToolbox Remote/local
H.264 default 1920x1080 182.3 fps 182.7 fps 100.3%
H.264 default 3840x2160 48.4 fps 48.3 fps 99.8%
HEVC Main10 default 1920x1080 189.7 fps 190.7 fps 100.5%
HEVC Main10 default 3840x2160 51.3 fps 51.1 fps 99.6%
HEVC Main10 prio_speed=1 1920x1080 316.5 fps 313.0 fps 98.9%
HEVC Main10 prio_speed=1 3840x2160 90.1 fps 89.0 fps 98.8%

All corrected encode cases preserved exact input-frame/output-packet counts. A fixed -vt_remote_inflight 32 performed best for the high-throughput HEVC 4K speed case. Encode wire traffic remained below approximately 600 Mb/s with LZ4, leaving substantial headroom on the tested link.

Decode and Transcode

Mode Codec and resolution Local VideoToolbox Remote VideoToolbox Remote/local
Raw decode H.264 3840x2160 169.2 fps 177.5 fps 104.9%
Raw decode HEVC Main 3840x2160 171.3 fps 218.1 fps 127.3%
Raw decode HEVC Main10 3840x2160 398.7 fps 117.3 fps 29.4%
Packet transcode HEVC Main10 3840x2160 83.5 fps 83.6 fps 100.2%

Raw Main10 decode returned approximately 1.8 Gb/s after LZ4 and was limited by P010 copying/compression and network transport. The equivalent packet-in/packet-out Main10 transcode used approximately 14 Mb/s in each direction and matched local throughput with exact 1,800-packet input/output counts.

Loopback Upper Bound

Apple Silicon loopback testing remains useful as an upper-bound reference: approximately 230 fps H.264 and 210 fps HEVC at 1080p, and 62 fps H.264 and 59 fps HEVC at 4K DCI (4096x2160). Wired LAN is strongly recommended: 1 GbE minimum and 2.5 GbE or faster for 4K.

These results use deterministic synthetic sources and short benchmark windows. Natural-video content, concurrent traffic, thermals, codec settings, and client-side filtering can materially change throughput.

What Affects Results

Reproduce Locally

Start a server on the Mac:

# Trusted private LAN only. Never expose this port directly to the internet.
vtremoted/.build/release/vtremoted --listen <MAC_PRIVATE_IP>:5555 --log-level 1

Run the benchmark script from the client checkout:

VTREMOTE_HOST=<mac-host> VTREMOTE_PORT=5555 VTREMOTE_USE_EXISTING=1 \
VTREMOTED=/bin/true tests/integration/bench_vtremote.sh

For release binaries, replace the local ffmpeg/ffmpeg path used by the script with the unpacked release client if needed.

FFMPEG=/path/to/ffmpeg FFPROBE=/path/to/ffprobe \
VTREMOTE_HOST=<mac-host> VTREMOTE_PORT=5555 VTREMOTE_USE_EXISTING=1 \
VTREMOTED=/bin/true tests/integration/bench_vtremote.sh

Interpreting Results

Compare remote encode, remote transcode, and local software or GPU paths on the same source file. For weak clients, slower networks, or HEVC Main10 pipelines that do not need raw client-side frames, prefer -vt_remote_transcode because the client sends compressed packets to the Mac and receives compressed packets back. For maximum-throughput HEVC encoding on a low-latency 2.5 GbE LAN, start with -vt_remote_inflight 32 and validate latency and throughput against the actual workload.

For security and deployment recommendations, see Security. For connection and throughput troubleshooting, see Troubleshooting.