【NAS玩法】自建家庭影院

最近对流媒体平台比较感兴趣,记录下搭建的过程(续)

https://zebpic-1301715962.cos.ap-nanjing.myqcloud.com/blog/202211062206044.png

https://zebpic-1301715962.cos.ap-nanjing.myqcloud.com/blog/202211062208123.png

00 原料

所需软件有如下:

  1. Windows10
  2. Jellyfin
  3. kodi
  4. kore
  5. ZeroTier
  6. openp2p
  7. Findroid
  8. TMM
  9. 迅雷

01 Jellyfin搭建

Jellyfin网站:Jellyfin

选择合适的版本下载:

https://zebpic-1301715962.cos.ap-nanjing.myqcloud.com/blog/202211071928312.png

下载之后点击程序选择目录安装即可:

https://zebpic-1301715962.cos.ap-nanjing.myqcloud.com/blog/202211071930416.png

这个时候桌面就会多出Jellfin Server,点击就可以启动Jellyfin服务,图标会出现在桌面右下角:

https://zebpic-1301715962.cos.ap-nanjing.myqcloud.com/blog/202211071939436.png

点击open Jellyfin就会自动打开网址,默认地址localhost:8096

选择首选语言,点击下一步:

https://zebpic-1301715962.cos.ap-nanjing.myqcloud.com/blog/202211071941988.png

接着设置用户名和密码,局域网内就可以设置简单一些,点击下一步:

https://zebpic-1301715962.cos.ap-nanjing.myqcloud.com/blog/202211071943005.png

这一步默认没有配置视频路径,这个可以暂时跳过:

https://zebpic-1301715962.cos.ap-nanjing.myqcloud.com/blog/202211071944041.png

点击下一步,设置首选元数据语言,注意国家没有China,只有全称People’s Republic of China:

https://zebpic-1301715962.cos.ap-nanjing.myqcloud.com/blog/202211071945125.png

接下来下一步,设置远程访问,默认即可:

https://zebpic-1301715962.cos.ap-nanjing.myqcloud.com/blog/202211071947442.png

选择好之后,安装就完成了,点击即可进入登录页面:

https://zebpic-1301715962.cos.ap-nanjing.myqcloud.com/blog/202211071948544.png

输入之前设置的密码,进入服务首页:

https://zebpic-1301715962.cos.ap-nanjing.myqcloud.com/blog/202211071951817.png

点击左边的控制台,点击媒体库,这里就是日后添加节目路径的位置:

https://zebpic-1301715962.cos.ap-nanjing.myqcloud.com/blog/202211071953831.png

接下来进行添加媒体路径,点击添加媒体库,选择内容类型:

https://zebpic-1301715962.cos.ap-nanjing.myqcloud.com/blog/202211091924758.png

这里如果是多集的影视剧的话,推荐选择节目,如果是电影,则选择电影。

接着点击下面的加号,选择媒体的路径。保证媒体路径下有你要的视频资源。

然后在元数据下载器选项,如果没有科学上网的方式,推荐先取消掉勾选,因为这里面都是国外的网站,如果勾选了而没有工具,后面扫描媒体的时候会很慢:

https://zebpic-1301715962.cos.ap-nanjing.myqcloud.com/blog/202211091926411.png

接着勾选最下面的个性选项:

https://zebpic-1301715962.cos.ap-nanjing.myqcloud.com/blog/202211091927860.png

都没问题之后,回到控制台,点击扫描所有媒体库,Jellyfin就会自动对路径下的所有媒体进行扫描添加:

https://zebpic-1301715962.cos.ap-nanjing.myqcloud.com/blog/202211091930126.png

这里简单说一下媒体路径的命名规则:

首先要保证在路径下每一个剧集都是一个单独的文件夹,在文件夹里面存放剧集的媒体资源,如果剧集有分季的话,每一季通过Season进行单独分类,如下:

https://zebpic-1301715962.cos.ap-nanjing.myqcloud.com/blog/202211091950104.png

https://zebpic-1301715962.cos.ap-nanjing.myqcloud.com/blog/202211091950882.png

都OK之后,等待Jellfin扫描完成,进入首页,就会看到剧集内容:

https://zebpic-1301715962.cos.ap-nanjing.myqcloud.com/blog/202211091951385.png

https://zebpic-1301715962.cos.ap-nanjing.myqcloud.com/blog/202211091952450.png

02 Kodi搭建

搭建并配置好Jellfin之后,接着需要安装Kodi。

官网地址:Kodi

下载到本地后,默认安装即可,安装结束之后勾选Run Kodi即可进入Kodi页面:

https://zebpic-1301715962.cos.ap-nanjing.myqcloud.com/blog/202211091955833.png

默认为英文,接着进行配置。

