本文首发于:https://zhuanlan.zhihu.com/p/625836900

说来惭愧,Jellyfin 是我自己的大内网第一个也是最常用的应用,但是一直拖到现在才做教程。

Jellyfin 是一个自己托管服务器的多媒体管理系统、影视网站。在本教程中,Jellyfin 被用来当作在线视频网站和在线相册。以下是 Jellyfin 的竞品:

影视服务器:Plex,Emby。这两个都是收费的,那我直接 pass 了。

在线相册:PhotoPrism,LibrePhotos 等。其实这些软件在在线相册的本职工作上比 Jellyfin 要好,界面也漂亮很多,但是综合以下几点考虑我还是选择了 Jellyfin:

  1. 大部分这些在线相册都需要安装 docker 使用,对 Windows 服务器和小白不友好;
  2. 它们播放视频都不太方便,更不用和本职工作就是放视频的 Jellyfin 比了;
  3. 有些上传/备份照片的逻辑非常反人类,比如只能一张一张上传。虽然 Jellyfin 本身不能上传照片,但是可以和之前讲过的 Syncthing 配合起来就非常强大了;
  4. 很多都是刚出来,功能还不完善,有的甚至没有中文本地化。

如果你只想要在线相册功能,动手能力也较强,可以自行尝试这些在线相册。下面是一位 up 对比文章的链接:Nas端图片管理软件哪家强,5款高分软件详细对比 - 哔哩哔哩

本人的番剧海报墙镇楼,囤积仓鼠大满足

以下 Jellyfin 服务端均在 WIndows 上操作。如果你都用 Linux 做服务器了,我相信你应该不太需要本篇教程(虽然操作其实都差不多)。


安装

在这里下载服务端的最新版:Jellyfin Stable Windows Archives

一般来说,第一个下载链接就是最新版的。截至目前(2023.04.29),最新版是 10.8.10,也就是下图红色箭头指的。

请下载最新版

下完后,打开安装包无脑下一步就好了。按需修改安装位置和数据文件夹。

按需可修改安装位置
数据文件夹。C盘位置比较小可以放到其它地方去,因为如果你有很多图片和视频,数据文件夹还是有几个G的

安装完不会自己启动。桌面会多出个图标,双击它开始启动 Jellyfin 服务端。注意,Jellyfin 默认是开机启动的

就是它!

启动后会在右下角托盘出现图标。右键它,然后点击 Open Jellyfin,就可以在浏览器里打开了。

第一次打开需要进行必要的设置。首先,语言选择简体中文,然后下一步:

接下来是第一个账户的账户名密码,设置好了下一步:

媒体库我们稍后再添加,不管直接下一步:

选择元数据的语言和地区,没什么好说的:

接下来无脑下一步,然后登录。安装就结束了。


必要的设置

播放

首先点击左上角进入控制台:

如果你有显卡(核显也行),开启硬件加速。我是英伟达的卡,所以选择 NVENC;AMD 和 英特尔自行选择对应的选项。

N卡用户如果开启硬件加速,开启这些选项。A卡 和 I卡 酌情开启(老显卡需要自行查询支持哪些硬件编码)。注意:如果你可能有很多HDR视频,推荐开启色调映射,但是需要安装运行库。这里不教怎么安装,因为大部分人自己相机拍的视频基本都不是HDR的,只有番剧电影画质狂魔才会碰到。(我是懒狗,安运行库好麻烦的说,不想再安一遍了)

滚到最下面,勾上最后两项,然后保存。

限制转码速度以一点点的缓冲速度为代价,极大降低了转码时的硬件消耗,强烈推荐开启

接下来设置恢复播放。这是我个人主观的值,仅作推荐,各位可自行摸索适合自己的值。记得保存。

皮肤插件安装

你不觉得原皮很丑吗?

方法一,需要科学上网:

警告:插件安装可能需要翻墙才能正常进行

下面是皮肤插件的repo:https://github.com/danieladov/jellyfin-plugin-skin-manager

首先下载插件文件

https://github.com/danieladov/jellyfin-plugin-skin-manager/releases/download/2.0.1/Jellyfin.Plugin.SkinManager.dll.zip

