Jellyfin 打造家庭影院 & 视频硬解 (威联通 QNAP)

Posted 老和山乔治

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Jellyfin 打造家庭影院 & 视频硬解 (威联通 QNAP)相关的知识,希望对你有一定的参考价值。

家庭影院

最近添置了一个威联通(QNAP)的NAS。准备搭建一个家庭影音中心,网上群晖的资料相当多,威联通的略少,因此在这里记录一下搭建过程以及遇到的问题,以飨读者。

媒体服务软件

影音媒体管理软件目前流行的有三种:plex、emby 以及 Jellyfin。Jellyfin 和 emby 同源同宗,是在 emby 闭源收费后在之前的开源版本拉分支出来开发的,后续应该不会保持兼容性。我这里选择了 Jellyfin,硬解在 plex 和 emby 上是收费功能 😃。

QTS系统是

使用的是 QNAP 的 Container Station,通过 docker 来运行 Jellyfin。基本的配置如下:

  • Jellyfin/config:Jellyfin配置文件保存路径
  • Jellyfin/cache:Jellyfin缓存文件路径
  • /media:媒体库的路径

    可以看到显卡设备需要 admin 权限才能读写。

因此,如果要开启显卡硬解视频的话,需要这样设置,不必 ssh 到后台使用命令行运行 docker。

之后打开 Jellyfin 控制台,在播放选项卡,按照下面的设置启用硬件加速。

使用效果

海报刮削

视频播放

下面发生转码的原因是视频编码格式不支持。我在网页端开了这个视频,不支持 H.265 的视频格式,因此发生了 Jellyfin 服务端的解码。原视频是 4K 片源,码率为 15.2Mbps,帧率为 23.98 fps,转码成了 H.264,比特率为 25.7Mbps,帧率只有可怜的12fps。

我们可以看到视频播放正常,后台也显示调用了硬解。

开启硬解的情况下,转码如此高码率的视频,即使是 N5105 处理器的显卡也是嗷嗷叫。

错误解决

如果出现下面的报错,就是硬解没搞好,请参考前面的设置过程。

播放错误 该客户端与媒体不兼容,服务器未发送兼容的媒体格式

proxmoxVE LXC 安装设置 Jellyfin 多媒体家庭影院

1.下载模板并上传到PVE

国内源地址:
https://mirrors.ustc.edu.cn/turnkeylinux/images/proxmox/debian-10-turnkey-mediaserver_16.0-1_amd64.tar.gz

2、创建CT.
第一步记得要把无特权容器的选项去掉,否则会创建不成功
模板选择我们刚刚下载好的debian-10-turnkey-mediaserver_16.0-1_amd64.tar.gz

3、配置CT渲染设备节点,开启硬件加速:

默认情况下.LXC并不会自动映射dev目录下的设备节点文件.所以我们首先需要修改配置文件,使LXC自动映射dev下的设备文件.
首先我们需要在host(pve) shell中确认一下host设备文件的情况:

root@pve:~# ls -l /dev/dri/
total 0
drwxr-xr-x 2 root root         80 Aug 31 10:05 by-path
crw-rw---- 1 root video  226,   0 Aug 31 10:05 card0
crw-rw---- 1 root render 226, 128 Aug 31 10:05 renderD128

=============================================================

video id: 226, 0
render id:226, 128

修改LXC的配置文件,路径为/etc/pve/lxc/{你的CT ID}.conf.

例如我的CT ID是100,所以对应的文件是/etc/pve/lxc/100.conf
使用编辑器打开该文件进行编辑:

vim /etc/pve/lxc/100.conf

将以下内容添加到文件末尾(将对应的id替换成自己的):

lxc.cgroup.devices.allow = c 226:0 rwm
lxc.cgroup.devices.allow = c 226:128 rwm
lxc.autodev: 1
lxc.hook.autodev:/var/lib/lxc/100/render_device_hook.sh

CT启动的时候,会执行lxc.hook.autodev里的内容,我们需要手动创建对应的节点文件
还是一样,使用编辑器创建并打开脚本文件:

