端午节期间,站长把家里的Unraid服务器升级到6.12,但升级后,站长发现原本装在服务器里的GTX650显卡无法被驱动。考虑到这块显卡的功耗较高,且不支持现在的H265视频格式,于是站长决定更换掉服务器内的显卡,并让它在机器内发挥起作用。


GTX 650的编解码支持情况

为什么要插一块显卡?

1、站长的AIO服务器所用的CPU是AMD Ryzen 3500X。(用淘汰下来的东西做的服务器,大家就不要纠结处理器了。之所以没换成带G的处理器,是因为那个时候的Unraid对AMD核显的兼容性不是很好)
2、站长所用的这块X370主板不支持无头启动(其实这点有点牵强,因为CPU编码效率,大家懂得都懂)。

为什么要选Quadro系列显卡,而不选择Geforce和Tesla系列?

1、站长的需求是给Jellyfin做转码服务,而非打游戏。因此,只需要考虑这块显卡是否支持相关视频的硬件编解码(如H.264、H.265)就行了。
2、这个是7x24小时运行的环境。此时,功耗将成为选型的主要因素。

综上所述,因为Tesla功耗相对较高,因此它直接被淘汰出局。
从剩下的Geforce和Quadro中选择,此时我们就需要借助英伟达提供的支持手册来选型了。

要满足主流视频格式的编解码,相对最省钱的办法就是使用10系的显卡。虽然10系显卡也陷落在挖矿大潮中,但这边使用的都不是高端,甚至甜品级的显卡。因此,相对低端的Geforce和Quadro系列就进入了站长的法眼。

在1030、1050、1050Ti、P400、P600的选择上,由于P400和P600的编解码范围相同,但P600的价格要比P400贵了接近一倍,因此本着能省就省的原则,P600被淘汰出局。
1030因为没有编码单元,因此也被淘汰出局。

在最后的1050、1050Ti和P400的选择中,因为P400的功耗最大只有30W,加之P400的价格和1050之间也就不到100元的差距,因此经过多方面考虑后,最后决定使用P400作为转码卡。

但换上后,站长在测试Jellyfin的时候又发现了问题。本来开启了硬件编解码后就可以正常播放视频,但现在出现了无法播放的情况。查看日志,可以看到系统报找不到CUDA。因此怀疑显卡并没有传入到容器内。但翻遍网上的教程逐一修改后,情况依旧。后来,无意间去Unraid论坛里,看来NVIDIA-Driver作者的一篇帖子,才知道网上给出的方法已经过时了。下面,站长就把最新的方法分享给大家。

作者给出的步骤

1、在应用商店里安装最新的NVIDIA-Driver。
安装过程中的网络问题请自行解决!

2、安装完毕后,可以在插件中找到NVIDIA-Driver。点进去后,下载最新的驱动。

3、下载后,Unraid会自动安装该驱动。安装完毕后,进入设置-Docker,把启用Docker改成否,保存。保存完毕后,再改成是,再保存。(N卡驱动需要重启一遍Docker才能生效)

4、如果你之前已经安装过Jellyfin,请在Docker中找到Jellyfin,进入编辑器。如果没有安装过Jellyfin,可以在应用商店里搜索Jellyfin,找到那个标有“官方版”字样的镜像,点安装。


5、在编辑器中,点击右上角的“基本视图”按钮,将其切换成高级视图。

6、在“高级视图”中找到额外参数,然后填写“--runtime=nvidia”。

7、填写完其他的映射信息后,点击“应用”,即可部署Jellyfin容器。
8、待容器部署完成后,进入Jellyfin的控制台,点击播放,在“硬件加速”中选择NVENC,然后照着下图抄作业即可。(10系用户直接抄,20系及以上卡可以额外勾选AV1)


9、保存设置后尝试播放一个HEVC编码的视频,同时让Jellyfin输出一个低分辨率、低码率的视频。观察Unraid控制台,可以观察到GPU正在工作,而CPU相对比较平静,说明设置成功。

Jellyfin播放详情页面

Unraid控制台显示的GPU详情