功能总览与能力矩阵
YiYi Media 的后台与用户侧一共 18 个模块。这一页做三件事:给出全部模块入口、用一张矩阵说清「哪些能力真的有、边界在哪」,再列一份明确不支持的能力清单。选型时请务必读完最后一节。
模块总览
按侧边栏分组排列。每个模块页写的是「能做什么 / 界面与操作 / 关键规则」,不重复架构内容 —— 架构请看系统架构,名词解释请看术语表。
概览与门户
媒体
资源服务
用户与运营
播放与观测
能力矩阵
一张表看完全部能力域。图例:
- ✅ 已实现,界面上可直接操作
- ⚠️ 部分实现、有前置条件,或后端有数据但界面未开放
「关键边界」一列写的是限制条件,不是宣传语。表里没列出的能力,请到下一节确认它是不是根本不存在。
| 能力项 | 支持情况 | 关键边界 | 对应模块页 |
|---|---|---|---|
| 存储接入 · 挂载源类型 | ✅ | 3 类:本地磁盘、Google Drive、115 网盘。挂载编码创建后不可改;WebDAV 与 S3 是对外提供访问的协议能力,不是接入类型 | 文件管理 |
| 存储接入 · Google Drive 账号池 | ✅ | 多账号分流与备用认证,账号级健康状态分 6 档,可手动健康检查 | 文件管理 |
| 存储接入 · 播放侧直链适配范围 | ⚠️ | 播放取直链、直链复用目前只对 Google Drive 与 115 两类网盘生效;本地磁盘直读,其余来源经存储节点代理字节流;未来会兼容更多网盘类型 | 加载与播放速度 |
| 存储接入 · CDN IP 优选 | ✅ | 用 DoH 解析 Google CDN 候选 IP 并测延迟,结合实时吞吐切换;由定时任务每 60 秒执行,对各播放节点无感 | 文件管理 |
| 存储接入 · 每源代理与目录缓存 | ✅ | 代理设置(类型/主机/端口)只作用于当前远程源;目录缓存过期时间可设「永久(仅手动刷新)」 | 文件管理 |
| 文件操作 · 浏览 | ✅ | 仅列表视图:桌面端表格 + 移动端卡片,分页 50/100/200,视图状态会记住 | 文件管理 |
| 文件操作 · 上传 | ✅ | 分片上传分 5 个阶段,可暂停/恢复/取消,支持断点续传与文件重选 | 文件管理 |
| 文件操作 · 复制 / 移动 / 重命名 / 删除 / 新建目录 | ✅ | 全部进存储任务队列,可批量;重命名支持正则与序号两种模式,执行前预览 | 文件管理 |
| 文件操作 · 全局跨挂载搜索 | ✅ | 挂载源原生搜索与持久目录索引聚合去重,关键词至少 2 字符,搜索策略分自动 / 缓存 / 原生三档,结果标注来源 | 文件管理 |
| 文件操作 · FUSE 挂载 | ✅ | 只读/读写、UID/GID(-1 表示跟随进程)、八进制权限(默认 0755)、自动挂载;编辑与删除前必须先卸载 | 文件运维与挂载 |
| 文件操作 · 离线下载 | ✅ | 从 HTTP(S) 拉流到受配额保护的暂存区,再经挂载源续传会话上传;签名参数不写入任务与日志 | 文件运维与挂载 |
| 文件操作 · 备份策略 | ✅ | 遍历与冲突策略、源文件消失处置、备份完成后动作、文件规则黑名单、按星期定时 | 文件运维与挂载 |
| 文件操作 · WebDAV 出口 | ✅ | 每个用户绑定一个挂载源与隔离根路径,签发访问 Token(Bearer 或 Basic 密码),密码只可重置不回显 | 文件运维与挂载 |
| 文件操作 · 并发与限速 | ✅ | 上传/下载/预处理三个独立线程池;上传与下载限速即时生效,单位支持 K/M/G/T,0 或留空为不限速 | 文件运维与挂载 |
| 文件操作 · 进程黑名单 | ✅ | 按进程名拦截访问挂载点(如 macOS 的 mds、quicklookd),保留拦截记录 | 文件运维与挂载 |
| 文件操作 · 写入即入库 | ✅ | 挂载点写动作完成后自动联动刮削与缓存清理,新建 / 删除 / 改名各有独立开关;同一挂载源同一条目的去重窗口是 30 秒,界面上的「上卷到剧目录去重」开关目前不生效 | 文件运维与挂载 |
| 刮削 · 分类刮削 | ✅ | 文件管理里在目标行点「加入任务」,目录可勾选「这是分类目录」做分类刮削。弹窗只有分类目录勾选、刮削方式(增量 / 覆盖)与 TMDB 匹配类型 三项,不能选刮削模式;首次刮分类目录必须选覆盖 | 刮削与元数据 |
| 刮削 · 任务观测 | ✅ | 任务中心「刮削任务」是一个任务一行(只有补全行按「挂载源 + 剧集目录」聚合),状态筛选 6 档、类型标签 7 种,支持停止全部、恢复全部、清理已结束与逐行停止 / 恢复 / 删除已结束;没有独立暂停、没有重试 | 刮削与元数据 |
| 刮削 · 参数调节 | ✅ | 入口在「管理挂载源 → 挂载配置 → 媒体库设置」:刮削模式、刮削线程数、刷新目录缓存、TMDB 刮削语言(6 种)、「使用 NFO 文件作为刮削输入」;目录扫描线程数、API 调用间隔、补全数量与两个 ffprobe 参数按挂载源类型与刮削模式条件显示 | 刮削与元数据 |
| 刮削 · 自动增量 | ✅ | 写动作完成自动联动刮削与缓存清理,新建 / 删除 / 改名各有独立开关加一个主开关;变更先记日志,再由定时任务每 15 秒重放入队 | 刮削与元数据 |
| 刮削 · 技术元数据补全 | ✅ | 由播放节点内嵌 ffprobe 在实际播放时异步补全容器格式、时长与音视频轨道,不阻塞播放,也不替代存储侧的 TMDB / NFO 刮削 | 刮削与元数据 |
| 媒体聚合 · 一库多源 | ✅ | 一个媒体库可同时挂多个节点、多个网盘;同一作品多份文件合并成一个聚合项;至少保留一个来源,清空须删整库 | 媒体管理 |
| 媒体聚合 · 三档同步 + 预览 | ✅ | 增量 / 全量 / 强制全量三档;Dry-run 先算清增删改并可逐条勾选保留含用户编辑的项。预览超时 10 分钟、同步超时 60 分钟 | 媒体管理 |
| 媒体聚合 · 数据体检 | ✅ | 孤儿资源比对清理、残留来源检测清理、媒体类型异常一键修复(触发一次全量同步) | 媒体管理 |
| 媒体聚合 · 虚拟媒体库 | ✅ | 两种类型:API 拉取与智能统计(大家在看 / 节点缓存);类型仅新建时可选 | 虚拟媒体库 |
| 媒体聚合 · 媒体整理 | ⚠️ | 可执行的整理动作只有「删除重复版本文件」(含演练模式);重复检查与缺集检查是只读分析 | 媒体整理 |
| 元数据 · 刮削 | ✅ | 刮削在存储节点侧执行,轻 / 直两种模式,刮削队列每 15 秒消费;媒体侧只做同步与聚合 | 文件管理 |
| 元数据 · TMDB 与 NFO | ✅ | TMDB 刮削语言 6 种(zh-CN / zh-TW / en-US / es-ES / ja-JP / ko-KR);「使用 NFO 文件作为刮削输入」是存储节点侧的设置项 | 媒体管理 |
| 元数据 · 三级人工覆盖 | ✅ | 作品 / 季 / 集三级作用域,覆盖值优先于刮削值;普通同步保留用户编辑,强制全量会清除 | 媒体管理 |
| 元数据 · 技术元数据探测 | ✅ | 播放节点内嵌 ffprobe 在播放时异步补全容器、时长与音视频轨道,不阻塞播放,不替代 TMDB/NFO 刮削 | 播放设置与缓存 |
| 播放 · Emby 协议出口 | ✅ | 现有 Emby 生态客户端填地址与账号即可用;门户「客户端配置」下发各播放入口地址与凭据,并可一键生成带凭据的导入链接 | Emby 协议兼容 |
| 播放 · 加载与播放速度 | ✅ | 海报按客户端宽度选档直连 TMDB CDN;经过服务器的图片落 500 MB/7 天磁盘缓存;媒体元数据默认缓存且永不过期、靠主动失效;智能启播三档空间预设(单文件上限 16/32/64 MB);签名直链复用与 CDN 候选 IP 优选 | 加载与播放速度 |
| 播放 · 直连播放 | ✅ | 不做转码与转封装;同一作品的多个版本以多 MediaSource 下发,由客户端择优;配额耗尽拒绝新请求、播放中每 30 秒复核字节账,耗尽即掐流 | Emby 协议兼容 |
| 播放 · 字幕与音轨 | ✅ | 文本字幕有列表与下发端点,正文原样输出(后缀只决定 Content-Type,不做 SRT↔VTT 转换);内嵌字幕与多音轨由客户端对同一路字节流自行切换 | Emby 协议兼容 |
| 播放 · 启播缓存 | ✅ | 两种缓存用途:启播加速(推荐)与传统预读;三档空间预设(节省空间 / 智能平衡 / 更稳启播),头部缓存目标按影片码率自适应;单个响应内可混合本地缓存段与上游有界直传 | 播放设置与缓存 |
| 播放 · 签名直链复用 | ✅ | 以「节点 + 挂载源 + 条目」为键缓存直链,只有 403/401 才强制刷新且最多重试一次,降低云盘风控概率 | 播放设置与缓存 |
| 播放 · 播放直链取链路径 | ⚠️ | 115 与 Google Drive 由播放节点直接取链;本地磁盘经存储节点的统一代理接口 | 播放设置与缓存 |
| 播放 · 播放入口选择 | ⚠️ | 没有节点间自动调度。用户端并发探测各入口的健康检查取首个可达,可手动切换;配额耗尽的入口不下发。单机版只有一个内置 Play Agent,节点清单随之收缩,但手动反代地址仍可多条并存 | 播放设置与缓存 |
| 权限 · 角色与菜单委派 | ⚠️ | 管理员之外靠委派的菜单权限;可委派 key 只有 8 个,留空表示只能进用户门户 | 用户管理与标签 |
| 权限 · 媒体来源访问控制 | ✅ | 粒度是「存储节点 + 挂载源」,公开 / 受限两档且查不到策略按受限处理(fail-closed);媒体侧软过滤 + 播放节点输出字节前硬拦截两道防线 | 访问管控 |
| 权限 · 客户端准入 | ✅ | 只有客户端 User-Agent 一个维度,白名单 / 黑名单加优先级(P1 最高),带一键导入链接模板 | 访问管控 |
| 权限 · 节点授权 | ✅ | 三种模式:全部节点 / 指定名单 / 全部禁止;管理员豁免 | 用户管理与标签 |
| 权限 · 流量与速率治理 | ✅ | 用户总额度 × 入口级额度(播放线路与手动线路分开计账)× 令牌桶带宽限速;额度耗尽返回 429 且只影响该入口 | 访问管控 |
| 运营 · 用户管理 | ✅ | 关键词 + 10 维组合筛选、22 条常用预设、9 个排序键、14 列显隐、13 项批量操作,筛选条件同步到 URL 可分享 | 用户管理与标签 |
| 运营 · 用户标签 | ✅ | 8 色固定色板,支持单个与批量打标(授予=追加、撤销=只移除所选),筛选支持任一/全部/无标签;标签只用于运营分层,不参与权限判定 | 用户管理与标签 |
| 运营 · 登录方式 | ✅ | 6 种:账号密码、Telegram Login Widget、Telegram 数字 ID + 验证码、Telegram Mini App 免密、Bot 一次性令牌、Google 账号 | 用户管理与标签 |
| 运营 · 注册码 | ✅ | 批量 1–100,有效期与账号时长可配,可预设标签并在核销时继承;核销路径 5 条 | 注册码与续费码 |
| 运营 · 续费码 | ✅ | 只延长已有账号有效期,时长粒度仅「天」,由用户在门户自助粘贴激活;不参与邀请树 | 注册码与续费码 |
| 运营 · 邀请体系 | ✅ | 名额只能由管理员发放,每生成 1 个邀请码消耗 1 个名额且未使用不退回;邀请树真实递归,链路禁用分向上 / 向下 / 整条链路三种并先出影响预估 | 邀请管理 |
| 运营 · 到期治理 | ✅ | 五级:提前提醒、宽限期、播放行为自动续期、续期码自助、一键给所有有到期时间的账号派发 N 天 | 注册码与续费码 |
| 运营 · 强制绑定策略 | ✅ | 认可方式:邮箱 / Telegram / Telegram 群(须仍在指定群内);可发起群成员检查并一键批量禁用退群用户 | 用户管理与标签 |
| 运营 · 签到与积分 | ✅ | 门户每日签到带算式验证码与月历,管理端可开关签到策略 | 用户门户 |
| 观测 · 仪表盘 | ✅ | 6 张指标卡按菜单权限渲染、一个自绘 SVG 播放趋势图(固定近 7 天)、最多 6 条待处理事项(两级告警色);单接口失败只降级对应卡片 | 仪表盘 |
| 观测 · 调度中心 | ✅ | 25 个内置任务全部可启停、改 cron、手动触发、指定实例、终止运行中的执行、失败重试;配 6 段 cron 可视化构建器、7 个模板与未来 5 次执行预览 | 调度中心 |
| 观测 · 任务日志 | ✅ | 统一的任务日志规范,写「做了多少」而不是「处理中」;单次执行详情最多展示 200 条日志,可终止与重试 | 调度中心 |
| 观测 · 存储任务中心 | ✅ | 12 类任务、16 态状态机、父子与依赖关系、批量暂停/恢复/重试/取消/删除、断点续传、115 秒传(0 字节命中)、Trace ID 贯通任务与双份日志 | 文件运维与挂载 |
| 观测 · 挂载与诊断 | ✅ | 挂载级缓存统计(目录/属性/读各自命中与未命中)、IO 统计、暂存区统计、活动打开句柄与持久暂存临时文件、FUSE 能力探测 | 文件运维与挂载 |
| 观测 · 播放报表 | ✅ | 六个概览卡带上一周期环比、三条趋势线、日期×小时双热力图、活跃与不活跃用户榜、热门内容、客户端分布、单用户下钻 | 播放报表 |
| 观测 · 报表导出与保留期 | ⚠️ | 导出只有前端生成 CSV(带 BOM);活动日志保留期可配,实际上下限与默认值由后端返回,每日清理任务按此截断 | 播放报表 |
| 集成 · 入站 Webhook | ✅ | 接收 NAS(群晖等)文件变更通知 → 匹配媒体库 → 分发刮削任务,命中多来源全部下发;replace_path 支持通配单个路径段 | 系统配置 |
| 集成 · 出站 Webhook | ✅ | 自定义方法/URL 模板/Header/Query/请求体、24 个数据变量(另有 urlencode. 通用转义前缀)、按媒体库订阅、敏感值掩码、一键测试、保留最近 50 条投递记录、失败持久化重试 | 系统配置 |
| 集成 · MCP 服务 | ✅ | 网关 /mcp,Streamable HTTP,一键开关(关闭返回 404、重开约 3 秒生效),工具权限与账号菜单权限一致 | 系统配置 |
| 集成 · 白标品牌 | ⚠️ | 可改系统名称(登录页/侧边栏/注册页/验证邮件/浏览器标签标题)与全局 Logo(上传或 URL,同步换 favicon),另有网页播放全局开关;经公开接口下发 | 系统配置 |
| 授权 · 两个 Edition | ✅ | 许可证带 edition 声明:STANDALONE(单机版)/ DISTRIBUTED(分布式版)。写在签名租约里,由服务端强制执行能力边界,部署形态与 Edition 严格一一匹配 | 授权与版本 |
| 授权 · 短期签名租约 | ✅ | 租约短期有效并定期续租,验签完全在本地离线完成,不依赖联网 | 授权与版本 |
| 授权 · 断网宽限期 | ✅ | 租约过期但仍在宽限期内时进入宽限状态,界面黄色横幅明示宽限截止,业务照常提供 | 授权与版本 |
| 授权 · 节点配额 | ✅ | 分布式版按 maxStorageNodes / maxPlayAgentNodes 限制外部节点数,新增前先刷新租约再向授权中心占用名额,删除时释放;手动反代地址不占配额。单机版这两个值固定为 1,只代表两个内置节点,不代表可新增节点 | 授权与版本 |
| 授权 · 受限模式 | ✅ | 不删数据库/上传文件/缓存/配置、不卸载卷、保留管理员登录与激活/状态查询/日志导出/备份;拒绝新播放会话、文件写入、调度任务与新节点注册 | 授权与版本 |
| 部署 · 单机版(三容器) | ✅ | 一台服务器跑 YiYi-media-standalone + YiYi-media-standalone-postgres + YiYi-media-standalone-redis 三个容器,八个服务收进应用容器。固定内置一个 Storage(node-local-storage)与一个 Play Agent(node-local-play-agent),随主应用安装、启动、升级。用户只能新增手动反代地址;新增外部节点返回 403 NODE_CREATION_DISABLED。发布 18080(Web 入口)与 19090(播放客户端直连) | 单机版部署(三容器) |
| 部署 · 分布式(控制面同机) | ✅ | 6 个控制面服务全在一台机器(v2-all-in-one 分支),工作节点在外部。数据库与缓存可用 YIYI_DB_MODE / YIYI_REDIS_MODE 独立换成外部实例,本机容器数 6~8 个。需要 edition=DISTRIBUTED | 分布式·控制面同机 |
| 部署 · 分布式(按角色多机) | ✅ | 按 control → user → media → edge 拆成四台(须同一私网,v3-multi-host 分支);control 装完生成 join.env 与 cluster-relay.crt 分发给其余机器,装完删除。私网内另需放行 5432/6379/18085/18089。需要 edition=DISTRIBUTED | 分布式·按角色多机 |
| 部署 · 外部节点横向扩展 | ✅ | 仅分布式版。Storage 与 Play Agent 是两条互相独立的扩容轴,不由部署包安装,可部署在任意数量、任意位置的服务器上,可多实例。加节点不需要改控制面任何配置——节点凭 YIYI_NODE_ID 向注册中心报到。同机多播放实例用 PLAY_AGENT_LISTEN 区分监听端口 | 部署模式与版本选择 |
| 部署 · 节点一键安装 | ✅ | 仅分布式版。前端生成一行 curl … /api/config/nodes/install/{token}/{kind} 管道给 bash,kind 有 6 种,可选 ?ffmpeg=true;脚本失败时直接报「哪一步、哪一行、退出码」。单机版对这些接口返回 403 BINARY_DISTRIBUTION_DISABLED | 分布式工作节点部署 |
| 部署 · 一键远程升级 | ✅ | 仅分布式版。自动识别目标是 Docker 还是二进制部署,升级前备份旧版本、30 秒健康检查轮询、失败自动回滚。单机版的内置节点随主应用整镜像升级 | 节点管理 |
| 部署 · 数据库与缓存 | ✅ | 单机版同一个 PostgreSQL 实例承载四个库(yiyi_config、yiyi_user、yiyi_media、yiyi_storage),无需预建。分布式方式支持 YIYI_DB_MODE / YIYI_REDIS_MODE 独立选择自带或用外部实例,可组成「外部数据库 + 自带 Redis」等任意组合 | 端口与网络 |
| 部署 · 默认权限边界 | ✅ | 单机版默认关闭主机 FUSE 挂载,聚合容器不使用 privileged、不授予 SYS_ADMIN;云盘管理、文件浏览、上传下载、媒体同步与刮削照常可用 | 单机版部署(三容器) |
明确不支持的能力
下面每一条都对照过代码。写在这里不是为了自曝其短 —— 是为了让你在选型和写需求文档时不用踩坑。如果某条与你从别处看到的说法冲突,以这里为准。
| 能力 | 常见误解 | 实际情况 | 相关页面 |
|---|---|---|---|
| 文件网格视图与缩略图 | 「文件管理像网盘一样有缩略图墙」 | 只有列表视图:桌面端表格 + 移动端卡片列表,没有网格视图、没有缩略图 | 文件管理 |
| 右键菜单 | 「右键能弹出操作菜单」 | 操作走工具栏按钮与行内操作列;名称单击进目录、双击行内重命名 | 文件管理 |
| 在线解压 | 「压缩包能在线解开」 | 没有解压能力 | 文件管理 |
| 图片 / 视频 / 文本在线预览 | 「行内那个预览按钮能看文件内容」 | 那个按钮打开的是媒体识别结果统计:总文件数、已识别数、将改名数与条目列表,不是内容播放器 | 文件管理 |
| 文件列表行内下载 | 「选中文件就能下载」 | 下载只在全局搜索结果里对单条结果可用(流式保存);文件列表行内没有下载按钮 | 文件管理 |
| 普通用户下载原文件 | 「原文件下载只有管理员能用」 | 由用户级下载权限决定;播放节点只在拿不到该权限字段时才回退为「仅管理员可下载」 | 用户管理与标签 |
| 动漫库 / 音乐库 / 照片库 | 「媒体库能按动漫、音乐、照片分类型」 | 媒体类型只有三档:不限、电影、剧集 | 媒体管理 |
| 条目排序与类型筛选 | 「条目列表能按年份、评分排序,按类型筛选」 | 条目列表只有关键词搜索 + 分页(24/48/60/96/120)+ 网格/列表双视图,没有排序控件,也没有类型筛选器 | 媒体管理 |
| 条目批量操作 | 「能勾选一批条目批量处理」 | 条目列表没有批量选择。批量能力在用户管理(13 项)与文件管理(重命名/移动/复制/删除)里 | 媒体管理 |
| 条目评分与后台演员表 | 「后台条目详情能看到评分和演员表」 | 条目数据结构里没有评分字段;演职员数据在后端库中存在,但后台 UI 未呈现(用户侧详情页有演职员展示) | 媒体管理 |
| 刮削模式 = 清晰度档位 | 「轻刮削 / 直刮削是画质或码率选项」 | 轻刮削与直刮削是刮削深度,不是播放画质。轻刮削靠文件名与目录结构快速匹配 TMDB 条目;直刮削做更深的文件探测。与播放时的清晰度、码率毫无关系 | 刮削与元数据 |
| 建库即扫盘 | 「新建媒体库会自动扫描磁盘并刮削」 | 中央媒体库不扫描磁盘,只聚合存储侧已经刮削好的结果。必须先在文件管理里分类刮削、再到媒体管理建库同步,顺序反了会得到一个空库 | 快速开始 |
| 媒体整理自动重命名 / 移动 / 建目录 | 「整理器能自动改名归位、建好目录结构」 | 媒体整理只做删除重复版本文件(含演练模式);另有重复检查、缺集检查两个只读分析。批量重命名、移动、新建目录属于文件管理,不是整理器 | 媒体整理 |
| RSS 库 | 「虚拟媒体库就是 RSS 订阅库」 | 实现是通用 HTTP API 源(GET/POST/PUT/PATCH + JSONPath 抽 TMDB ID + 认证方式 + 变量 Secrets),界面文案为「API 拉取」 | 虚拟媒体库 |
| 虚拟库引入站外内容 | 「接一个外部 API 就能把站外影片加进来」 | 虚拟库靠 TMDB ID 与中央媒体库求交集,只展示已存在的内容;它没有来源目录、没有同步预览、没有数据体检、没有条目管理 | 虚拟媒体库 |
| 多级返佣 / 邀请奖励 / 提成 | 「邀请树的层级就是返佣层级」 | 只有邀请名额发放 + 邀请树展示 + 链路禁用。计划文档明确写着「树展示不表示返佣层级或奖励层级」,全仓无返佣实现 | 邀请管理 |
| IP 黑白名单 | 「访问管控能封 IP」 | 客户端准入只有 User-Agent 一个维度(白名单/黑名单 + 优先级)。IP 只在实时会话与播放报表里展示,不参与准入判定 | 访问管控 |
| 设备指纹封禁 | 「能按设备指纹拉黑」 | 没有设备指纹维度。报表与会话里展示客户端名、设备名与远端地址,那是统计口径,不是封禁开关 | 访问管控 |
| 存储空间配额 | 「能限制每个用户占多少网盘空间」 | 配额只有三类:播放流量(用户级 + 入口级)、带宽限速、并发流数 | 访问管控 |
| 任意菜单可委派 | 「后台菜单都能委派给普通用户」 | 可委派 key 只有 8 个:node / storage / library / schedule / system / user / invitationManagement / cache。挂载、客户端准入、播放报表在权限判定里,但委派 UI 未开放 | 用户管理与标签 |
| 按单文件 / 单条目 / 季 / 集授权 | 「能只开放某一部片给某个用户」 | 来源访问控制的粒度是「存储节点 + 挂载源」,不按挂载源类型、不按库路径、不按单文件或单条目授权 | 访问管控 |
| Jellyfin 协议 / Plex 协议 | 「Emby、Jellyfin、Plex 三种协议都支持」 | 只有 Emby 协议已实现。系统配置里 Jellyfin 与 Plex 是标注「开发中」的禁用占位按钮,同时只启用一个协议 | 系统配置 |
| 服务端转码 / 转封装 / HLS 切片 | 「像其他媒体服务器那样能转码给弱客户端」 | 播放节点不做转码、不做转封装,以直连播放为主;自带 ffprobe 仅用于元数据探测。客户端能否播某个文件取决于它自身对该容器与编码的支持 | Emby 协议兼容 |
| 清晰度 / 码率档位切换 | 「Emby 客户端里能切 1080p / 720p」 | 没有码率档位可切:直连播放原样输出文件流,客户端的清晰度菜单不起作用。带宽限速是上限控制,不是档位切换 | Emby 协议兼容 |
| 跳过片头片尾 | 「能设置片头片尾跳过时间」 | 没有片头片尾标记数据,客户端的跳过设置不生效 | Emby 协议兼容 |
| 硬件指纹绑定 / 机器码锁 | 「授权绑 MAC 地址、容器 ID 或 CPU 序列号」 | 部署身份明确不使用 MAC、容器 ID、CPU 序列号;用的是部署 ID 加签名密钥对,允许受控迁移与重新绑定换机 | 授权与版本 | | 永久离线可用 | 「激活一次就能一直断网跑」 | 断网只在宽限期内可用,逾期进入受限模式。完全离线的已撤销部署最迟在「最后有效租约 24h + 宽限 72h」后停止授权功能 | 授权与版本 | | 用户数授权上限 | 「许可是按用户数卖的」 | 许可声明里没有用户数字段。被强制执行的配额只有 Storage 与 Play Agent 节点数 | 授权与版本 | | 功能模块开关授权 | 「某些功能要额外买授权解锁」 | 许可声明里的功能清单字段已定义并可解析,但没有消费点,不做功能开关 | 授权与版本 | | 二次验证 / 2FA / TOTP | 「管理员账号能开两步验证」 | 全仓没有 TOTP 实现 | 用户管理与标签 | | 可配置密码策略 / 会话时长 / 登录锁定阈值 | 「安全策略能在系统配置里调」 | 系统配置页没有这些项。登录失败锁定不可配置:同一 IP + 用户名连续失败 5 次锁定 60 秒,失败计数 120 秒后清零 | 系统配置 | | 主题色 / 登录页文案自定义 | 「白标能改主题色和登录页文案」 | 品牌能力是系统名称、全局 Logo(含 favicon 与标签页标题)与网页播放开关;系统配置页上没有主题色与登录页文案的输入项 | 系统配置 | | Emby 协议字段的可视化配置 | 「20 多个协议字段都能在页面上改」 | 页面上只有「服务名称」与「产品名称」两个输入项,其余协议字段没有可视化控件 | 系统配置 | | 手机号注册 / 独立昵称字段 | 「用户能绑手机号、能设昵称」 | 用户字段里没有手机号,也没有独立昵称字段;身份标识是用户名、邮箱、Telegram ID,另有仅管理员可见的内部备注 | 用户管理与标签 | | 29 个定时任务 | 「文档里写着 29 个定时任务」 | 实际注册 25 个。旧的任务清单已过时:宣称 29 个只列出 28 个,且缺 6 个现存任务 | 调度中心 | | 调度多实例轮询派发 | 「轮询路由策略已经在跑」 | 页面注明「当前一期以单实例派发为主,轮询、补偿和覆盖策略已先在配置层预留」 | 调度中心 | | 报表按节点统计 | 「报表能看每个播放节点的量」 | 报表维度是时间、用户、媒体、会话、客户端与设备平台,没有节点维度 | 播放报表 | | 报表地域分布 | 「日志里有客户端 IP 就能出地域分布图」 | 数据里存了客户端 IP,但没有做地域聚合,报表无地域维度 | 播放报表 | | 播放成功率 / 错误分布 | 「报表能看播放失败率」 | 活动日志里有播放结果与原因字段,但报表未使用,没有成功率与错误分布指标 | 播放报表 | | 导出 Excel | 「报表能导出 Excel」 | 只有前端生成的 CSV(带 BOM,文件名含时间范围与粒度),没有服务端导出端点 | 播放报表 | | 缓存命中率看板 | 「播放设置里能看到 VFS 缓存命中率」 | 播放节点侧确有命中与未命中计数,但页面未展示命中率。(文件运维的挂载级缓存统计另有目录/属性/读的命中与未命中指标,那是存储挂载缓存,不是播放缓存) | 播放设置与缓存 | | 缓存管理里的码率与缓冲配置 | 「播放设置能配默认码率、缓冲秒数、转码开关」 | 播放设置的可配置项里没有这些 | 播放设置与缓存 | | 按负载 / 延迟自动选择播放节点 | 「系统会挑负载最低的节点放」 | 没有节点间自动调度。用户端是并发探测各入口的健康检查取首个可达;「CDN 优选」是节点内对上游云盘 CDN IP 的优选,不是选节点 | 播放设置与缓存 | | 节点批量启停 / 批量删除 | 「节点列表能多选批量操作」 | 节点管理只有「检查全部更新」与「刷新列表」两个批量动作,没有多选批量启停或删除 | 节点管理 | | 缺集处理状态入库 | 「标记已处理会记在服务器上」 | 缺集检查的「标记已处理/未处理」只存浏览器本地,不落库 | 媒体整理 | | 撤权后立刻掐断正在传输的响应 | 「取消授权后当前播放会立刻断」 | 撤权保存后会清理媒体侧与各播放节点的权限缓存,新建播放信息、视频、下载与后续 Range 请求立即拒绝;但已开始传输的同一条 HTTP 响应不强制中断(第一期语义) | 访问管控 | | 先创建管理员再激活授权 | 「初始化第一步是建管理员」 | 顺序相反:先授权激活 → 再创建首个管理员。前端只在许可状态正常或处于宽限期时才渲染初始化向导 | 初始化与授权激活 | | 单机版要自己部署 Storage / Play Agent | 「单机版也要在节点管理里创建节点、复制安装命令」 | 单机版固定内置一个 Storage 与一个 Play Agent,随主应用安装、启动、升级,不需要也不允许部署外部节点。「节点管理」只能新增手动反代地址 | 单机版部署(三容器) | | 单机版可以新增任意数量节点 | 「授权写着 1,但页面能加到更多」 | 单机版的「节点管理」没有「新增节点」入口,POST /api/config/nodes 直接返回 403 NODE_CREATION_DISABLED,配额在管理台不可覆盖。maxStorageNodes=1 只代表那个内置节点 | 授权与版本 | | 单机与分布式只改 .env 就能互转 | 「改一下角色变量就从单机变分布式」 | 不允许只改 .env、Compose profile 或角色变量切换。必须走授权的专用版本升级操作并完成拓扑迁移;分布式版也不支持自动降级为单机版 | 单机版迁移到分布式版 | | 单机默认运行多个应用容器 | 「单机版就是把原来那几个容器放一台机器」 | 单机版标准拓扑固定为三个容器(YiYi-media-standalone + -postgres + -redis),八个服务在应用容器内以独立进程运行。docker compose ps 出现其它业务容器说明用错了部署分支 | 单机版部署(三容器) | | 单机版端口要公开 18084 | 「节点端口按老文档开放」 | 单机版发布 18080 与 19090(播放直连,可收窄为回环配合反代);18084 等其余端口仅容器内部。PostgreSQL 与 Redis 走 Compose 私有网络 | 端口与网络 | | 授权只描述节点数量、不描述 Edition | 「许可证就是一张节点数配额表」 | 许可证带 edition(STANDALONE / DISTRIBUTED),是服务端强制执行的能力边界;历史许可证没有该声明时按 DISTRIBUTED 兼容 | 授权与版本 | | 部署包里有 storage / play-agent 的 compose | 「分布式部署会把节点也一起装上」 | 分布式部署包的 compose.yaml 只有控制面角色 profile,没有工作节点。节点统一在网页「节点管理」里创建,用页面给出的一键安装命令部署 | 分布式工作节点部署 | | play-agent 不能容器化 | 「Play Agent 只有二进制一种跑法」 | 节点管理的 Docker 模式会在节点机上用下载来的二进制本地构建运行镜像(可选把 ffmpeg/ffprobe 一并装进镜像),再以 host 网络运行 | 分布式工作节点部署 |
下一步
先选部署模式,再动手装
单机版部署只要一台服务器、三个容器,Storage 与 Play Agent 已内置,装完确认它们在线即可;需要控制面拆分与外部工作节点横向扩展时走分布式版。两种模式不能只改配置互转。