N100 PVE LXC容器安装Docker部署Emby硬解

前面在PVE里通过Linux容器安装Emby实现了N100CPU硬解,但是很多人不会直接装Linux版Emby,而是喜欢装Docker版Emby,或者通过这篇教程解决其它需要Docker部署的需要硬解的需求。这里写一下教程及本人折腾过程。

首先这个折腾Docker版的Emby没少费劲,首先是少量是技术的的问题,而大多是走了很多弯路才导致折腾了几天一直没有成功,最后外加误打误撞成功的。

最大的弯路是一开始我使用的的开心版EmbyDocker镜像,安装完后能不能显示转码的选项,也就是说明Docker版Emby无法识别到核显设备,直接就卡死在这了,又去Emby论坛咨询,咨询了一天,尝试了几个方法,依然没有解决,想着既然Docker版Emby不能硬件转码为什么会推出Docker版Emby,这不是摆设嘛!当时帮助的人给出的解释是Docker版Emby仅适用于标准虚拟机,而没有考虑LXC容器。当时也想过一度放弃,但是还是放不下,不能以后想使用时再套一层虚拟机吧。这样会大大增加PVE负载,安全是伤敌一千自损八百的操作,这样不是我想要的解决方案。但是当时也过各种我能想过的原因,首先前面通过在LXC部署Emby能实现硬件解码,就想着问题可能出现在LXC与Docker之间的问题,或者LXC再套用Docker传递间的权限问题,但是在LXC与Docker里的Emby都能看到挂载的/dve/dri目录下的card1与renderD128设备,但就是不出现硬件解码选项,折腾了两三天实在解决不了就放弃了。

后来就想既然Docker版Emby玩不了,先尝试LXC下直装Emby,看看能不能实现硬件转码。然后直接通过官网下载安装,打开后可以看到硬件转码选项,并能在播放时能正常硬件转码。

前面也说了成功也有误打误撞的原因,有兴趣可以看我写的LXC版安装Emby实现硬件解码的文章。

既然LXC版Emby能正常硬件转码,那剩下的就要攻克LXC下的Docker版Emby了。后来在Emby正常硬件转码的在LXC容器里又尝试了一两次Docker版Emby,依然不能解决,就想着放弃吧。虽然想着放弃,但是心里放不下。第二天忽然灵光一闪:在看别人写的核显虚拟机直教程时有的会提到一个词:驱动。一想会不会是驱动的问题?设想这个开心版是不是没有打驱动?导致识别不了N100CPU,那尝试官方的镜像,看看怎么样,说干就干,直接将Docker的Compose里的开心版镜像换成官方的emby/embyserver镜像并重新部署,打开一看可以正常看到硬件转码的选项,欢呼成功!

环境

CPU:N100,PVE版本:8.2.2,Linux内核版本:6.8.4-2,LXC模板:Ubuntu 20.04 LTS,Emby版本:4.8.10.0,Emby会员。本教程只针对当前环境负责,其它自行尝试。

设备赋权

首先在PVE里给设备赋权。

				
					chmod 666 /dev/dri/*
				
			
创建并配置LXC容器

需要创建一个特权容器,即不要勾选无特权的容器,如何创建LXC容器这里不再赘述了。

安装完不要启动,然后修改/etc/pve/lxc下的配置文件,增加以下内容,再启动LXC容器。

				
					lxc.aPVEarmor.profile: unconfined
lxc.cgroup.devices.aLinuxow: a
lxc.cap.drop:
lxc.cgroup2.devices.aLinuxow: c 226:1 rwm
lxc.cgroup2.devices.aLinuxow: c 226:128 rwm
lxc.mount.entry: /dev/dri/card1 dev/dri/card1 none bind,optional,create=file
lxc.mount.entry: /dev/dri/renderD128 dev/dri/renderD128 none bind,optional,create=file
				
			
安装Docker与Emby

如何安装Docker不再赘述。Emby我前面也提了,使用的是写这篇教程时的官方最新的Latest版本为4.8.10.0,至于你们拉取时的Latest具体版本是不是4.8.10.0,能不能用自行尝试。别忘了修改挂载路径。

				
					version: '3' 

services:
  emby:
    image: emby/embyserver
    container_name: emby               
    restart: always                                    
    ports:
      - 8096:8096                 
      - 8920:8920                  
      - 1900:1900/udp             
      - 7359:7359/udp            
    volumes:
      - /config:/config              
      - /pt/downloads/link:/data      
      - /etc/timezone:/etc/timezone   
      - /etc/localtime:/etc/localtime 
    environment:
      - UID=0                         
      - GID=0                         
      - GIDLIST=0                    
    devices:
      - /dev/dri:/dev/dri             
				
			
启用硬件转码

转码里选择你需要的硬件解码与编码即可,当然还有最重要的Emby会员。

播放视频时看到有两个绿色的图标就说明已经启用了硬件解码。

0 0 投票数
文章评分
订阅评论
提醒
guest
0 评论
最旧
最新 最多投票
内联反馈
查看所有评论
0
希望看到您的想法,请您发表评论!x