Linux安装jellyfin硬件加速,ESXi7,黑群晖,Jellyfin与NVIDIA硬解的解决方案

Last updated on 2021年1月25日

这是一片没有人的领地,基本没有现成的文章和教程,参考了网络上几乎所有相关教程,总结如下。

关于实现之后的效果,可以参考:https://www.lxg2016.com/54176.html

简单来说,有几个要点:

直通NVIDIA显卡时需要加参数hypervisor.cpuid.v0=FALSE,从而让显卡认为自己在物理机上。

可以使用NFS挂载群晖下的文件夹存放数据

jellyfin的硬解需要安装ffmpeg,ubuntu下可以sudo apt install ffmpeg后用which ffmpeg查看位置,填写到jellyfin中

watch -n 1 nvidia-smi可以查看显卡状态;htop查看cpu和内存状态

我的配置:

Xeon W-2140b, X11SRM-VF, GTX1650

安装ESXi7,并安装ubuntu 20.04.1,直通显卡

略,其他文章已经很多了

注意:

1. 直通显卡需要把VGA和声卡都添加进去,也就是需要添加两个PCI设备

2. 设置直通的文章已经很多了,此处略去

3. 直通需要设置内存预留

4. 需要添加参数hypervisor.cpuid.v0=FALSE,让显卡以为还是在物理机中

00c7524a94d91254f6971614b426e0ac.png添加hypervisor.cpuid.v0=FALSE

安装Ubuntu的显卡驱动和CUDA

这就是一个黑洞……很多文章的方法会出现各种各样的问题,这里我只介绍一种方法。通过这种方式,我成功了。

此处参考了博客:https://morningd.github.io/2018/07/20/esxi-ubuntu-install-nvidia-driver/,特别感谢大佬

步骤:

禁用 nouveau

nouveau 是 ubuntu 系统自带的开源驱动,所以先要把他禁用掉。

sudo vim /etc/modprobe.d/blacklist.conf

添加一行

blacklist nouveau

执行

sudo update-initramfs -u

重启后如果 lsmod | grep nouveau 没有输出,说明已经禁用了 nouveau 了。

禁用 X 服务:我的ubuntu没有这个服务,但执行一遍也没问题

sudo service lightdm stop

键盘 Ctrl+Alt+F1 进入 tty1,登录。

安装驱动文件

执行 sudo ./NVIDIA-Linux-x86_64-384.66.run –no-opengl-files 安装驱动文件,注意参数。安装过程中 dkms 选择 yes,其余 continue 就好了。如果全程没有出错,重启,运行 nvidia-smi 将会输出显卡信息,恭喜你安装成功了。如果你遇到了编译错误,请接着往下看。(请参照原博客)

这时,使用nvidia-smi就应该可以出现这个界面了

7cff05bc856707df43711a425ea257c2.pngnvidia-smi

接下来安装CUDA套件

其实也就两行:

wget https://developer.download.nvidia.com/compute/cuda/11.1.0/local_installers/cuda_11.1.0_455.23.05_linux.run

sudo sh cuda_11.1.0_455.23.05_linux.run

注:不同版本的行不行我不是很清楚,需要进一步实验

安装Jellyfin

这里参考了:https://twsyue.com/archives/life-media-2020062120.html

sudo apt install apt-transport-https

wget -O – https://repo.jellyfin.org/jellyfin_team.gpg.key | sudo apt-key add –

echo "deb [arch=$( dpkg –print-architecture )] https://repo.jellyfin.org/$( awk -F'=' '/^ID=/{ print $NF }' /etc/os-release ) $( awk -F'=' '/^VERSION_CODENAME=/{ print $NF }' /etc/os-release ) main" | sudo tee /etc/apt/sources.list.d/jellyfin.list

sudo apt update

sudo apt install jellyfin

以上就安装好了,在网页配置jellyfin的部分略过不表,自己打开IP:8096一步一步来就行了很简单

控制指令:

sudo systemctl {action} jellyfin.service

注意:这篇文章后面的硬件加速教程并不适用,稍后会有说明

挂载NFS文件夹

这部分参考了:https://www.mls-tech.info/linux/ubuntu-18-nfs-client/

目的在于可以将媒体服务器和NAS解绑,从而让硬件加速成为可能(群晖DSM不支持额外的GPU,至少DS918的系统在6.22下是不支持的,能开机但不能驱动)

