樱桃和蛋糕
Kodi、Plex、emby 等聚合媒体工具的优点是什么?蛋糕上的樱桃,面包上的糖霜。
它们是传统播放工具的一个新阶段,通过美观的可视化界面,弥合计算机和家庭影院之间的距离,重要的永远是内容,但蛋糕上的樱桃让它更好看一点,面包上的糖霜增加了滋味,让你享用一部影片时更加愉悦。
这种体验增强体现在两个方面:
一、🍒 樱桃:本地媒体文件的组织优化
下图是我用 Plex 创建的一个电视剧资料库,你只需要下载影片文件,Plex 会自动将剧集组织起来,以海报墙的形式展示,已观看和未观看的内容有不同的标记(电影为橙色三角,剧集为橙色集数,橙色横线为进度,无标记为已观看),观看进度会在所有设备上同步,你可以在电视上看一会,在手机上点「继续」从刚才的进度继续观看。
Plex 有很多细节设计,比如 PC端鼠标移到海报上时,点橙色圆形部分直接播放,点封面其他部分进入详细信息,如下图,展示分季、详情、IMdB等渠道评分,往下滑动还有演员表、Plex 提供的在线花絮、预告片等内容,Plex 将这些信息组织起来,让你可以比如看一下预告片,点选演员查看资料库里这位演员参演的其他作品。你可以评分,我给上载新生 ⭐⭐⭐⭐,可以点编辑,增加自定义的描述、标签、替换海报、背景等文件。
这些额外的体验增强,让你在观看视频时更开心一点点。
二、🎂 分享你的蛋糕
如果你有 Plex 订阅,服务器有公网IP 或者搭建了 DDNS、frps 等打通网络的服务,可以将你的资料库共享给亲朋好友,设置权限,让他们观看你 Plex 里的内容,可以选中一部作品选择共同观看,和远在天涯海角星的朋友同时欣赏一部电影。
常见媒体中心的对比
1. 渊源
我们先了解几款媒体播放工具的关系,其中蕴含了差别
- Kodi 是在 2002 年推出的开源媒体中心,最初运行在 Xbox 上,原名 XBMC(Xbox Media Center),后来逐渐发展成多平台的开源媒体中心
- Plex 是在 2008年出现的 Kodi 开源分支,在 2015 年彻底闭源,成为商业软件
- Emby 最初是开源软件,从 3.5.3 版本变成商业软件
- Jellyfin 基于 Emby,Emby 的一些核心开发人员对 Emby 闭源不满,在 Emby 3.5.2版本的基础上开发了免费的 Jellyfin
2. 3个类别
这些播放工具很明显的存在 3个大类
- 视频播放器 作为一个单纯的桌面视频播放软件,致力于打开、播放视频
- 本地媒体中心 服务端即客户端,单一中心,只需要在本地设备上安装软件,文件处理在本地,媒体数据在本地,代表是 Kodi 和 ios 平台的 infuse
- 服务器媒体中心 需要安装服务端和客户端,服务端组织媒体数据,处理文件,客户端连接多个服务端,代表是 Plex、Emby 和 Jellyfin
本地媒体中心和服务器媒体中心的区别,在于是否需要单独的服务器,服务器媒体中心需要你有一台 NAS 或 VPS 安装服务端来提供扫描、转码等服务,这对本地媒体中心并不是必须的。
3. 热门播放工具比较
播放工具 | 平台 | 串流 | 刮削 | 蓝光iso | 付费 |
---|---|---|---|---|---|
potplayer | Win | √ | x | x | 免费 |
nplayer | ios / android / TV | √ | x | x | 免费 |
Kodi | ios / android / TV 等 | √ | √ | √ | 开源 |
Plex | ios / android / TV | √ | √ | x | 免费+付费 |
Emby | ios / android / TV | √ | √ | x | 免费+付费 |
jellyfin | ios / android / TV | √ | √ | x | 开源 |
infuse | ios / Mac / Apple TV | √ | √ | x | 付费 |
媒体中心工具非常多,上面列出了比较热门的,infuse 被称为 apple 上最好用的播放器,Android TV 类似的本地媒体中心有 elfilm、nova ,媒体中心播放器还有 OSMC、vidon、Serviio、Squire 等等,如果你在的设备是 Android 电视盒,基于 Kodi 的 LibreELEC 系统,和由 LibreELEC 分理出的 CoreELEC 也是好选择。
4. 对转码的看法
转码不是必须的,主要是为了应对上传带宽不足,比如在移动设备,远程播放时长 2h,体积 70GB 的 4K蓝光原盘,需要最低约 100Mbit/s 的上传带宽,国内运营商通常只给 30Mbit/s 的上传带宽,这时候服务端会把视频转成 10GB以内的 1080P视频文件。
问题是,我既然下的是蓝光,为什么要用 1080P 看?为什么不等回家再看?而且转码很吃服务器硬件,你需要配置较高的设备,来满足一个奇怪的需求。
转码的另一种情况是格式不支持,比如 Plex 需要将 x265 编码转换成 x264编码播放。但这种情况我会选择 Kodi 打开视频。
我反感转码,播放清晰比播放流畅重要。
价格
Plex 基本功能免费,如果你主要在局域网内使用,不需要转码,不需要移动端播放等功能,那么你可以免费享受 Plex 提供的服务。
Plex 移动端限制播放时长,可单独 $5 解锁一种移动端(Android / ios 需分别解锁),会员邀请的免费用户在移动端观看会员的媒体库内容时不受时长限制。
Plex 会员价格为 $4.99/月,$119/终身,增加了转码、移动端解锁、家长控制等功能,我列出了 Plex 免费和会员(PASS)的主要区别:
Plex 功能 | 免费 | 会员 |
---|---|---|
4K、格式支持 | √ | √ |
投屏 | √ | √ |
刮削、收藏夹和标签 | √ | √ |
媒体优化(更流畅的播放) | √ | √ |
新闻、网络节目、直播、歌词 | √ | √ |
硬件转码 | x | √ |
Plex提供的中转 | 1Mbps | 2Mbps |
移动端播放 | x(可$5解锁) | √ |
移动端播放(被邀请的用户) | x | √ |
移动端下载 | x | √ |
家长控制 | x | √ |
实验功能 | x | √ |
安装
Plex 官方提供了 windows、Linux、Mac、群晖、威联通、unRAID 等多种设备的安装文件,见 官方下载
windows、Mac、NAS 上的安装非常简单,这里主要说一下 VPS 上软件源安装和 Docker 安装服务端 PMS(Plex Media Server),以及 SSH转发端口。
1. 从软件源安装
以 debian 为例
1.1 更新操作系统软件包
apt update && apt upgrade -y
1.2 安装依赖
apt install apt-transport-https curl wget -y
1.3 下载并导入 GPG密钥
wget -O- https://downloads.plex.tv/plex-keys/PlexSign.key | gpg --dearmor | tee /usr/share/keyrings/plex.gpg
1.4 导入存储库并安装 PlexMediaServer
echo deb [signed-by=/usr/share/keyrings/plex.gpg] https://downloads.plex.tv/repo/deb public main | tee /etc/apt/sources.list.d/plexmediaserver.list
再次更新一下
apt update
安装 Plex Media Server
apt install plexmediaserver
1.5 默认情况下,应自动启动 Plex Media 服务,可以验证一下状态
systemctl status plexmediaserver
如果该服务未激活,启动 Plex
systemctl start plexmediaserver
在系统启动时启动 Plex
systemctl enable plexmediaserver
2. Docker 安装
官方提供的 docker镜像见 linuxserver/plex
官方配置默认 host 模式。想要自定义网络,至少要映射默认端口 32400,默认使用的还有 1900/udp、3005、5353/udp、8324、32410-32414/udp、32469。
docker run -d \
--name=plex \
--net=host \
-e PUID=1000 \
-e PGID=1000 \
-e VERSION=docker \
-e PLEX_CLAIM= `#optional` \
-v <path/to/plex/database>:/config \
-v <path/to/transcode/temp>:/transcode \
-v <path/to/media>:/data \
--restart unless-stopped \
lscr.io/linuxserver/plex:latest
-e PLEX_CLAIM=
填入从 https://plex.tv/claim 获取的一个 4分钟有效的 CLAIM 密钥,这一行可以删掉,我在一次安装中设置了这行环境配置,安装完成后依然要远程验证。
以上环境配置未设置硬件加速,英特尔或AMD的硬件加速见 linuxserver/plex 文档。
我在 VPS 上网盘挂载在 /sync 文件夹下,自己的配置
docker run -d \
--name=plex \
--net=host \
-e PUID=1000 \
-e PGID=1000 \
-e VERSION=docker \
-v /sync/backup/plex/config:/config \
-v /sync:/movies \
--restart unless-stopped \
lscr.io/linuxserver/plex:latest
3. 第一次登录的 SSH转发
第一次配置必须在内网环境,因为 PMS 默认未开启远程访问,我们可以使用 SSH 转发端口解决这个问题。
ssh root@ip -L 8888:localhost:32400
再去浏览器里打开 localhost:8888/web 进入即可进行初始配置。
4. rclone 挂载
可以把外部设备当资料库,比较常用的是 rclone 挂载网盘,建议使用 rclone 的流媒体参数提升播放的稳定性,rclone 部分 vfs 挂载参数如下:
- –copy-links
- –no-check-certificate
- –allow-non-empty
- –drive-shared-with-me
- –cache-chunk-size SizeSuffi #块的大小
- –cache-chunk-total-size SizeSuffix #块可以用的本地存储的总大小,默认10GB
- –config /路径 #指定配置文件路径
- –ignore-errors #跳过错误,避免因部分文件错误导致 rclone 任务中止
- –allow-non-empty
- –no-gzip-encoding
- –umask 000
- –allow-other
- –attr-timeout 10m #文件属性缓存(大小,修改时间等)的时间。如果小鸡配置较低,建议适当提高这个值,避免过多的和内核交互,占用资源;
- –vfs-cache-mode full #开启vfs缓存,此缓存占用本地存储空间
- –vfs-cache-max-age 1m #缓存时间,建议设置小一点,要不切视频可能导致我的20g被占满
- –vfs-read-chunk-size-limit 100M #缓存块大小,每次块达到100M都会重新调用网盘的API,设置大些可以减少调用,按需设置
- –buffer-size 100M
- –vfs-cache-max-size 2G #最大缓存大小
如果本地磁盘被缓存占满了会导致 plex 无法放视频,手动删除如下路径缓存文件即可
rm -rf /root/.cache/rclone/vfs/*
我自己修改的实例:
rclone mount ouo: /sync/ouo --allow-other --allow-non-empty --no-gzip-encoding --umask 000 --attr-timeout 10m --vfs-cache-mode full --vfs-cache-max-age 1m --vfs-read-chunk-size-limit 100M --buffer-size 100M --vfs-cache-max-size 2G
注意,需要先挂载再启动 Plex,如果先启动 Plex,扫描的是本地路径 /sync/ouo/,而不是 rclone 挂载的 ouo:
设置
优化设置
Plex 控制面板设置包括 [账号]、[PLEX WEB]、[服务器] 三个大类,账号设置和 PLEX WEB设置是所有服务器通用的,[服务器]设置针对每个服务器独立设置,我的设置偏向尽可能不转码,以原始质量播放。
帐号
- 账户 → 语言、音频和字幕设置,选择中文,自动选择字幕可以始终启用
- 串流服务 → 可以连接你有的其他服务
- Plex Home → 邀请好友和家人、管理可观看的内容
PLEX WEB
- 常规 → 右上角显示高级设置 → 语言:中文
- 质量 → 视频质量:最高清晰度、☑以原始质量播放较小的视频、☑使用推荐设置 → 保存修改
- 调试 → 质量 → ☑直接播放 ☑直接串流 → 保存修改
服务器
服务器分为 状态、设置、管理三个子项
- 选中服务器时可以看到名称下方的标记,“远程” 是直接连接,“附近的” 是直连且本设备和服务器处于同一局域网内。非直连用的 Plex 官方服务器的转发
- 设置 → 远程访问,显示了 Plex 官方服务器对你的 PMS 的测试结果
- 代理 → 其实是刮削器设置,每一个分类下横向列出各个刮削源,这里设置的结果作为资料库中选择刮削的选项,
Personal Media
是文件自带媒体信息,Plex Movie
(默认)是Plex官方维护的,以IMDb为主,TMDb为辅的数据库;The Movie Database
即 TMDb,一个由社群维护的开放影视数据库 - 资料库 → 自动扫描设置,Plex 刮削挺快的,大部分按你喜欢的设置就行,建议 ☑以较低优先级运行扫描器任务,此项下都选择永不。
- 网络 → ☑启用 Plex 官方的转发,非直连时有效,非会员 1Mbps,会员 2Mbps,且在中国被运营商干扰
- 网络部分较为复杂,像使用自己的域名、自定义证书,此处不详述
- 转码器 → 转码器质量:自动的 → ☑禁用视频流转码
- 语言 → 按你喜好来,会自动选择视频文件中的声轨和字幕
- DLNA → 局域网内建议启用,会向局域网内设备广播,可以用其他设备支持 DLNA的播放器播放 PMS 的视频
- 管理 → 媒体库,管理当前服务器的媒体库
- 管理 → 故障排除,优化数据库,清理软件包是清理下载的媒体文件
- 终端 → 如果出现问题,在此处可以查看报错信息
- 插件 → 安装插件,Plex 的第三方插件很少,不详述
修改视频信息和海报的刮削源
以电影为例:
- 管理面板 → 选择服务器 → 设置|代理 → 电影 → The Movie Database → 全选
- 切换到 管理|资料库 → 编辑资料库 → 高级 → 切换代理为 The Movie Database
设置 OpenSubtitles 字幕下载
- 注册 OpenSubtitles.org 帐号
- 设置 → 选中服务器 → 设置|语言 → ☑自动选择音轨和字幕,设置首选音轨语言、字幕总是启用、字母语言中文
- 设置|代理 → 电影 → Plex Movie(Legacy) → 将 OpenSubtitles.org 勾选并拖到最上面,即优先使用 → 点开右侧设置 → 输入账号密码、首选语言
插件
这些插件其实都不太必要,字幕用 OpenSubtitles,或者下载后放在视频文件目录,扫描资料库可以选择了。
设置 Sub-zero 字幕插件
- 下载 Sub-zero.bundle 文件并解压到 Plex 的
/config/Library/Application Support/Plex Media Server/Plug-ins
文件夹下,插件文件夹要以.bundle
结尾,所以要删去解压出来的文件夹名后的版本号 - 重启 plex
- 设置 → 选择服务器 → 管理|插件 就能看到插件了,点开插件图标上的设置进行设置
- 和设置 OpenSubtitles 第 3步相同,只是现在选择新出现的 Sub-zero Subtitles
设置加载本地 .nfo 文件和本地外挂字幕
- 下载 XBMCnfoMoviesImporter.bundle和 XBMCnfoTVImporter.bundle,安装同 Sub-zero
- 在服务器-管理下的资料库中,修改刮削器为 XMBCnfo 开头的项
- □ Enable generating Collections from tags
- Collections:Disabled
- 在代理选项中,各项目的 XBMCnfo 开头的项目,☑ Local Media Assets
- 刷新资料库,此时优选使用本地媒体信息
设置 IPTV 插件
- 下载 IPTV.bundle 插件,后续操作一样的,不多说了
设置本地 ass字幕转 srt 插件
- 下载Asstosrt.bundle 插件,后续操作一样的,不多说了
Plex Labs 和第三方功能
Plex-Labs 包括实验性功能、社区支持等内容。目前有
- Plex Dash 服务器监控
- Plexamp 音乐播放器,我挺喜欢的
- Webhooks 服务器管理,适用于有相关经验的用户,比如家庭自动化、负载均衡
- TAUTULLI 第三方提供,活动监控、统计和分析
- Sub-Zero 第三方提供,电影和电视节目字幕服务
Plexamp
这是一个会员惊喜,界面美观,混音合适,设置详尽,直接读取 PMS 音乐资料库,可支持 flac、dsd格式,响应速度非常快,暂无中文。我用过之后直接把自建的 navidrome 删了。
其他技巧
1. 文件命名建议
Kodi / Plex / Emby / Jellyfin 这些媒体中心工具按相似的规则读取本地文件,比如 poster.jpg
会被识别为目录下视频的海报,*.forced.srt
会被当作首选加载的本地字幕。(ext 是格式,通常是 srt 或 ass)
如果视频未被正确读取,可以按下述格式修改:
- 剧集 影片中文名.[英文名.年份.季.格式信息]
- 电影 影片中文名.英文名.年份
文件规则:
/Batman Begins(2005)
├─Batman Begins(2005).mkv
├─Batman Begins(2005)
├─Batman Begins(2005)
├─Batman Begins(2005)
├─Batman Begins(2005).forced.ext.* #强制使用的字幕
├─cover.jpg #支持 jpg、jpeg、png、tbn
├─poster.jpg #海报文件
├─poster-1.jpg
├─fanart.jpg
└─Batman Begins(2005)
多个文件组织成一个项目,加上 Split_Name 如 cdX、discX、diskX、dvdX、partX、ptX,会把多个文件视为一个分段了的视频播放
/ Name(2020)
├─Name(2020)-pt1.ext
└─Name(2020)-pt2.ext
2. 让 Plex 将自己拍摄的视频等文件识别并组织为电视剧
媒体文件按 Plex 的命名规则重命名就行了,比如原文件为
1. 某教学视频1
2. 呵呵哒的视频
3. 这是教学的第3课
这种是不会识别和组织的,但你将名称改为
1. 某教学视频S01E01
2. 某教学视频-呵呵哒的视频 S01E01
3. 某教学视频-这是教学的第3课 S01E01
Plex 会将它们组织成名为 “某教学视频” 的电视剧
常见问题
Plex 的控制面板-服务器下的管理中,终端选项可以看到服务器日志,在故障排除中可以优化数据库、下载日志。通过日志信息可以有效的了解错误问题,尝试进行解决。以下列出了我碰到过的问题和解决方式:
Q:h264编码的文件被强制转码或显示无法播放
可能是字幕的问题,.ssa 字幕需要服务端转码才能播放,选择外挂字幕或 .srt 字幕
Q:plex 选单中不同设备的资料库混在一起
可能是一台设备装了多个 PMS 导致的,或者多个 PMS 用一个设备做中间节点连接,被误认为同一个设备,退出帐号再重新登录就好了。
Q:plex web 显示此视频无法播放
视频编码方式无法串流,或网页端无法转码,可以尝试用客户端播放。
Q:连接远程服务器中的 plex server 播放卡顿
可能的原因很多,硬盘 io 低、网络不好、非直连等等。当控制面板-设置中服务器选单中显示「远程」时为直连,间接连接会通过 Plex官方服务器中转,非会员限速 1Mbps,会员限速 2Mbps,且在中国部分地区被部分运营商阻断。
Q:Linux 设备上无法读取文件
可能是路径的问题,建议在根目录下挂载,如果是权限问题,让 Plex获取对应目录权限
chown -R plex:plex /path
参考文章
在 Debian 11 Bullseye 上安装 Plex 媒体服务器