[FFmpeg-user] Multicore CPU run

Dennis Mungai dmngaie at gmail.com
Sat Feb 2 18:14:57 EET 2019

On Sat, 2 Feb 2019 at 18:47, Mahmood Naderan <mahmood.nt at gmail.com> wrote:

> >Then don't use the cuda filter.
> So, my time measurements show that
> CPU:  ./ffmpeg  -i ../4k_normal.mp4 -vf scale=1280:720 720p1.mp4
> real    0m23.748s
> GPU: ./ffmpeg -hwaccel cuvid -c:v h264_cuvid -i ../4k_normal.mp4 -vf
> scale_npp=1280:720 -c:v h264_nvenc 720p1.mp4
> real    0m20.889s
> Do you think that is normal?
> Regards,
> Mahmood
> _______________________________________________
> ffmpeg-user mailing list
> ffmpeg-user at ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-user
> To unsubscribe, visit link above, or email
> ffmpeg-user-request at ffmpeg.org with subject "unsubscribe".

And yes, what you're seeing here is normal.

The scale filter is software based (and doesn't thread so well).
The scale_npp (and scale_cuda) run on the GPU and should be slightly faster
for single transcodes, and much faster with 1:N transcodes.
There's a patch set on this mailing list that speeds up 1:N transcodes when
paired with multiple scalers behind -filter_complex, via a new abr_pipeline

For initializing the device for filtering, pass this to ffmpeg before the
-i section:

-init_hw_device cuda=0 -filter_hw_device 0

Assuming you're also running the NVENC encoder on that GPU number (via the
-gpu 0 ) option, etc, when you have multiple NVENC capable GPUs.

And for the scaler, you'll want to call up a hwupload+format filter chain
as shown:


Using your sample above:

./ffmpeg -init_hw_device cuda=0 -i ../4k_normal.mp4 -vf
format=nv12,hwupload,scale_npp=1280:720 -c:v h264_nvenc 720p1.mp4

Try that and report back.

More information about the ffmpeg-user mailing list