Two parallelism flavors
- Within an encode — FFmpeg's libx264/libx265 use multiple threads automatically.
-threads 0(default) lets the encoder pick. Capping (-threads 4) is rarely useful unless you're running multiple encodes. - Across encodes — N FFmpeg processes encoding different files at the same time. This is where real throughput wins live.
The right N
For libx264 -preset slow on a 10-core M3 Pro, each encode pulls 4–6 cores. parallel -j 2 usually wins. -j 4 oversubscribes; encodes finish in roughly the same total time but each one feels slow. For hardware encoders, -j 1 or -j 2 — they share the media engine.