Jellyfin 干的事一句话说清:你硬盘里存了一堆电影电视剧,它把这些文件变成一个能在线看的影视网站,手机、平板、电视、浏览器都能播,不要钱、不看广告、不上传任何第三方。
GitHub 58000 Star,GPL-2.0,v12.2。.NET 写的,Windows 便携版解压就能跑,自带 ffmpeg,内置 SQLite。
我在这台机器上从头搭了一遍:下 199MB 的包、走完 6 步向导、加媒体库、扫 4 部片、浏览器播放、手机端播放,全程跑通。冷启动 17.4 秒,第二次启动 10.5 秒。
Jellyfin 能干什么
一句话:把你硬盘里的电影电视剧,变成一个能在电视、手机、平板上点开就播的私人 Netflix。
按用途对号入座——
- 攒了一堆片子没处看:原来只能在电脑上双击播放,现在电视上直接选
- 全家共用:每人一个账号,各自的观看记录和进度分开
- 想在手机上看:地铁上接着看家里没看完的那半集,进度自动接上
- 不想交订阅费:不要会员、没有广告、片头不插播
- 想给孩子单独开一个号:家长控制能限制分级和可见的库
- 老电视 / 电视盒子:有安卓 TV、Kodi 插件、DLNA,旧设备也能用
它不带片源——播的全是你自己的文件。指望装完就有片看的,方向不对。
核心功能亮点
- 自动刮削元数据:文件名对的话,海报、简介、演员、评分自动抓下来,界面直接变好看
- 转码:原片码率太高手机播不动,它现场转码;有核显的话能硬解,CPU 压力小很多
- 多用户 + 家长控制:分级限制、库可见范围,一个号一套设置
- 进度同步:这台看到 23 分钟,换台设备接着 23 分钟
- 字幕支持:内嵌、外挂 srt/ass 都能读,也能在线搜字幕(要配插件)
- 直播电视 / 录制:接 IPTV 源或者电视卡,能当录像机用(要另配)
- 插件体系:字幕、刮削源、主题、通知都有插件
- 全平台客户端:安卓、iOS、安卓 TV、Kodi、DLNA、网页
下载:GitHub Release 里是空的
第一件反常识的事。我习惯性打开 github.com/jellyfin/jellyfin/releases,最新版 v12.2 页面里 assets 数量是 0。v12.1、v12.0 也一样。
官方现在只发 Docker 镜像,Windows 安装包和便携包放在自建的 repo.jellyfin.org 上,路径是 files/server/windows/stable/v12.2/amd64/。
目录里两个文件,jellyfin_12.2-amd64.zip(便携版,199MB)和 jellyfin_12.2_windows-x64.exe(安装版)。目录里也没有 checksum 文件,只能拿 Content-Length 对字节数。
我下便携版。这里踩了个大坑:直接 curl 会 302 到地区镜像,这次分到的是印度节点,单线程速度 96KB/s,199MB 得下半小时。
我试了一圈镜像:
sgp1.mirror.jellyfin.org:49KB/sblr1.mirror.jellyfin.org:开头 8MB 能跑到 4.8MB/s,然后就掉到 100 多 KB/s
最后用 8 线程 Range 分段并行,合计 700KB/s,8 分钟下完。合并后字节数 208,835,205,跟服务器 Content-Length 一模一样,这才放心。
启动:一条命令
jellyfin.exe --datadir ../data --configdir ../config --cachedir ../cache --logdir ../logs --webdir ./jellyfin-web --ffmpeg ./ffmpeg.exe参数都是显式指定的,好处是所有数据都落在你自己指定的目录,不写注册表、不写系统目录,卸载就是删文件夹。
--help 里没有端口参数,这点跟大部分服务不一样。默认 8096,要改只能去 config/network.xml 改 InternalHttpPort,或者进后台「控制台 → 网络」改,改完重启。
启动日志跑到 Startup complete 0:00:17.4331256 就好了,浏览器开 http://localhost:8096。
向导 6 步,第一步就能定品牌
第一次进来是设置向导。第一步是服务器名称 + 语言:
![图片[1] - Jellyfin 影音服务器 v12.2:硬盘里的电影变成家庭影院 - 源码湾 图片[1] - Jellyfin 影音服务器 v12.2:硬盘里的电影变成家庭影院 - 源码湾](/usr/uploads/articles/jellyfin-01.webp)
这个服务器名称就是浏览器标签页的标题(<title>),也是侧栏左上角显示的名字。填了「源码湾」,语言选「中文(中国)」。
第二步管理员账号:
![图片[2] - Jellyfin 影音服务器 v12.2:硬盘里的电影变成家庭影院 - 源码湾 图片[2] - Jellyfin 影音服务器 v12.2:硬盘里的电影变成家庭影院 - 源码湾](/usr/uploads/articles/jellyfin-02.webp)
密码至少 8 位。这里有个坑必须提前说:
管理员账号每个数据库只能创建成功一次。如果你在这一步退出去、或者提交时报错了,想重新走一遍向导 —— 提交会一直失败,弹「处理请求时发生错误。请稍后再试。」,页面就卡在这步。因为后端POST /Startup/User一旦检测到库里已经有用户,直接返回 403。唯一的解法是把config/和data/两个目录删干净重来。
我第一次走的时候没注意,配错了语言想重走,结果卡在这卡了十分钟。
第三步媒体库:
![图片[3] - Jellyfin 影音服务器 v12.2:硬盘里的电影变成家庭影院 - 源码湾 图片[3] - Jellyfin 影音服务器 v12.2:硬盘里的电影变成家庭影院 - 源码湾](/usr/uploads/articles/jellyfin-03.webp)
点这个加号卡片(注意它不是按钮,是个 div),弹出来这个对话框:
![图片[4] - Jellyfin 影音服务器 v12.2:硬盘里的电影变成家庭影院 - 源码湾 图片[4] - Jellyfin 影音服务器 v12.2:硬盘里的电影变成家庭影院 - 源码湾](/usr/uploads/articles/jellyfin-04.webp)
内容类型选「电影」,显示名称会自动填成「电影」。
然后点「文件夹」右边那个加号,选目录:
![图片[5] - Jellyfin 影音服务器 v12.2:硬盘里的电影变成家庭影院 - 源码湾 图片[5] - Jellyfin 影音服务器 v12.2:硬盘里的电影变成家庭影院 - 源码湾](/usr/uploads/articles/jellyfin-05.webp)
加完是这样:
![图片[6] - Jellyfin 影音服务器 v12.2:硬盘里的电影变成家庭影院 - 源码湾 图片[6] - Jellyfin 影音服务器 v12.2:硬盘里的电影变成家庭影院 - 源码湾](/usr/uploads/articles/jellyfin-06.webp)
第四步元数据语言:
![图片[7] - Jellyfin 影音服务器 v12.2:硬盘里的电影变成家庭影院 - 源码湾 图片[7] - Jellyfin 影音服务器 v12.2:硬盘里的电影变成家庭影院 - 源码湾](/usr/uploads/articles/jellyfin-07.webp)
国家/地区选 China。「语言」这个下拉里是 ISO 639-2 代码,中文对应的是 zho 不是 zh-CN,Playwright 用 zh-CN 选不中——我脚本在这里卡了一次,最后跳过了,反正默认 English 也不影响中文文件名识别。
第五步远程访问:
![图片[8] - Jellyfin 影音服务器 v12.2:硬盘里的电影变成家庭影院 - 源码湾 图片[8] - Jellyfin 影音服务器 v12.2:硬盘里的电影变成家庭影院 - 源码湾](/usr/uploads/articles/jellyfin-08.webp)
内网自用不用管,直接下一步。
第六步完成:
![图片[9] - Jellyfin 影音服务器 v12.2:硬盘里的电影变成家庭影院 - 源码湾 图片[9] - Jellyfin 影音服务器 v12.2:硬盘里的电影变成家庭影院 - 源码湾](/usr/uploads/articles/jellyfin-09.webp)
点「完成」,直接跳登录页。
品牌化:能改到什么程度
这是我这个站必须做的一步,说清楚边界。
登录页(已经换过图标、改过主色、加过登录声明):
![图片[10] - Jellyfin 影音服务器 v12.2:硬盘里的电影变成家庭影院 - 源码湾 图片[10] - Jellyfin 影音服务器 v12.2:硬盘里的电影变成家庭影院 - 源码湾](/usr/uploads/articles/jellyfin-10.webp)
能改的:
- 服务器名称 —— 页面标题、侧栏、控制台全跟着变。在「控制台 → 常规」:
![图片[11] - Jellyfin 影音服务器 v12.2:硬盘里的电影变成家庭影院 - 源码湾 图片[11] - Jellyfin 影音服务器 v12.2:硬盘里的电影变成家庭影院 - 源码湾](/usr/uploads/articles/jellyfin-16.webp)
- 登录页 Logo、favicon、touchicon —— 直接替换
jellyfin-web/目录下的三个文件。文件名带哈希(icon-transparent.baba78f2a106d9baee83.png这种),覆盖同名字文件就行,index.html里写死的。 - 登录声明 + 自定义 CSS + 启动画面 —— 在「控制台 → 个性化」:
![图片[12] - Jellyfin 影音服务器 v12.2:硬盘里的电影变成家庭影院 - 源码湾 图片[12] - Jellyfin 影音服务器 v12.2:硬盘里的电影变成家庭影院 - 源码湾](/usr/uploads/articles/jellyfin-17.webp)
这里能填登录页底部文案、能贴任意 CSS、能传一张 16:9 的启动图。我贴了这么几行,把主按钮从默认蓝改成品牌青绿:
emby-button.raised.button-submit,.raised.button-submit{background:#17B7B7!important;border-color:#17B7B7!important}
.raised.button-submit:hover{background:#2CC7C7!important}
a{color:#2CC7C7}实测按钮底色从 rgb(0,164,220) 变成 rgb(23,183,183),生效了。
改不了的: 软件名「Jellyfin」、版本号、帮助链接、向导第一页那句「欢迎来到 Jellyfin!」。这些都在二进制和前端 bundle 里。
顺便记一笔:我另外加了一条 img[src*="icon-transparent"]{height:96px!important} 想把登录页 Logo 放大,这条没生效,img 还是 28×28。原因没深究,其余规则都正常。
媒体库和播放
首页长这样:
![图片[13] - Jellyfin 影音服务器 v12.2:硬盘里的电影变成家庭影院 - 源码湾 图片[13] - Jellyfin 影音服务器 v12.2:硬盘里的电影变成家庭影院 - 源码湾](/usr/uploads/articles/jellyfin-11.webp)
上面「我的媒体」是库入口,下面是最近添加。点电影库进去:
![图片[14] - Jellyfin 影音服务器 v12.2:硬盘里的电影变成家庭影院 - 源码湾 图片[14] - Jellyfin 影音服务器 v12.2:硬盘里的电影变成家庭影院 - 源码湾](/usr/uploads/articles/jellyfin-12.webp)
右上角能切换排序、筛选、视图模式。点海报中心进详情:
![图片[15] - Jellyfin 影音服务器 v12.2:硬盘里的电影变成家庭影院 - 源码湾 图片[15] - Jellyfin 影音服务器 v12.2:硬盘里的电影变成家庭影院 - 源码湾](/usr/uploads/articles/jellyfin-13.webp)
视频 720p H264 SDR、音频 AAC Stereo,全从文件里读出来的。
这里又一个坑:点海报上的播放角标会直接跳到播放器(#/video),跳过详情页。要进详情必须点海报中间那块。
播放器:
![图片[16] - Jellyfin 影音服务器 v12.2:硬盘里的电影变成家庭影院 - 源码湾 图片[16] - Jellyfin 影音服务器 v12.2:硬盘里的电影变成家庭影院 - 源码湾](/usr/uploads/articles/jellyfin-14.webp)
进度条、暂停、快进 30 秒、音量、字幕、画中画、全屏,该有都有。这个 48 秒的测试片直接原码播放,没触发转码。
刮削这事得单说:默认刮削源是 TheMovieDb,国内基本连不上。我扫 4 部片花了将近 4 分钟,日志里每部片都报一次:
MovieMetadataService: Error in "TheMovieDb" for "...\沉默的编译器.mp4"不影响入库,但没海报没简介没评分。想有图,自己往文件夹里丢 poster.jpg(海报)和 fanart.jpg(背景图),或者挂代理。
还有个命名细节:我一开始命名成 沉默的编译器 (2025)/沉默的编译器 (2025).mp4,结果标题显示成「沉默的编译器 (2025)」,下面再跟一个年份,重复了。正确做法是文件名去掉年份,年份只留在文件夹名上。
后台
控制台首页:
![图片[17] - Jellyfin 影音服务器 v12.2:硬盘里的电影变成家庭影院 - 源码湾 图片[17] - Jellyfin 影音服务器 v12.2:硬盘里的电影变成家庭影院 - 源码湾](/usr/uploads/articles/jellyfin-15.webp)
服务器信息、媒体库条目数、在线设备、事件日志,一屏看完。左边栏是完整菜单:控制台、常规、个性化、用户、媒体库、播放、设备、事件、电视直播、插件、网络、API 密钥、备份、日志、计划任务。
媒体库管理:
![图片[18] - Jellyfin 影音服务器 v12.2:硬盘里的电影变成家庭影院 - 源码湾 图片[18] - Jellyfin 影音服务器 v12.2:硬盘里的电影变成家庭影院 - 源码湾](/usr/uploads/articles/jellyfin-18.webp)
用户管理:
![图片[19] - Jellyfin 影音服务器 v12.2:硬盘里的电影变成家庭影院 - 源码湾 图片[19] - Jellyfin 影音服务器 v12.2:硬盘里的电影变成家庭影院 - 源码湾](/usr/uploads/articles/jellyfin-19.webp)
这两页的「播放」下拉我没进——因为 #/dashboard/playback 这个路由不存在,打开是「未找到页面」。硬编码路由猜测在 Jellyfin 里不管用,得从侧栏点。
手机端
同一个地址,手机浏览器打开:
![图片[20] - Jellyfin 影音服务器 v12.2:硬盘里的电影变成家庭影院 - 源码湾 图片[20] - Jellyfin 影音服务器 v12.2:硬盘里的电影变成家庭影院 - 源码湾](/usr/uploads/articles/jellyfin-20.webp)
布局自动变单列,海报下面直接带播放按钮。列表页:
![图片[21] - Jellyfin 影音服务器 v12.2:硬盘里的电影变成家庭影院 - 源码湾 图片[21] - Jellyfin 影音服务器 v12.2:硬盘里的电影变成家庭影院 - 源码湾](/usr/uploads/articles/jellyfin-21.webp)
详情页:
![图片[22] - Jellyfin 影音服务器 v12.2:硬盘里的电影变成家庭影院 - 源码湾 图片[22] - Jellyfin 影音服务器 v12.2:硬盘里的电影变成家庭影院 - 源码湾](/usr/uploads/articles/jellyfin-22.webp)
播放器:
![图片[23] - Jellyfin 影音服务器 v12.2:硬盘里的电影变成家庭影院 - 源码湾 图片[23] - Jellyfin 影音服务器 v12.2:硬盘里的电影变成家庭影院 - 源码湾](/usr/uploads/articles/jellyfin-23.webp)
横屏全屏,控制栏是触摸唤出的。这套响应式做得不错,没出现横向溢出。
缺点
一、包太大。 解压后 341MB,其中 ffmpeg.exe 92MB、ffprobe.exe 92MB —— 光这俩就占了 184MB。因为是 .NET 10 自包含发布,运行时也全打进包里了。好处是不用装 .NET,坏处是硬盘小的设备(比如某些 ARM 小主机、老 NAS 的 U 盘系统)会心疼。
二、国内刮削基本是废的。 TheMovieDb 连不上,等于自动刮削海报、简介、演员表这一整套核心卖点在国内用不了。要么自己准备图,要么会配代理。这一点对新手杀伤力最大——他们以为装完就有 Netflix 那种漂亮的海报墙。
三、向导做一半退出来就废了。 上面说过,管理员账号一个库只能建一次,重走向导直接 403 卡死,必须删 config/ + data/ 重来。而这个报错文案是「处理请求时发生错误。请稍后再试。」,完全没提示你到底哪里错了。
四、品牌化有天花板。 服务器名称、Logo、favicon、登录声明、配色都能换,但「Jellyfin」这个名字、版本号、向导第一页的欢迎语全都改不掉。你想做成一个完全属于自己的品牌站,做不到。
五、冷启动 17 秒。 第一次启动要建库、迁移、初始化一堆东西。之后每次启动也在 10 秒左右。对比 Navidrome 那种 Go 单文件 1 秒起,差距明显。放 NAS 上常年不关机倒是无所谓,但如果你习惯用完就关,每次都要等。
实测环境
下载
包里是完整可跑的东西:程序本体 + 4 部示例影片 + 官方 12.2 源码包 + LICENSE + 预置好品牌配置的 config/branding.xml + 中文说明,双击 启动Jellyfin.bat 就能起:
上面记的这些坑,你自己走一遍也都会遇到。环境、依赖、配置、目录结构,一个都省不了。包里是我这边全部跑通之后才打的——要跳过这几步,直接拿下面这个。
网盘里是压缩包,202MB。建议先转存到你自己的网盘再下载——转存之后这份资源就永久在你空间里了,我这边以后更新版本(加插件、换示例片、补中文刮削方案)你能直接在转存列表里看到新文件,不用再回来找原链接。直连下载一旦链接失效就没了,转存不会。
示例影片是我自己做的 48 秒短片,带海报和背景图,作用是让你不用先折腾自己的电影文件就能看到完整界面和播放链路。看完记得换成你自己的片子。
两个小提醒:
- 建议先「转存到自己网盘」再下载——直接下载的链接容易失效,转存后就是你自己的了,随时能下;
- 手机上操作:点开链接 → 右下角「保存到网盘」→ 回夸克 App 的「我的网盘」里下载。
装之前先确认两件事:一个放媒体文件的目录(路径别有特殊符号,刮削认不出来)、机器别太老(转码吃 CPU,核显能硬解会舒服很多)。数据库内置 SQLite,不用准备。
免责声明:本项目基于 GPL-2.0 协议开源,本站仅作收集整理与技术实测分享,不提供任何商业授权。源码版权归原作者所有,包内已附完整源码与 LICENSE 文件。请勿将本系统用于任何违法违规用途,由此产生的一切后果由使用者自行承担。如有侵权,请联系 2273962061@qq.com 删除。