在FFMPEG中一次使用2个以上的NV_ENC



我目前正在使用在nodejs上运行fluent-ffmpeg的CPU上的线程生成延时视频。生成一个10秒的延时大约需要1分钟。我同时生成许多线程(基本上每个线程一个),这样我倾向于在8个工作线程. ...时获得最佳性能整个系统的吞吐量大约是每12秒一个视频。

使用h264_nvenc进行GPU处理,单线程时间约为3-4秒。耶!我出去买了一些nVidia 1660显卡。

不幸的是,当我去生成第三个同步视频时,我得到"转换失败!"FFMPEG错误。

一些基础研究似乎表明你一次只能做两件事。也许3个更新的驱动程序。

是否有解决这个问题的方法?这里的帖子表明这个限制是人为的,可以解决:https://www.techpowerup.com/268495/nvidia-silently-increases-geforce-nvenc-concurrent-sessions-limit-to-3

也许是一种使用所有cuda/张量/等核心来渲染延时视频而不仅仅依赖于有限的nv_enc的方法?

在我的GTX 1060和RTX 2080 Ti上当前限制3次渲染。另一个帖子说GTX 1660是一样的。所以这显然是人为的限制。看看上面发布的nVidia链接,上面有一个卡和它们的NVENC/NVDEC功能的列表,看起来大多数nVidia游戏卡本身都有这个3次渲染限制。然而,大多数现代(Pascal及以上)Quadro卡允许无限渲染每张卡。作为另一种解决方法,您可以在系统中放置多个游戏卡。FFmpeg有一个函数可以将特定的作业发送到您选择的卡片。与RTX 2080 Ti相同的编码器模块在GTX1660中,因此低端和高端卡之间应该没有太大的速度差异。也许内存总线宽度有一些细微的差异,但我没有将1660/2080Ti直接相互比较。我想说的是:如果你需要更多的编码能力,那就再买几张低端卡,用FFmpeg的内置功能来分配工作负载。

最新更新