====== ffmpeg - Hardware Acceleration using GPU - Benchmark ====== ===== Null muxer ===== A simple way to benchmark decoding is to use the null muxer: ffmpeg -i input -f null - **NOTE:** The following parts of the command forces a null file: -f null - ---- ===== Timing decoding ===== Linux and macOS users can add the time command: time ffmpeg -i input -f null - returns: [...] real 0m3.115s user 0m0.223s sys 0m0.244s **NOTE:** See **man time** for more info. ---- ===== Benchmark option ===== The **-benchmark** option can be added to output CPU time and maximum memory consumption: time ffmpeg -i input -benchmark -f null - returns: [...] bench: utime=0.154s stime=0.196s rtime=3.000s bench: maxrss=365256kB ---- ===== Choosing streams ===== If you want to just decode a particular stream then use the map option: ffmpeg -i input -map 0:a:0 -f null - **NOTE:** Another approach to ignore streams is to use: * **-an** to ignore audio streams. * **-vn** to ignore video streams. ---- ===== Threads ===== You can decode with one thread if you want to: ffmpeg -threads 1 -i input -f null - **NOTE:** Not all decoders have threading capabilities and some have several. You can check decoder details such as ffmpeg -h decoder=h264 ---- ===== Choosing a decoder ===== There can be several decoders available for a format. You can name the decoder if you do not want to rely on the default: ffmpeg -c:v vp8 -i input -f null - ffmpeg -c:v libvpx -i input -f null - ---- ===== Example ===== ffmpeg -hwaccel vaapi -hwaccel_device /dev/dri/renderD128 -hwaccel_output_format vaapi -i input.mp4 -c:v hevc_vaapi -q:v 28 -f null - -benchmark returns: ... bench: utime=0.156s stime=0.195s rtime=3.003s bench: maxrss=358944kB **NOTE:** **maxrss** indicates the maximum RAM used during the ffmpeg execution. * **utime**: user time. * utime is the sum of processing time across all threads. Since they may operate in parallel, utime can exceed rtime. * **stime**: system time. * **rtime**: real time.