群晖918 docker命令行方式安装jellyfin并开启GPU硬解的方法

问题

jellyfin是一个开源的视频管理平台,比群晖自带的video station功能更强,但是直接通过918的docker界面直接安装的jellyfin,由于没有进行device的映射,因此实际上是没有启动硬解的。

表面上jellyfin的控制台开启了VAAPI,但实际上在后台一直在报错。
jellyfin中开启了VAAPI
后台报错如下:jellyfin后台报错

原因

这是由于群晖的docker控制台的限制,群晖核显/dev/dri/renderD128并没有真正映射到容器中。

解决方案

ssh到群晖后台,利用root账户启动docker,例如:

sudo <span class="token operator">-</span>i docker pull jellyfin<span class="token operator">/</span>jellyfin:10<span class="token punctuation">.</span>5<span class="token punctuation">.</span>5<span class="token operator">-</span>amd64 docker run <span class="token operator">-</span>d <span class="token operator">--</span>volume <span class="token operator">/</span>volume1<span class="token operator">/</span>docker<span class="token operator">/</span>jellyfin:<span class="token operator">/</span>config <span class="token operator">--</span>volume <span class="token operator">/</span>volume1<span class="token operator">/</span>docker<span class="token operator">/</span>jellyfin:<span class="token operator">/</span>cache <span class="token operator">--</span>volume <span class="token operator">/</span>volume1<span class="token operator">/</span>video:<span class="token operator">/</span>media <span class="token operator">--</span>net=host <span class="token operator">--</span>restart=always <span class="token operator">--</span>device <span class="token operator">/</span>dev<span class="token operator">/</span>dri<span class="token operator">/</span>renderD128:<span class="token operator">/</span>dev<span class="token operator">/</span>dri<span class="token operator">/</span>renderD128 <span class="token operator">--</span>device <span class="token operator">/</span>dev<span class="token operator">/</span>dri<span class="token operator">/</span>card0:<span class="token operator">/</span>dev<span class="token operator">/</span>dri<span class="token operator">/</span>card0 <span class="token operator">--</span>name=<span class="token string">"jellyfin10.5.5"</span> jellyfin<span class="token operator">/</span>jellyfin:10<span class="token punctuation">.</span>5<span class="token punctuation">.</span>5<span class="token operator">-</span>amd64 sudo <span class="token operator">-</span>i docker pull jellyfin<span class="token operator">/</span>jellyfin:10<span class="token punctuation">.</span>5<span class="token punctuation">.</span>5<span class="token operator">-</span>amd64 docker run <span class="token operator">-</span>d <span class="token operator">/</span> <span class="token operator">--</span>volume <span class="token operator">/</span>volume1<span class="token operator">/</span>docker<span class="token operator">/</span>jellyfin:<span class="token operator">/</span>config <span class="token operator">/</span> <span class="token operator">--</span>volume <span class="token operator">/</span>volume1<span class="token operator">/</span>docker<span class="token operator">/</span>jellyfin:<span class="token operator">/</span>cache <span class="token operator">/</span> <span class="token operator">--</span>volume <span class="token operator">/</span>volume1<span class="token operator">/</span>video:<span class="token operator">/</span>media <span class="token operator">/</span> <span class="token operator">--</span>net=host <span class="token operator">/</span> <span class="token operator">--</span>restart=always <span class="token operator">/</span> <span class="token operator">--</span>device <span class="token operator">/</span>dev<span class="token operator">/</span>dri<span class="token operator">/</span>renderD128:<span class="token operator">/</span>dev<span class="token operator">/</span>dri<span class="token operator">/</span>renderD128 <span class="token operator">/</span> <span class="token operator">--</span>device <span class="token operator">/</span>dev<span class="token operator">/</span>dri<span class="token operator">/</span>card0:<span class="token operator">/</span>dev<span class="token operator">/</span>dri<span class="token operator">/</span>card0 <span class="token operator">/</span> <span class="token operator">--</span>name <span class="token string">"jellyfin10.5.5"</span> <span class="token operator">/</span> jellyfin<span class="token operator">/</span>jellyfin:10<span class="token punctuation">.</span>5<span class="token punctuation">.</span>5<span class="token operator">-</span>amd64
sudo <span class="token operator">-</span>i docker pull jellyfin<span class="token operator">/</span>jellyfin:10<span class="token punctuation">.</span>5<span class="token punctuation">.</span>5<span class="token operator">-</span>amd64 docker run <span class="token operator">-</span>d <span class="token operator">--</span>volume <span class="token operator">/</span>volume1<span class="token operator">/</span>docker<span class="token operator">/</span>jellyfin:<span class="token operator">/</span>config <span class="token operator">--</span>volume <span class="token operator">/</span>volume1<span class="token operator">/</span>docker<span class="token operator">/</span>jellyfin:<span class="token operator">/</span>cache <span class="token operator">--</span>volume <span class="token operator">/</span>volume1<span class="token operator">/</span>video:<span class="token operator">/</span>media <span class="token operator">--</span>net=host <span class="token operator">--</span>restart=always <span class="token operator">--</span>device <span class="token operator">/</span>dev<span class="token operator">/</span>dri<span class="token operator">/</span>renderD128:<span class="token operator">/</span>dev<span class="token operator">/</span>dri<span class="token operator">/</span>renderD128 <span class="token operator">--</span>device <span class="token operator">/</span>dev<span class="token operator">/</span>dri<span class="token operator">/</span>card0:<span class="token operator">/</span>dev<span class="token operator">/</span>dri<span class="token operator">/</span>card0 <span class="token operator">--</span>name=<span class="token string">"jellyfin10.5.5"</span> jellyfin<span class="token operator">/</span>jellyfin:10<span class="token punctuation">.</span>5<span class="token punctuation">.</span>5<span class="token operator">-</span>amd64  sudo <span class="token operator">-</span>i  docker pull jellyfin<span class="token operator">/</span>jellyfin:10<span class="token punctuation">.</span>5<span class="token punctuation">.</span>5<span class="token operator">-</span>amd64  docker run <span class="token operator">-</span>d <span class="token operator">/</span> <span class="token operator">--</span>volume <span class="token operator">/</span>volume1<span class="token operator">/</span>docker<span class="token operator">/</span>jellyfin:<span class="token operator">/</span>config <span class="token operator">/</span>  <span class="token operator">--</span>volume <span class="token operator">/</span>volume1<span class="token operator">/</span>docker<span class="token operator">/</span>jellyfin:<span class="token operator">/</span>cache <span class="token operator">/</span> <span class="token operator">--</span>volume <span class="token operator">/</span>volume1<span class="token operator">/</span>video:<span class="token operator">/</span>media <span class="token operator">/</span>  <span class="token operator">--</span>net=host <span class="token operator">/</span>  <span class="token operator">--</span>restart=always <span class="token operator">/</span>  <span class="token operator">--</span>device <span class="token operator">/</span>dev<span class="token operator">/</span>dri<span class="token operator">/</span>renderD128:<span class="token operator">/</span>dev<span class="token operator">/</span>dri<span class="token operator">/</span>renderD128 <span class="token operator">/</span>  <span class="token operator">--</span>device <span class="token operator">/</span>dev<span class="token operator">/</span>dri<span class="token operator">/</span>card0:<span class="token operator">/</span>dev<span class="token operator">/</span>dri<span class="token operator">/</span>card0 <span class="token operator">/</span>  <span class="token operator">--</span>name <span class="token string">"jellyfin10.5.5"</span> <span class="token operator">/</span> jellyfin<span class="token operator">/</span>jellyfin:10<span class="token punctuation">.</span>5<span class="token punctuation">.</span>5<span class="token operator">-</span>amd64  
sudo -i docker pull jellyfin/jellyfin:10.5.5-amd64 docker run -d --volume /volume1/docker/jellyfin:/config --volume /volume1/docker/jellyfin:/cache --volume /volume1/video:/media --net=host --restart=always --device /dev/dri/renderD128:/dev/dri/renderD128 --device /dev/dri/card0:/dev/dri/card0 --name="jellyfin10.5.5" jellyfin/jellyfin:10.5.5-amd64 sudo -i docker pull jellyfin/jellyfin:10.5.5-amd64 docker run -d / --volume /volume1/docker/jellyfin:/config / --volume /volume1/docker/jellyfin:/cache / --volume /volume1/video:/media / --net=host / --restart=always / --device /dev/dri/renderD128:/dev/dri/renderD128 / --device /dev/dri/card0:/dev/dri/card0 / --name "jellyfin10.5.5" / jellyfin/jellyfin:10.5.5-amd64