下载解压后会得到一个名字叫 `Jellyfin.Plugin.SkinManager.dll 的文件。

先放着,我们去 Jellyfin 的数据文件夹。如果你没改位置,默认在 C:\ProgramData\Jellyfin\Server 下。因为 ProgramData 是隐藏的,可以在 Windows 资源管理器地址栏输入地址回车就能一键抵达:

然后点进去 plugins 文件夹,在里面新建一个叫 Skin Manager 的文件夹:

然后把之前解压出来的 Jellyfin.Plugin.SkinManager.dll 的文件丢进去。

然后重启 Jellyfin 服务器:

在托盘里,先停掉再启动

刷新一下网页,插件出来就安装成功了。

接下来是设置皮肤,可能需要翻墙。

打开 Skin Manager 设置页面

以下是我的设置,仅供参考,可以自己选喜欢的主题。记得保存。

方法二:如果上一步因为没有翻墙,导致选不了皮肤,但是还想有和你一样的皮肤。怎么办?

好说。去常规页面输入下面的代码:

@import url('https://cdn.jsdelivr.net/npm/jellyskin@latest/dist/main.css');
@import url('https://cdn.jsdelivr.net/gh/prayag17/JellySkin/addons/Gradients/nightSkyGradient.css');
@import url('https://cdn.jsdelivr.net/gh/prayag17/JellySkin/addons/Logo.css');
@import url('https://cdn.jsdelivr.net/gh/prayag17/JellySkin/addons/Logo.css');

.adminDrawerLogo img { content: url( https://c2.im5i.com/2022/10/20/TopCm.gif) !important; } 
imgLogoIcon { content: url(https://c2.im5i.com/2022/10/20/TopCm.gif) !important; }
 .pageTitleWithLogo { background-image: url(https://c2.im5i.com/2022/10/20/TopCm.gif) !important; }

保存,刷新网页即可。其他主题的CSS代码可自行搜索。

个人账户设置

以下设置需要每个账户独立设置。有的可能不同设备也要设置一遍。

首先,修改下显示设置:

勾上,页面就有轮换背景了。记得保存。

接下来是播放设置,按照个人喜好调整。

现在,常用的设置都过了一遍,下面是正餐了。


通过大内网访问

如果你的服务器上按照之前的教程 大内网战略(1):使用 Tailscale 搭建 VNet

安装并设置好了 Tailscale,其他设备就可以通过 Tailscale IP 或者主机名访问(其他设备也需要安装 Tailscale )。具体访问地址是:

http://TailscaleIP:8096/

或者

http://主机名:8096/

客户端访问

除了网页访问,还可以下载客户端访问。客户端访问的优势是可以支持硬件解码更多类型的视频格式,不容易触发转码。这里不多做介绍,自行访问:https://jellyfin.org/downloads​jellyfin.org/downloads

桌面,移动,电视都有

添加照片文件夹

在线相册怎么能没有照片文件夹呢?

假设现在要添加一个在桌面上的 我的照片 文件夹到 Jellyfin 里去:

到 Jellyfin 控制台中添加文件夹,记得起个名字。添加文件夹路径,然后保存。

如果照片很多,扫描需要一段时间。可以修改封面图片:

回到网站首页,新添加的文件夹就出现了!


远程同步相册

只需要用 Syncthing 将同步的文件夹设为添加到 Jellyfin 的媒体文件夹就行了,或者先设置好同步文件夹,再把同步文件夹添加到 Jellyfin 媒体库中(更推荐)。 Jellyfin 会自动扫描媒体文件夹里的更新。这里不再赘述。

Syncthing 具体操作请见:大内网战略(4):多设备间文件同步 Syncthing


影视库管理

终于到重头戏了,也是 Jellyfin 的本职工作:在线影视播放!不过在此之前,首先安装刮削软件,以获取下载的影视的海报、简介、演员之类的信息,要不然光秃秃的很难看的。

首先,整理好影视安装的文件夹。这个非常重要!!!!不正确的放置方式会导致 TMM 刮削失败!!!!

我把所有的影视放在单独一个地方,分成以下文件夹:

节目放置美剧、番剧之类的电视节目,电影放到电影文件夹。不要电影和电视剧混着放。

影视的文件夹的命名可参考:https://www.themoviedb.org/​www.themoviedb.org/

电影

电影相对好放。这是官方推荐的放法(Movies | Jellyfin):

我的也按照官方来:一个电影一个文件夹,电影文件就放在下面。

文件夹要是电影的中文名字(查询上面给的 moviedb 链接),至于电影文件本身名字无所谓,但是如果有独立字幕,字幕文件的名字要和电影一致。

电影文件组织结构。注意:选中的疾速追杀3电影文件和字幕文件才是我自己下的,疾速追杀3文件夹里其他文件是 TMM 刮削的电影信息

电视剧

电视剧相对麻烦点,特别是动画番剧。照例给出官方链接(Shows | Jellyfin)。

我的组织形式是:

注意事项:

  • 电视剧的名称要和 moviedb 上的对应(可以稍微有些出入);
  • 电视剧的季数也要和 moviedb 上对应。比如,《约会大作战》有 4 季,分别是 S01 - S04,所以 4 季都放到同一个约会大作战文件夹下;但是同样是有 2 季的《命运石之门》,在 moviedb 上是显示成两个不同的番剧,所以独立成两个(命运石之门 命运石之门0),而不能放在一起。
两个番的季数是不一样的
  • 集数的命名要和 moviedb 上的对应。比如,《约会大作战》第2季第4集,那么这个视频文件的名字就要包含 S02E04 的字符。
  • 老问题,独立字幕的名字要和视频文件名字相同。
  • 动画会有 OVA、OVD 之类的剧集,这些也要看 moviedb 上是怎么放的。比如,有的动画 OVA 被当作最后一集(正片 12 集,OVA 就 13),有的会作为 第 0 季 的内容。 第 0 季一般都是放 OVA,花絮之类的视频,具体集数命名要和 moviedb 上的对应( moviedb 上一般叫特别篇)。
文件名里的集数要对应
  • 有的时候为了好看,特殊剧集可以独立成电影(前提是 moviedb 能搜到)。比如:《约会大作战》第 0 季的 3 4 5 集是独立的电影,因此我个人将其独立出来,放在电影文件夹分别刮削。
  • 如果你下的是 BD 版,会有很多花絮、广告、PV 之类 moviedb 上没有记录集数的文件。这个时候把它们丢到独立的文件夹里,比如我一般会丢到 EXTRA 里。

TMM 安装与设置

因为新版本收费,所以我们下免费的老版。https://archive.tinymediamanager.org/v3.1.18/​archive.tinymediamanager.org/v3.1.18/

下 windows 版的

下载后解压。TMM软件是免安装的,直接打开:

如果报错缺少 java 环境,需要安装依赖。步骤如下:

点击弹出窗口的“确定”

弹出的网页选择下载:(如果没有自动弹出,打开网页 https://www.java.com/zh-CN/download/

打开下好的安装包,安装即可。

打开 TMM 后进行第一次设置:

设置语言

这里选上之前整理好的一整个电影文件夹:

电影刮削网站、语言选择

如法炮制,选上一整个电视剧的文件夹:

TMM 需要科学上网才能正常工作。在设置里设置端口(我这个是 clash 的端口)


TMM 刮削信息

下面以我新下的番《Lycoris Recoil》实战一下。

文件夹结构组织

moviedb 上查询的番剧名字为《莉可丽丝》,有特别篇(S00)和 第一季 (S01)。

这是下好的《Lycoris Recoil》。可以看到是独立字幕,并且是 BD-rip,有很多额外的视频。

整理后,按照 moviedb 上的信息分为 S00 和 S01。原 Bonus 中的一些 预告PV、角色PV和花絮按照 moviedb 上的信息丢到 S00 里,其他没有的就和 Menus 一起丢到 EXTRA。安装字体文件,把字幕丢到 S01,并且重命名。

推荐使用我写的小软件自动重命名集数(https://github.com/Eterance/TV-Shows-Renamer/releases),要不然 13 集,每集又有两个字幕,一共 39 个文件都要在把集数改成 S01E集数,会断手的。

TMM 刮削

接下来打开 TMM,刷新列表,右键我们要刮削的《莉可丽丝》,选第一个。

(如果是之前已经刮削了一部分,更新新添加的集,就选“刮削新内容”)

TMM 找到了对应的信息,直接确定

刮完了,对封面不是很满意,手动换一下图。

双击“莉可丽丝”,打开信息设置对话框

重新选一张满意的海报

把其他的图片也可以换一下,我这里把缩略图换了。满意后点击确定保存。

下面的季也可以单独换海报,双击打开对话框就行,不赘述了

刮削完成。

此时回到 Jellyfin 网页,如果新添加的视频还没出现或者没有更新正确的刮削信息。可以手动点一下刷新

如果你和我一样是仓鼠囤了很多,更新要一段时间

检查一下,信息、海报都有了。大功告成!

Jellyfin 内修改封面图

一般视频、电影、文件夹,就算什么也不做,过一段时间后 jellyfin 也会自己提取缩略图。但是有的时候就是死活没有封面,就只能自己来。

不同皮肤可能会导致按钮位置不同

所有的视频和文件夹都可以这么做。

公网访问

玩转云服务(11):Cloudflare Tunnel 内网穿透(以 Jellyfin 为例)