Q叔开源平替QS PINGTI

Jellyfin、Emby、Plex 怎么选:自建影视库的真实差异

三者的商业模式、硬解能力、电视端体验差别很大,选错了半年后要重刮几万集元数据。按场景给结论,并说清楚转码这件事为什么决定一切。

这三个工具做的事是一样的:把你硬盘上的电影电视剧整理成一个带海报、简介、续播记录的影视库。但它们的商业模式、转码能力、客户端成熟度差别很大,选错了会在半年后被迫迁移——而迁移影视库意味着重新刮削几万集元数据。

先说结论,后面是理由:

  • 纯自用、有 Intel 核显、不想花钱 → Jellyfin
  • 家里老人小孩都要用、电视端体验优先、愿意为省心付费 → Plex
  • 需要成熟稳定的硬件转码、长期重度使用 → Emby

一、先搞懂一个概念:转码

选择哪套系统,八成取决于你对「转码」的需求。所以必须先说清楚。

直连播放(Direct Play):客户端能直接解码你的原始文件,服务器只负责把字节流发过去,几乎不消耗 CPU。一部 4K 原盘直连播放,N100 这种低功耗芯片也能扛十个人。

转码(Transcode):客户端解不了,服务器得实时把视频重新编码成客户端能播的格式。这时候 CPU 会瞬间打满,必须靠硬件加速(Intel 核显 QSV/VAAPI、NVIDIA NVENC、AMD VCN)才能实时完成。

什么时候会触发转码:

  • 视频编码客户端不支持(比如 AV1、HEVC 10bit,很多电视和手机不支持)
  • 音频编码不支持(这是最常见的,DTS、TrueHD 绝大多数电视解不了,必须转成 AAC)
  • 字幕是 PGS/ASS 这种图形字幕,客户端烧不进画面
  • 带宽不够,需要降低码率

所以关键判断是:你有 Intel 核显吗? 有的话,Jellyfin 的 QSV 支持已经很好,N100/N305/i3 都能同时转好几路 4K。如果没有——比如群晖 DS220+ 这类 ARM 或老款无核显机型——那你就只能靠直连播放,选谁都没用。

二、三者的核心差异

授权与费用

Jellyfin 是完全自由的软件,没有账号体系、没有付费档位、没有功能阉割。你不会因为不付费而在某个功能上被卡住。

Emby 早期开源,后来转为闭源。基础功能免费,但硬件转码、影院模式、封面图、离线同步这些都需要 Emby Premiere,按月或买终身授权。

Plex 免费版够用来看片,但硬件转码、移动端播放、离线下载、跳过片头需要 Plex Pass。它还有一个绕不开的特点:需要登录 Plex 账号,媒体库信息会上报到云端。这意味着 Plex 官方服务出问题时,你可能连本地库都打不开,历史上发生过不止一次。

如果「数据不出家门」是你的核心诉求,那这一条基本就能把 Plex 排除掉。

客户端与电视端

这是 Plex 最强的地方。Plex 的电视端 App 覆盖三星、LG、索尼、Apple TV、安卓电视,成熟度和流畅度都领先。Jellyfin 的电视端要靠 Android TV 版或者第三方客户端,在部分智能电视上体验明显不如 Plex,老款电视甚至装不上。

家里如果有不折腾的长辈或小孩,电视端能不能开箱即用,比任何技术参数都重要。这是 Plex 值得付费的唯一理由,也是最重要的理由。

刮削与中文元数据

Plex 自带元数据库最省心,中文片名、演职员信息命中率高。

Jellyfin 用 TMDB/TVDB,需要你在库里配好语言优先级(把中文设为第一),否则默认刮英文标题。配好之后质量也不错,但需要一次额外配置。国内一些冷门剧集在 TMDB 上的中文信息缺失,这时候要靠手动改或者用第三方刮削插件。

外网访问

Plex 有中继服务,不配端口也能从外网访问,代价是带宽受限、画质被压。

Jellyfin 必须自己解决:反向代理 + 域名,或者 VPN 回家,或者 Cloudflare Tunnel。技术上不难,但对不折腾的人是个门槛。