点击设置,进入Interface,在左边的菜单里选择 Skin 并把字体改成 Arial based,在Regional选项设置语言选项,下拉选择中文简体就会自动安装,一定要注意是先选择字体,不然中文字符会乱码:

https://zebpic-1301715962.cos.ap-nanjing.myqcloud.com/blog/202211091958028.png

https://zebpic-1301715962.cos.ap-nanjing.myqcloud.com/blog/202211091959420.png

接着点击小齿轮图标进入设置界面,选择系统菜单项,在左边的菜单里选择插件,然后打开未知来源选项:

https://zebpic-1301715962.cos.ap-nanjing.myqcloud.com/blog/202211092004981.png

接着回到进入设置界面,选择文件管理菜单项,在左边的菜单里选择添加源,然后在弹出的窗口里输入下面的地址:https://repo.jellyfin.org/releases/client/kodi

https://zebpic-1301715962.cos.ap-nanjing.myqcloud.com/blog/202211092006112.png

接着安装 Jellyfin 插件,点击小齿轮图标进入设置界面,选择插件菜单项,再选择从 zip 文件安装,接着选择刚才创建的 kodi jellyfin 网络源:

https://zebpic-1301715962.cos.ap-nanjing.myqcloud.com/blog/202211092008062.png

在弹出的窗口里选择 repository.jellyfin.kidi.zip,等待执行完成。然后返回到上一级菜单选择从库安装,从弹出的窗口里选择 Kodi jellyfin Addons,安装即可:

https://zebpic-1301715962.cos.ap-nanjing.myqcloud.com/blog/202211092009116.png

接着会弹出窗口配置插件,这几步一般保持默认选项即可,最后登录Jellfin的服务器,在安装Jellfin过程设置的密码,选择要添加的媒体,进行添加。

最后,等待几秒同步,回到首页,就会看到Jelyyfin的媒体内容。

后续对媒体增删改的过程,主要是通过在Jellyfin端进行,kodi可以设置每次启动自动同步,也可以选择手动的更新。

事实上流媒体功能远不止这些,还可以设置媒体的自动刮削、中文字幕插件等等。有时间再写其他的折腾记录。

03 Jellyfin主题

Jellyfin ⚙️ - theme.park Docs

theme-park.dev网站提供了包含Jellyfin、Plex、Emby在内的二十余个媒体管理器的主题

https://zebpic-1301715962.cos.ap-nanjing.myqcloud.com/blog/202405152054716.png

在Jellfin中,只需打卡控制台→常规,在自定义CSS代码选项填入park网站主题链接,例如:

1
@import url("https://theme-park.dev/css/base/jellyfin/<THEME>.css");

https://zebpic-1301715962.cos.ap-nanjing.myqcloud.com/blog/202405152056009.png

网速良好的情况下,几秒钟之后回到主页,你会看到一个耳目一新的主题

https://zebpic-1301715962.cos.ap-nanjing.myqcloud.com/blog/202405152057082.png

park.dev提供了多种主题,只需修改上方CSS代码的名称即可体验不同的主题。

https://zebpic-1301715962.cos.ap-nanjing.myqcloud.com/blog/202405152100439.png

https://zebpic-1301715962.cos.ap-nanjing.myqcloud.com/blog/202405152100469.png

https://zebpic-1301715962.cos.ap-nanjing.myqcloud.com/blog/202405152101496.png

04 kodi遥控器

当下载好电影电视剧之后,下一步要做的当然就是舒舒服服的躺在床上,靠着抱枕,吃着薯条,美滋滋的观看影片。

这时候一个可以遥控播放器的设备是很需要的。

如果你有无线游戏手柄,那么游戏手柄会是一个不错的方式。

有了它,你可以在床上操控kodi,无论是播放、暂停、停止,均可以通过手柄进行。

https://zebpic-1301715962.cos.ap-nanjing.myqcloud.com/blog/202405161821168.png

假如没有游戏手柄,那么kore将会是另一种不错的方式。

Kore: Kore is a simple and easy-to-use Kodi remote.

kore:一个可以遥控kodi播放器的移动软件

有了它,只需要连接kodi设备地址,kore就可以充当kodi的遥控器

https://zebpic-1301715962.cos.ap-nanjing.myqcloud.com/blog/202405161819630.png

你可以用kore操作kodi进行播放,快进,选集等等所有操作

https://zebpic-1301715962.cos.ap-nanjing.myqcloud.com/blog/202405161822364.png

有了遥控器,就可以舒舒服服的躺在床上,吃着薯片,享受观影时光

05 移动客户端

服务端搭建好了Jellyfin流媒体之后,那当然少不了客户端。

Jellyfin和kodi都有各自的客户端,但两个客户端使用起来并不十分顺手,尤其kodi,横屏的使用以及不是十分灵敏的触摸操作影响了一些体验。

