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

SMF Forum 1 smf.forum1 at ntlworld.com
Tue Sep 10 11:15:03 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.


More information about the ffmpeg-user mailing list