FFMpeg 从硬件解码媒体和软件解码媒体创建图像

FFMpeg 从硬件解码媒体和软件解码媒体创建图像

我正在尝试从视频中创建特定时间戳的图像缩略图。在执行此活动时,我想出了两个命令。一些视频通过第一个命令成功处理,一些视频通过第二个命令处理。

根据我的理解,一些视频正在通过硬件解码,一些视频正在通过 ffmpeg 软件解码,因此我使用scale_cudahwdownload将帧从 GPU 内存缩放和下载到主内存。

对于硬件可解码媒体:

ffmpeg -hwaccel cuvid -hwaccel_output_format cuda -ss 00:00:10.0 -i "intput.mp4" -vf "scale_cuda=1024:576,hwdownload,format=nv12,setsar=1:1" -frames:v 1 output.jpg

对于软件可解码媒体:

ffmpeg -hwaccel cuvid -hwaccel_output_format cuda -ss 00:00:10.0 -i "input.mp4" -vf "scale=1024:576,format=nv12,setsar=1:1" -frames:v 1 output.jpg

每个视频都可以使用上述两个命令之一,但使用另一个命令则无法正常工作。(这两个视频都具有相同的编解码器 h264,并且我的 nvidia gpu 支持硬件解码)

我在这里的疑问是为什么有些媒体是硬件解码的,而有些媒体是软件解码的。我如何才能预先知道哪些媒体是硬件可解码的,哪些是软件可解码的。

相关内容