后来,找到了Findroid,第三方原生Jellyfin app,专为播放Jellyfin媒体资源

findroid: Third-party native Jellyfin Android app

https://zebpic-1301715962.cos.ap-nanjing.myqcloud.com//blog/202405160847697.png

比之kodi、jellyfin的客户端,findroid更为轻量

https://zebpic-1301715962.cos.ap-nanjing.myqcloud.com//blog/202405160859625.png

06 远程组网

通过以上的方式,可以实现下班回家之后,无论在手机还是在平板上,我们都可以随时访问影片资源。

但如果我们在公司,或者在出差的时候,也想访问家里的影片,怎么办呢。

我的第一想法是内网穿透。

在VPS上搭建一个frp,将家里的地址穿透出来,我在外部就可以通过连接VPS地址访问内网。

但实际尝试下来发现,将媒体服务用内网穿透,有2个不足:

  1. 首先,得要有一个VPS
  2. 其次,VPS的配置不能过低,1核2G的穿透体验是糟糕的

那如果不使用VPS,还有其他方法吗。

答案肯定是有的。ZeroTier无疑是一种很好的方式。

ZeroTier 是一种开源的虚拟网络软件,它允许您在任何设备之间创建安全的私有网络,而无需任何硬件或配置。

ZeroTier 这一类 P2P VPN 是在互联网的基础上将自己的所有设备组成一个私有的网络,可以理解为互联网连接的局域网。最常见的场景就是在公司可以用手机直接访问家里的 NAS,而且是点对点直连,数据传输并不经由第三方服务器中转。

Zerotier 在多设备之间建立了一个 Peer to Peer VPN(P2PVPN) 连接,如:在笔记本电脑、台式机、嵌入式设备、云资源和应用。这些设备只需要通过 ZeroTier One ( ZeroTier 的客户端) 在不同设备之间建立直接连接,即使它们位于 NAT 之后。连接到虚拟 LAN 的任何计算机和设备通常通过 NAT 或路由器设备与 Internet 连接,ZeroTier One 使用 STUN 和隧道来建立 NAT 后设备之间的 VPN 直连。

简单一点说,Zerotier 就是通过 P2P 等方式实现形如交换机或路由器上 LAN 设备的内网互联

https://zebpic-1301715962.cos.ap-nanjing.myqcloud.com//blog/202405160930354.png

要想使用ZeroTier进行组网,我们只需要几个步骤:

访问ZeroTier官网ZeroTier Central,注册账号登录

https://zebpic-1301715962.cos.ap-nanjing.myqcloud.com/blog/202308051803690.png

如上图,可以看到,登录后的页面很简洁,Create A NetWork就是创建一个网络,创建后下方会显示网络的信息,左侧Your Networks显示当前的网络数量和授权节点数量

创建好网络后,进入配置界面,推荐都保持默认选项

https://zebpic-1301715962.cos.ap-nanjing.myqcloud.com/blog/202308051808590.png

接着在下载界面下载客户端Download

https://zebpic-1301715962.cos.ap-nanjing.myqcloud.com/blog/202308051809447.png

安装好客户端后,在图标右键,选择加入网络

https://zebpic-1301715962.cos.ap-nanjing.myqcloud.com/blog/202308051816804.png

在弹出的窗口填入网络ID,网络ID在创建网络的时候显示

https://zebpic-1301715962.cos.ap-nanjing.myqcloud.com/blog/202308051905015.png

此时客户端就会显示连接的网络ID,打开cmd查看ip地址,会发现多了一个以太网适配器 ZeroTier One

https://zebpic-1301715962.cos.ap-nanjing.myqcloud.com/blog/202308052003032.png

在另一台电脑中重复安装客户端的操作及加入网络,这时需要做一个授权操作,在网站上网络选项中的Members选项勾选加入的客户端,完成授权,否则两台电脑之间无法联通

https://zebpic-1301715962.cos.ap-nanjing.myqcloud.com/blog/202308052001370.png

授权后,等待五分钟左右,两台电脑间就可以互相通信,进行局域网操作

https://zebpic-1301715962.cos.ap-nanjing.myqcloud.com/blog/202308052011280.png

此时,两台设备之间就相当于加入了同一个局域网,我们只需要浏览器访问Jellyfin所在设备的IP地址,就可以远程访问到媒体服务

https://zebpic-1301715962.cos.ap-nanjing.myqcloud.com//blog/202405160934099.png

同时,ZeroTier安装时会自动加入启动计划,当设备开机联网之后,ZeroTier会自动启动。

当然,ZeroTier还可以实现其他多种效果,比如远程访问3389,再配和SyncTrayzor进行文件自动备份等等。

https://zebpic-1301715962.cos.ap-nanjing.myqcloud.com/blog/202308052012085.png

总之,如果没有足够的经费购买VPS,那么ZeroTier会是一个不错的方案。