设置完成后,我将群晖的/video文件夹映射到了/home/vision/mnt/video文件夹,并在jellyfin中添加了这个文件夹作为Movie的所在地,没有出现问题。(反观windows下的jellyfin不能添加网络文件夹,而且如何让应用把网络文件夹当做本地文件夹的方法全网也没有找到,只能用linux这边的解决方案了)

以下内容可以直接去上面贴出的博客连接

安装并设置客户端

首先,在 Ubuntu 18.04 的机器上执行以下命令来安装 NFS Client。复制

sudo apt-get update

sudo apt-get install nfs-common

安装好以后,我们就可以通过 “showmount” 的命令来查看在指定机器 (IP 地址) 上已经共享的 NFS 文件。比如:

showmount -e 192.168.1.100

就可以看到刚才在 NAS 上共享的文件夹。

如果需要访问 NAS 上的文件夹,首先需要挂载 (mount) 该共享文件夹到本地。

首先在本地建立一个文件夹,比如建立一个名为 nfs_music 的文件夹复制

sudo mkdir /mnt/nfs_music

然后执行以下命令挂载:复制

sudo mount -t nfs 192.168.1.100:/volume1/music /mnt/nfs_music

“/volume1/music” 是共享文件夹在 NAS 上的目录。

为查看挂载的效果,可以使用 df -h 命令复制

df -h

你将得到类型下面的系统输出:复制

1

2

3

4

5

6

7

8

9

10

11Filesystem Size Used Avail Use% Mounted on

udev 967M 0 967M 0% /dev

tmpfs 200M 1.1M 199M 1% /run

/dev/sda2 5.9G 3.1G 2.6G 55% /

tmpfs 997M 0 997M 0% /dev/shm

tmpfs 5.0M 0 5.0M 0% /run/lock

tmpfs 997M 0 997M 0% /sys/fs/cgroup

/dev/loop0 89M 89M 0 100% /snap/core/7270

/dev/loop1 92M 92M 0 100% /snap/core/8689

192.168.1.100:/volume1/music 1.0T 1.0T 307G 70% /mnt/nfs_music

tmpfs 200M 0 200M 0% /run/user/1000

设置开机自动挂载 NFS

执行以上步骤后,如果重启客户端机器,需要再次执行 mount 命令来挂载 NFS 共享目录,如果希望在开机时自动挂载,需要编辑 /etc/fstab 文件,执行:复制

1sudo vi /etc/fstab

在文件末尾加上如下的行:复制

1192.168.1.100:/volume1/music /mnt/nfs_music nfs defaults,timeo=900,retrans=5,_netdev 0 0

用你的 IP 地址和目录名替换掉命令中相应的内容,编辑完以后,保存退出。 这样在机器重启时也能自动挂载 NFS 共享目录了。

为Jellyfin开启显卡加速

这就是这篇文章的关键部分了,似乎这个需求非常小众,单独买一张显卡为了解码也并不是大多数人会做的选择。(但就是想All in One)

这里需要安装FFmpeg

这是NVIDIA官方关于FFMpeg的页面:https://developer.nvidia.com/ffmpeg

重点在于这一部分:

c1a53db42ff50c4062af251feda5c85d.png

这个方法看起来很正规,但比较复杂,我并没有采用。

我选择了一种非常简单的安装方法:

sudo apt update

sudo apt install ffmpeg

ok,这就可以了

然后使用:which ffmpeg 查看安装路径,我安装到的是 /usr/bin/ffmpeg,记下这个位置

然后去web页面,如下配置:

d0fd0b5fe51acfb3ce0a1a13d95cfe2f.png

这里可以勾选上所有的硬件解码选项,因为GTX1650都可以硬解这些视频

硬解能力参考:https://developer.nvidia.com/video-encode-decode-gpu-support-matrix

可以看到,能买到桌面版的最便宜的,功耗最低的,全都能解码的就是GTX1650了,这也是我购买GTX1650作为解码卡的原因

2021.1.25补充一点:GTX1650的NVENC/NVDEC使用的是Volta架构,而从GTX1660开始才是Turing架构,买新不买旧建议1660,当然如果想要一点Volta遗物的话,1650也是可以的:)

测试

32e2ac0e0ce9612835f2385fe39d3ffc.png

可以看到,显存占用也并不大,同时满足多人在线观看也完全可以。

其他参考资料:

还有好多好多其他的博客和文章,感谢各位大佬前辈的指导

赞过:

赞 正在加载……

原文链接:https://blog.csdn.net/weixin_35884854/article/details/116971612

© 版权声明
THE END
喜欢就支持一下吧
点赞5 分享