核心就在于--device /dev/dri/renderD128:/dev/dri/renderD128 --device /dev/dri/card0:/dev/dri/card0这两句,之后就可以愉快的玩耍啦,实测一台白918和另一台蜗牛j1900安装的黑群晖均可以硬解。而且后续通过群晖docker控制台停止、重启该容器,都不影响硬解。

实测环境 版本
群晖 918 6.2.1-23824 Update 6
jellyfin 10.5.5-amd64
ffmpeg ffmpeg 4.2.2-28

更新:截止2020年11月17日,jellyfin已更新至10.6.4

docker run <span class="token operator">-</span>d <span class="token operator">--</span>volume <span class="token operator">/</span>volume1<span class="token operator">/</span>docker<span class="token operator">/</span>jellyfin<span class="token operator">/</span>config:<span class="token operator">/</span>config <span class="token operator">--</span>volume <span class="token operator">/</span>volume1<span class="token operator">/</span>docker<span class="token operator">/</span>jellyfin<span class="token operator">/</span>cache:<span class="token operator">/</span>cache <span class="token operator">--</span>volume <span class="token operator">/</span>volume3<span class="token operator">/</span>video:<span class="token operator">/</span>media <span class="token operator">--</span>net=host <span class="token operator">--</span>restart=always <span class="token operator">--</span>device <span class="token operator">/</span>dev<span class="token operator">/</span>dri<span class="token operator">/</span>renderD128:<span class="token operator">/</span>dev<span class="token operator">/</span>dri<span class="token operator">/</span>renderD128 <span class="token operator">--</span>device <span class="token operator">/</span>dev<span class="token operator">/</span>dri<span class="token operator">/</span>card0:<span class="token operator">/</span>dev<span class="token operator">/</span>dri<span class="token operator">/</span>card0 <span class="token operator">--</span>name=<span class="token string">"jellyfin10.6.4"</span> jellyfin<span class="token operator">/</span>jellyfin:10<span class="token punctuation">.</span>6<span class="token punctuation">.</span>4<span class="token operator">-</span>amd64
docker run <span class="token operator">-</span>d <span class="token operator">--</span>volume <span class="token operator">/</span>volume1<span class="token operator">/</span>docker<span class="token operator">/</span>jellyfin<span class="token operator">/</span>config:<span class="token operator">/</span>config <span class="token operator">--</span>volume <span class="token operator">/</span>volume1<span class="token operator">/</span>docker<span class="token operator">/</span>jellyfin<span class="token operator">/</span>cache:<span class="token operator">/</span>cache <span class="token operator">--</span>volume <span class="token operator">/</span>volume3<span class="token operator">/</span>video:<span class="token operator">/</span>media <span class="token operator">--</span>net=host <span class="token operator">--</span>restart=always <span class="token operator">--</span>device <span class="token operator">/</span>dev<span class="token operator">/</span>dri<span class="token operator">/</span>renderD128:<span class="token operator">/</span>dev<span class="token operator">/</span>dri<span class="token operator">/</span>renderD128 <span class="token operator">--</span>device <span class="token operator">/</span>dev<span class="token operator">/</span>dri<span class="token operator">/</span>card0:<span class="token operator">/</span>dev<span class="token operator">/</span>dri<span class="token operator">/</span>card0 <span class="token operator">--</span>name=<span class="token string">"jellyfin10.6.4"</span> jellyfin<span class="token operator">/</span>jellyfin:10<span class="token punctuation">.</span>6<span class="token punctuation">.</span>4<span class="token operator">-</span>amd64 
docker run -d --volume /volume1/docker/jellyfin/config:/config --volume /volume1/docker/jellyfin/cache:/cache --volume /volume3/video:/media --net=host --restart=always --device /dev/dri/renderD128:/dev/dri/renderD128 --device /dev/dri/card0:/dev/dri/card0 --name="jellyfin10.6.4" jellyfin/jellyfin:10.6.4-amd64

原文链接:https://blog.csdn.net/austin1000/article/details/106021513?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522171836830316800182722908%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=171836830316800182722908&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~times_rank-26-106021513-null-null.nonecase&utm_term=jellyfin

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