三、Jellyfin 部署要点

用 Docker 部署,关键是把核显直通给容器:

services:
  jellyfin:
    image: jellyfin/jellyfin:latest
    container_name: jellyfin
    network_mode: host          # 方便 DLNA 和客户端自动发现
    environment:
      - TZ=Asia/Shanghai
      - PUID=1000
      - PGID=1000
    volumes:
      - /srv/jellyfin/config:/config
      - /srv/jellyfin/cache:/cache
      - /mnt/media:/media:ro     # 媒体库只读挂载,防止误删
    devices:
      - /dev/dri:/dev/dri        # Intel 核显硬解,这一行是重点
    restart: unless-stopped

三个容易出错的点:

/dev/dri 不存在。 说明宿主机没有独立显卡设备或驱动没装。用 ls /dev/dri 确认。群晖需要是带 Intel 核显的型号(DS920+、DS1520+ 这类),ARM 机型没有。

用 network_mode: host 而不是端口映射。 Jellyfin 靠 UDP 广播做客户端自动发现,桥接网络下发现会失效。当然 host 模式下它直接占用 8096,注意端口冲突。

媒体目录用 :ro 只读挂载。 影视库目录一旦被容器写坏,几 TB 数据很难救。只读挂载能防住手滑。

硬解需要在 Jellyfin 后台手动开启:管理 → 播放 → 硬件加速选 Intel QuickSync (QSV),勾上 HEVC、VP9、AV1 的解码,勾上「启用硬件编码」。然后放一部 HEVC 的片子,把码率手动调到 3Mbps 强制转码,观察 CPU 占用——如果还是 90%,说明硬解没生效,去看日志里的 ffmpeg 参数有没有 -hwaccel。

四、配套的自动化生态

不管你选哪个,真正让影视库「好用」的是外围工具:

工具作用
Sonarr / Radarr盯着剧集和电影,自动下载、重命名、整理进库
Prowlarr统一管理所有资源站的索引器
Bazarr自动下载匹配的字幕,中文片源的救命工具
Jellyseerr给家人开的「点播申请」页,审批后自动触发下载
qBittorrent下载器,可配限速和计划任务

这套组合常被叫做 *arr 全家桶。它和 Jellyfin / Plex / Emby 都兼容——Jellyseerr 三者都支持,所以你不会被锁死在某一个上。

命名规范是这套流程的基础。 目录结构建议:

电影/片名 (年份)/片名 (年份).mkv
剧集/剧名 (年份)/Season 01/剧名 - S01E01.mkv

不符合这个结构的文件,Sonarr 和 Radarr 会拒绝导入或者识别错。

五、按场景给结论

场景一:自己有 Intel 核显的小主机,纯粹自己看。 选 Jellyfin。零成本、硬解够用、不用把账号信息交给别人。花半天配好反向代理,之后的体验和付费产品没有区别。

场景二:一家人都要看,客厅是智能电视,家里有不折腾的人。 选 Plex。为电视端体验付 Plex Pass 是值得的,省下来的沟通成本远超订阅费。

场景三:重度使用,几万集库存,需要稳定的多路硬件转码。 选 Emby。它的硬解和转码调度最成熟,Premiere 的费用相比长期折腾成本不算什么。

场景四:群晖 ARM 机型或没有核显的老机器。 先别急着选软件。你只能直连播放,所以真正该做的是控制片源码率——把片子都转成 H.265 8bit + AAC 音频的组合,市面上主流客户端都能直连,不需要服务器转码。或者加一台 N100 小主机专门跑影视服务。

六、一个反直觉的建议

如果你现在还在犹豫选哪个,先去把片源和目录结构理顺。

我见过太多人在选软件上纠结两周,装好之后发现 80% 的片子因为音频是 DTS 而被强制转码、CPU 打满、播放卡顿,于是认为是软件不行——其实换个软件也一样,问题是文件本身。

真正该先做的三件事:确认你的设备能不能硬解、用 Bazarr 把字幕补齐、把 DTS 音轨批量转成 AAC。这三件做完,用哪个软件都会很顺。

文中提到的项目

可以直接部署的成品