vim /var/lib/lxc/100/render_device_hook.sh

将以下内容添加到文件中(一样,还是要替换成自己的设备id):

mkdir -p ${LXC_ROOTFS_MOUNT}/dev/dri
mknod -m 666 ${LXC_ROOTFS_MOUNT}/dev/dri/card0 c 226 0
mknod -m 666 ${LXC_ROOTFS_MOUNT}/dev/dri/renderD128 c 226 128

最后设置文件权限:
chmod 755 /var/lib/lxc/100/render_device_hook.sh

这样,我们CT的配置就修改好了,现在去启动CT吧.
启动后,我们还需要在CT里安装VA的驱动文件,以下命令均在CT内执行:

apt install i965-va-driver vainfo

安装完成后执行vainfo命令,如果打印如下类似信息就表明硬件转码已经可用了:

root@turnkeyMediaServer ~# vainfo
error: XDG_RUNTIME_DIR not set in the environment.
error: can‘t connect to X server!
libva info: VA-API version 1.4.0
libva info: va_getDriverName() returns 0
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/i965_drv_video.so
libva info: Found init function __vaDriverInit_1_4
libva info: va_openDriver() returns 0
vainfo: VA-API version: 1.4 (libva 2.4.0)
vainfo: Driver version: Intel i965 driver for Intel(R) Coffee Lake - 2.3.0
vainfo: Supported profile and entrypoints
      VAProfileMPEG2Simple            : VAEntrypointVLD
      VAProfileMPEG2Simple            : VAEntrypointEncSlice
      VAProfileMPEG2Main              : VAEntrypointVLD
      VAProfileMPEG2Main              : VAEntrypointEncSlice
      VAProfileH264ConstrainedBaseline: VAEntrypointVLD
      VAProfileH264ConstrainedBaseline: VAEntrypointEncSlice
      VAProfileH264ConstrainedBaseline: VAEntrypointEncSliceLP
      VAProfileH264Main               : VAEntrypointVLD
      VAProfileH264Main               : VAEntrypointEncSlice
      VAProfileH264Main               : VAEntrypointEncSliceLP
      VAProfileH264High               : VAEntrypointVLD
      VAProfileH264High               : VAEntrypointEncSlice
      VAProfileH264High               : VAEntrypointEncSliceLP
      VAProfileH264MultiviewHigh      : VAEntrypointVLD
      VAProfileH264StereoHigh         : VAEntrypointVLD
      VAProfileVC1Simple              : VAEntrypointVLD
      VAProfileVC1Main                : VAEntrypointVLD
      VAProfileVC1Advanced            : VAEntrypointVLD
      VAProfileNone                   : VAEntrypointVideoProc
      VAProfileJPEGBaseline           : VAEntrypointVLD
      VAProfileJPEGBaseline           : VAEntrypointEncPicture
      VAProfileVP8Version0_3          : VAEntrypointVLD
      VAProfileHEVCMain               : VAEntrypointVLD
      VAProfileHEVCMain10             : VAEntrypointVLD
      VAProfileVP9Profile0            : VAEntrypointVLD
      VAProfileVP9Profile2            : VAEntrypointVLD

现在再到Jellyfin的控制台,将转码的硬件加速设置为VA API

===============================================================

jellyfin android 客户端
https://repo.jellyfin.org/releases/client/android/

jellyfin androidTV 客户端
https://repo.jellyfin.org/releases/client/androidtv/

以上是关于Jellyfin 打造家庭影院 & 视频硬解 (威联通 QNAP)的主要内容,如果未能解决你的问题,请参考以下文章

proxmoxVE LXC 安装设置 Jellyfin 多媒体家庭影院

石头科技打造硬核品牌力 持续出海拓展全球市场

android音视频音频硬编解码pcm&aac&wav

android音视频音频硬编解码pcm&aac&wav

凡科网广告视频正式亮相,遍布北上广深户外与影院

用视频&面试文档&模板 教你打造一份高级php程序员的简历