07 移动设备组网

ZeroTier作为远程组网的设备无疑是非常好用的,但遗憾的是,ZeroTier目前还没有android移动端,所以上面的Findroid看起来只能在家里使用。

那如何使移动设备也可以远程访问媒体服务呢?

openp2p会是一个很好的解决方案。

OPENP2P.CN

OpenP2P是一个开源、免费、轻量级的P2P共享网络。你的设备将组成一个私有P2P网络,里面的设备可以直接访问其它成员,或者通过其它成员转发数据间接访问。 如果私有网络无法完成通信,将会到公有P2P网络寻找共享节点协助通信。 相比BT网络用来共享文件,OpenP2P网络用来共享带宽。

其实openp2p和ZeroTier一样,都是通过P2P网络进行中转共享,但openp2p具有andorid移动端。

根据官方的使用说明:openp2p快速入门,只需要几分钟即可将手机与其他设备连接起来

首先,在https://console.openp2p.cn/注册账号,不需要任何手机号、邮箱验证

https://zebpic-1301715962.cos.ap-nanjing.myqcloud.com//blog/202405161013605.png

接着使用注册的账号登录,在本地和远程设备都安装对应的客户端

https://zebpic-1301715962.cos.ap-nanjing.myqcloud.com//blog/202405161014287.png

当客户端运行之后,控制台就会显示设备,绿色代表设备在线,红色代表离线

https://zebpic-1301715962.cos.ap-nanjing.myqcloud.com//blog/202405161016112.png

安卓端需要填入账号Token,在控制台的我的界面可以找到

https://zebpic-1301715962.cos.ap-nanjing.myqcloud.com//blog/202405161017980.png

接着,在节点点击P2P应用,进行新建

https://zebpic-1301715962.cos.ap-nanjing.myqcloud.com//blog/202405161020575.png

本地监听端口,就是手机的监听端口,最好和下方的Jellyfin区分开

指定中转节点,请选择稳定在线且容易建立P2P连接的成员(比如云主机),如果拥有公网IP请务必放行config.json里的TCPPort端口

远程设备,就是Jellyfin所在的设备

远程服务地址,localhost本地地址

远程服务端口,就是Jellyfin的端口,默认8096

点击保存后,会自动开始连接

https://zebpic-1301715962.cos.ap-nanjing.myqcloud.com//blog/202405161025743.png

当图标为绿色时,代表连接成功。

此时,我们通过Findroid增加服务器,地址是控制台的手机内网地址,格式为:http://192.168.1.16:18088

如果没有问题,则Findroid就会提示登录,使用Jellyfin设置的账号登录即可

最后的效果,可以通过其他WIFI或移动网络访问媒体服务,连接速度取决于当前设备网络的速度

https://zebpic-1301715962.cos.ap-nanjing.myqcloud.com//blog/202405161030302.png

无疑,如果经常使用手机平板在远程观看媒体服务,openp2p是一个极好的方案。

但是,openp2p做为一个完全免费开源的项目,控制台的注册登录是没有短信码、图片码等任何安全验证的,所以对控制台来说,即使采用了https,也会存在一定的安全风险:当账户名或密码比较薄弱时,可以通过手段获取到账号信息

https://zebpic-1301715962.cos.ap-nanjing.myqcloud.com//blog/202405161041033.png

所以,在使用openp2p时:

  1. 注册账号密码一定要不容易猜测,例如admin、test、123456这种非常容易被猜到的就不要使用了,当然,控制台也设置了不少于八位
  2. 不要在非常机密、非常隐私的设备上进行p2p转发,例如涉密计算机,存储关键个人信息的设备等。推荐使用NAS这种具有专一用途,同时又不会存储过于敏感数据的设备
  3. 在进行P2P应用时,同2,推荐只转发Jellyfin这类的无关键数据的端口,尽量避免直接转发3389、22可登录设备的端口,如果一定需要,参考1设置一个不容易被猜解到的账号

08 影视刮削

下载好了影视资源之后,还需要对资源进行刮削。

TMM,tinyMediaManager,专用于影视剧集刮削服务。

有了它,可以自动下载影片的海报图片,演员信息,剧集概括等等,刮削好的剧集也会在Jellyfin页面有着更好看的展示外观。

https://zebpic-1301715962.cos.ap-nanjing.myqcloud.com/blog/202405161826079.png

对于电视剧,TMM自动刮削之后,会显示每一集的概括信息

https://zebpic-1301715962.cos.ap-nanjing.myqcloud.com/blog/202405161827099.png

这样,在使用Jellyfin更新之后,会拥有更好看的展示

https://zebpic-1301715962.cos.ap-nanjing.myqcloud.com/blog/202405161829160.png

以上,就是我这个假NAS使用者的些许折腾记录。