Home of Intel-Optimized FFmpeg®
10K+
This is a common software stack for media transcode workload with FFmpeg. It supports x264, x265, SVT-HEVC and SVT-AV1.
The sample commands are just for reference only. Please run the command according to the real scenario and replace the test stream.
Command without NUMA affinity:
ffmpeg -y -i /home/archive/crowd_run_1080p50_x264.mp4 -c:v libx264 -preset medium -x264-params "keyint=120:min-keyint=120:sliced-threads=0:scenecut=0:asm=avx2:threads=8" -tune psnr -profile:v high -b:v 6M -maxrate 12M -bufsize 24M -r 60 -y 1080p.mp4
Command with NUMA affinity and AVX2:
numactl --membind=0 --cpunodebind=0 -- ffmpeg -y -i /home/archive/crowd_run_1080p50_x264.mp4 -c:v libx264 -preset medium -x264-params "keyint=120:min-keyint=120:sliced-threads=0:scenecut=0:asm=avx2:threads=8" -tune psnr -profile:v high -b:v 6M -maxrate 12M -bufsize 24M -r 60 -y 1080p.mp4
Command with cores binding and AVX512
numactl --membind=0 --physcpubind=0-7 -- ffmpeg -y -i /home/archive/crowd_run_1080p50_x264.mp4 -c:v libx264 -preset medium -x264-params "keyint=120:min-keyint=120:sliced-threads=0:scenecut=0:asm=avx512:threads=8" -tune psnr -profile:v high -b:v 6M -maxrate 12M -bufsize 24M -r 60 -y 1080p.mp4
AVX512 optimized Command with NUMA socket 0 and cores number 8. x265 library support numa setting via -x265-params numa-pools=0. numactl only set the numa affinity for the ffmpeg thread(not x265 thread).
ffmpeg -y -i /home/archive/crowd_run_1080p50_x264.mp4 -c:v libx265 -preset medium -x265-params "keyint=120:min-keyint=120:scenecut=0:asm=avx512:numa-pools=0:pools=8" -tune psnr -profile:v main -b:v 6M -maxrate 12M -bufsize 24M -r 60 -y 1080p.mp4
ffmpeg -y -i /home/archive/crowd_run_1080p50_x264.mp4 -c:v libsvt_hevc -preset 5 -profile:v 1 -rc 1 -g 119 -sc_detection 0 -b:v 5M -maxrate 10M -bufsize 20M -y 1080P.mp4
ffmpeg -y -i /home/archive/crowd_run_1080p50_x264.mp4 -c:v libsvtav1 -profile:v main -rc 1 -g 119 -sc_detection 0 -b:v 4M -maxrate 8M -bufsize 16M -y 1080p.mp4
There are two common docker images: intel/intel-optimized-ffmpeg:avx2 and intel/intel-optimized-ffmpeg:avx3, which only contain common FFmpeg software stack and no extra benchmarking python scripts/streams.
Example to run the command with docker image for x264: with and without numa cores binding. Please mount the test stream in the folder /home/archive of docker container.
NUMA Socket 0 binding:
docker run -ti --privileged -v localpath:/home/archive ffmpeg-base-avx2:latest numactl --membind=0 --cpunodebind=0 -- ffmpeg -y -i /home/archive/crowd_run_1080p50_x264.mp4 -c:v libx264 -preset medium -x264-params "keyint=120:min-keyint=120:sliced-threads=0:scenecut=0:asm=avx2:threads=8" -tune psnr -profile:v high -b:v 6M -maxrate 12M -bufsize 24M -r 60 -y 1080p.mp4
Cores binding:
docker run -ti --privileged -v localpath:/home/archive ffmpeg-base-avx2:latest numactl --membind=0 --physcpubind=0-7 -- ffmpeg -y -i /home/archive/crowd_run_1080p50_x264.mp4 -c:v libx264 -preset medium -x264-params "keyint=120:min-keyint=120:sliced-threads=0:scenecut=0:asm=avx512:threads=8" -tune psnr -profile:v high -b:v 6M -maxrate 12M -bufsize 24M -r 60 -y 1080p.mp4
Content type
Image
Digest
sha256:0ee8cc8bd…
Size
908.6 MB
Last updated
almost 3 years ago
docker pull intel/intel-optimized-ffmpeg:avx3-srcPulls:
322
Last week