Video 基于ffmpeg的GPU加速视频处理

Video 基于ffmpeg的GPU加速视频处理,video,ffmpeg,nvidia,Video,Ffmpeg,Nvidia,我想使用ffmpeg加速视频编码和解码与NVIDIA的GPU 发件人: NVIDIA GPU包含一个或多个基于硬件的解码器和编码器(独立于CUDA内核),可为几种流行的编解码器提供完全加速的基于硬件的视频解码和编码。解码/编码卸载后,图形引擎和CPU可自由进行其他操作 我的问题是:我可以使用CUDA内核对视频进行编码和解码吗?可能更快吗?FFmpeg提供了一个硬件加速子系统,其中包括NVIDIA: 为了支持使用NVIDIA GPU进行GPU辅助编码,您需要: 支持的操作系统驱动程序 ffm

我想使用ffmpeg加速视频编码和解码与NVIDIA的GPU

发件人:

NVIDIA GPU包含一个或多个基于硬件的解码器和编码器(独立于CUDA内核),可为几种流行的编解码器提供完全加速的基于硬件的视频解码和编码。解码/编码卸载后,图形引擎和CPU可自由进行其他操作


我的问题是:我可以使用CUDA内核对视频进行编码和解码吗?可能更快吗?

FFmpeg提供了一个硬件加速子系统,其中包括NVIDIA:

为了支持使用NVIDIA GPU进行GPU辅助编码,您需要:

  • 支持的操作系统驱动程序
  • ffmpeg配置为
    --启用nvenc
    (如果在配置时检测到驱动程序,则默认设置)

正如Mike提到的,ffmpeg包装了一些硬件加速。您应该首先使用它,而不是使用更低级的方法(正式的NVIDIA LIB)

这表明,NVENC可能是你的候选人

但是:要小心,因此需要一些基准测试。虽然GPU编码器应该非常快,但与CPU编码器相比,它们的视觉质量也较差

这里要检查的是:当某个给定比特率的某些质量是目标时,GPU编码器是否与CPU编码器竞争?我会说不(除了非常高的比特率或非常差的质量),但这取决于您的用例。GPU编码并非仅提供优势的灵丹妙药。

在以下方面快速使用:

库达

库维德

使用NVDEC和NVENC的全硬件转码:

ffmpeg -hwaccel cuda -hwaccel_output_format cuda -i input -c:v h264_nvenc -preset slow output
如果ffmpeg是在支持libnpp的情况下编译的,则可以使用它将基于GPU的定标器插入链中:

ffmpeg -hwaccel_device 0 -hwaccel cuda -i input -vf scale_npp=-1:720 -c:v h264_nvenc -preset slow output.mkv

来源:

是的,您可以使用cuda内核对视频进行编码和解码,就像您可以使用任何可编程处理器一样。你打算自己写那个软件吗?谢谢。我想同时对许多视频进行trancode,我自己编写编码/解码太难了。这似乎有帮助,对吗?名字上说它只是在解码。目前NVIDIA编码/解码支持仅通过NVNC和NVDEC提供,它们是硬件子系统,与CUDA没有直接关系,与CUDA核心分离。NVIDIA不再提供任何支持的库来加速使用CUDA的视频编码/解码。因此,您需要自己编写CUDA代码,或者找到第三方库来编写。如果您想获得第三方库的链接,那么这个问题对于SO来说是离题的。除非你真的想自己做编程工作,否则这个问题对SO来说是离题的。请参阅关于在FFmpeg中使用NVIDIA gpu进行硬件加速的答案。我已经尝试过,像解码和转码一样,它的运行速度与我笔记本电脑上的软解码(i5-4200U cpu,740M gpu)几乎相同,同时cpu负载更少。我怀疑它可能只是使用了NVNC和NVDEC,而不是cuda内核。所以我想使用cuda内核。如果有特殊的硬件,为什么要使用cuda内核?看。。。你没有给出关于用例的太多信息,似乎你缺少了一些基础知识。要么投资更多,更精确(包括分析,ffmpeg是怎么说的),要么让你的生活更轻松:使用CPU和预设的超高速或类似的编码(我们甚至不知道)。硬件编码器通常生成的输出质量比好的软件编码器(如x264)低得多,但是它们通常速度更快,并且不占用太多CPU资源。(也就是说,它们需要更高的比特率才能以相同的感知质量进行输出,或者它们以相同的比特率以更低的感知质量进行输出。)(From:)
ffmpeg -hwaccel cuda -hwaccel_output_format cuda -i input -c:v h264_nvenc -preset slow output
ffmpeg -hwaccel_device 0 -hwaccel cuda -i input -vf scale_npp=-1:720 -c:v h264_nvenc -preset slow output.mkv