什么时候需要硬解?
- 不支持原格式播放设备
- 非网页端(网页端不支持硬解)
- 已经是会员或者破解
- 不以原分辨率播放
以上步骤其实也是需要转码的条件,如果没有集显参与解码,直接使用软件解码会导致CPU使用过高导致卡顿。
硬件解码需要openwrt编译时,把显卡驱动编译好,我使用的是homelede十月三号的版本,已经编译好了,CPU是3865U,使用docker安装的emby。
查看你的硬件和驱动是否已支持硬件解码:
ls /dev/dri
如果出现
card0 renderD128
HD610以上才支持4K硬解,3865U是个很独特的U,核显是HD610的刚好支持,不过是双核的,解码效率不高,但是个人用感觉也够了。
要支持H265硬解和全系列解码,那就需要七代及以上CPU
- HD610
- UHD610
- HD630
- UHD630
- UHD620
核心与线程数当然最好是4核4线程。
附完美支持H265和VP9编码8K 10Bit视频硬解的英特尔核显列表:
就说明可以硬件解码,我们只需要使用/dev/dri/:/dev/dri/
把显卡共享进emby的docker里即可。
此时就完成了集显参与的解码,CPU使用率大幅降低。
验证emby是否已加载集显
在转码里,选择高级,如果出现首选硬件则表示成功,建议选择QuickSync
踩坑记:
在使用上述方法始终无法在转码里出现首选硬件,在docker里也看到了显卡,折腾重启emby/docker/路由无果后,突发奇想是不是没权限调用?一看果然没读写权限。
解决的方式有3个,
- 如果是群晖,直接改UID,GID,GIDLIST为0即可,0就是root,
- openwrt下的docker好像改不了,只能修改
card0 renderD128
这2个的权限为777即可。 - 或者重新安装,用root用户安装,格式为
name|uid[:group|gid]
,比如root|0[:0|0]
,查看root用户的id使用id root
即可查询
我是直接暴力改权限777
cd /dev/dri
chmod -777 card0
chmod -777 renderD128
美滋滋,ALLINONE又省下一个nas的钱。
1 条评论
我也把emby从群晖里面搬到openwrt里面了,不过似乎硬解并不能工作。权限已经设置了。