[FFmpeg-user] Using FFMpeg with Nvidia CUDA to crop and scale videos

Ferdi Scholten ferdi at sttc-nlp.nl
Tue Sep 10 19:21:18 EEST 2024


My NVIDIA and FFMPEG configuration is as follows:
> Linux TestBox1 6.8.0-41-generic #41-Ubuntu SMP PREEMPT_DYNAMIC Fri Aug
> 2 20:41:06 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
>
> NVIDIA-Linux-x86_64-560.31.02
>
> ffmpeg version git-2024-08-19-507c2a577
> encoders:
>   V....D av1_nvenc            NVIDIA NVENC av1 encoder (codec av1)
>   V....D h264_nvenc           NVIDIA NVENC H.264 encoder (codec h264)
>   V....D hevc_nvenc           NVIDIA NVENC hevc encoder (codec hevc)
> decoders:
>   V..... av1_cuvid            Nvidia CUVID AV1 decoder (codec av1)
>   V..... h264_cuvid           Nvidia CUVID H264 decoder (codec h264)
>   V..... hevc_cuvid           Nvidia CUVID HEVC decoder (codec hevc)
>   V..... mjpeg_cuvid          Nvidia CUVID MJPEG decoder (codec mjpeg)
>   V..... mpeg1_cuvid          Nvidia CUVID MPEG1VIDEO decoder (codec
> mpeg1video)
>   V..... mpeg2_cuvid          Nvidia CUVID MPEG2VIDEO decoder (codec
> mpeg2video)
>   V..... mpeg4_cuvid          Nvidia CUVID MPEG4 decoder (codec mpeg4)
>   V..... vc1_cuvid            Nvidia CUVID VC1 decoder (codec vc1)
>   V..... vp8_cuvid            Nvidia CUVID VP8 decoder (codec vp8)
>   V..... vp9_cuvid            Nvidia CUVID VP9 decoder (codec vp9)
> filters:
>   ... bilateral_cuda    V->V       GPU accelerated bilateral filter
>   T.. bwdif_cuda        V->V       Deinterlace CUDA frames
>   ... chromakey_cuda    V->V       GPU accelerated chromakey filter
>   ... colorspace_cuda   V->V       CUDA accelerated video color
> converter
>   ..C crop              V->V       Crop the input video.
>   T.C cropdetect        V->V       Auto-detect crop size.
>   ... hwupload_cuda     V->V       Upload a system memory frame to a
> CUDA device.
>   ... overlay_cuda      VV->V      Overlay one video on top of another
> using CUDA
>   ... scale_cuda        V->V       GPU accelerated video resizer
>   ... scale_npp         V->V       NVIDIA Performance Primitives video
> scaling and format conversion
>   ... scale2ref_npp     VV->VV     NVIDIA Performance Primitives video
> scaling and format conversion to the given reference.
>   ... sharpen_npp       V->V       NVIDIA Performance Primitives video
> sharpening filter.
>   ... thumbnail_cuda    V->V       Select the most representative frame
> in a given sequence of consecutive frames.
>   ... transpose_npp     V->V       NVIDIA Performance Primitives video
> transpose
>   T.. yadif_cuda        V->V       Deinterlace CUDA frames
>
> I would like to be able to use CUDA to crop and scale videos but I
> cannot find the correct syntax.
> My efforts usually work in terms of the scale but not the crop, here is
> an example of the type of problems I have been having:
>
> The source file in this example is a short mpeg2 video (960x540 with
> black bars top and bottom). The command is currently run from a bash
> script.
>
> ffmpeg -y -hwaccel cuda -hwaccel_output_format cuda -c:v mpeg2_cuvid -
> crop 960x408x0x66 -i $1 -vf scale_npp=1280x544 -c:a copy -c:v
> h264_nvenc -b:v 2M -preset slow $2
>
> This is throwing the following error:
>
> [mpeg2_cuvid @ 0x5e6d9deb56c0] cuvid decode callback error
> [vist#0:0/mpeg2video @ 0x5e6d9de85b40] [dec:mpeg2_cuvid @
> 0x5e6d9de7b7c0] Decoding error:        Generic error in an external
> library
>
> I have looked around the web but none of the solutions offered have
> worked for me.
>
> Do I have a problem with my ffmpeg build, should the list of filters
> include something like crop_cuda or crop_npp or have I just got the
> wrong syntax to perform everything on the GPU (is it even possible).
>
> Thanks for any suggestions.
>
Some suggestions

-Specify exact type of your Nvidia card, support for cuda and/or 
encode/decode is different or even absent, depending on card type (even 
within the same product range using the same GPU). For example, my 
Pascal based Quadro P500 has no video encode/decode support at all.
-Check if you have "NVIDIA compute utilities" installed with the same 
version as your driver, as the error seems to suggest this is missing or 
incomplete.
-We also need your full ffmpeg commandline and full uncut output of that 
commandline.


More information about the ffmpeg-user mailing list