本文主要记录「蓝光原盘」在工程上必须拆开的几类形态,以及 libbluray、Kodi / mpv、厂商盒子与媒体库产品各自停在哪一层。目标是建立边界心智模型,不是宣布某一客户端已经支持原盘菜单或加密商业碟。
中文语境里「UHD 原盘」经常把 remux 单文件 和 BDMV 目录 / ISO / 菜单机 混在一起。能解 4K HEVC 与能打开一张 ISO 并按 playlist 导航,是两件完全不同的事。
四类形态必须拆开
| 形态 | 是什么 | 典型依赖 | 媒体库产品常见路径 |
|---|---|---|---|
| ① UHD remux MKV | 单文件;HEVC + DV/HDR + 音轨 + PGS 等 | 普通 demux + 硬解 | 主线 |
② 单个 .m2ts | 从 BDMV 抽出的流 | 当 MPEG-TS 播 | 可当普通文件尝试 |
| ③ BDMV 目录 / 无加密 ISO | BDMV/PLAYLIST + STREAM + 索引;ISO 为 UDF | libbluray | 多数库产品 不做 |
| ④ 加密商业碟 + 完整菜单 | AACS/BD+、HDMV/BD-J | libbluray + 密钥栈 + 可能 JRE | 合规产品通常 不做 |
后续凡写「支持原盘」,应标明是 ①~④ 中的哪一类。
菜单再拆两档:
| 类型 | 含义 | Android 开源现实 |
|---|---|---|
| HDMV | 传统非 Java 菜单 | Kodi / 厂商可做一部分 |
| BD-J | Java 菜单 | 桌面勉强;Android 很少稳定承诺 |
libbluray 做什么、不做什么
| 项 | 事实 |
|---|---|
| 是否开源 | 是(VideoLAN) |
| 主体协议 | LGPL-2.1+(工程常见动态链接路径;非法律意见) |
| 定位 | Blu-ray 结构层:导航、playlist、读块、菜单事件 |
| DRM | 官方声明 不含 DRM 规避;加密碟另看 libaacs / libbdplus 等 |
做: 打开 BDMV /(支持 UDF 时)ISO、解析 index/playlist、按逻辑读出可 demux 的数据、HDMV 菜单事件、可选 BD-J(依赖重)。
不做: 视频/音频像素解码、默认解开 AACS 商业加密、替代完整播放器 UI 或媒体库模型。
libbluray(结构 / 读块 / 菜单)
↓
demux(FFmpeg 等)
↓
decode(MediaCodec / FFmpeg / 厂商)
↓
render + 可选 menu overlay
「能解 4K HEVC」≠「能播 BDMV/ISO」;缺的是结构层与产品入口。
市面方案怎么排
| 优先级 | 方案 | 典型使用者 | 备注 |
|---|---|---|---|
| 1 | 盘 → remux 单文件 → 客户端 DirectPlay | Jellyfin / Emby / Plex / 多数媒体库 App | 最主流 |
| 2 | 本机/USB BDMV 或 ISO + libbluray + 选 playlist | Kodi、部分盒子、mpv | 开源可复现 |
| 3 | 同上 + HDMV 菜单 | Kodi、部分厂商 | 仍非全碟完美 |
| 4 | 完整 BD-J | 桌面商业播放器、极少数盒子 | Android 开源缺席 |
| 5 | 内置 AACS 解密播商业原盘 | 灰色 / 厂商环境 | 合规产品一般不做 |
Kodi / mpv(对照)
- Kodi:
libbluray输入流 + FFmpeg demux + 平台硬解;设置上常见「显示菜单 / 猜最长主电影 / 文件浏览选 playlist」。Android 上完整 BD-J 长期缺通用 JRE。 - mpv:
bd:///bluray://,meson 可选 libbluray;偏 title/playlist 播放,菜单弱于 Kodi。不少 Android 构建会故意关掉 dvd/bluray,不等于 上游不能做。
媒体库客户端为何默认 remux
BDMV / ISO
→ 服务端或 PC 工具 remux(如 MakeMKV 一类)
→ 库内 MKV
→ 客户端 Exo / mpv DirectPlay
常见原因:
- 手机 / 平板无光驱;整盘随机读经 SMB/HTTP 很痛。
- 菜单对刮削、续播、多端进度价值低。
- 产品模型是 单文件 MediaFile + 会话,不是 disc title 树。
厂商盒子(Zidoo / Dune / 蒙太奇一类)在本机 USB / NAS 上的 ISO 体验往往更好,但属于闭源深度定制,不开放给第三方 App 复用 SDK。
产品边界怎么写才清楚
对自托管媒体库,对外表述建议固定成:
- 主线支持 remux / 普通容器单文件(含从碟抽出的
.m2ts当文件播的尝试)。 - 不支持 BDMV 目录树、ISO 镜像 disc 模型、HDMV/BD-J 菜单机(除非单独立项并交付 libbluray + UI)。
- 不支持 默认分发 AACS 密钥或商业加密碟一键播放。
- 若未来要做,优先档位通常是:无菜单、本机路径、选最长 playlist / 显式 mpls,而不是一上来做完整蓝光机。
候选档位(仅讨论,非承诺):
| 档位 | 范围 | 主要工作 |
|---|---|---|
| A | 文档与扫描拒绝 | 明确扩展名 / 目录识别,避免「扫进库却播不了」 |
| B | 本机 BDMV/ISO 无菜单 | runtime 带 libbluray + 选 title/playlist + 单文件会话映射 |
| C | + HDMV 菜单 overlay | UI 与事件环复杂度上升 |
| D | + 加密 / BD-J | 合规与依赖面显著扩大,默认不建议 |
相关阅读
参考与边界
- VideoLAN libbluray / libaacs 公开说明
- Kodi / mpv 参考实现中的 bluray 输入路径
- 厂商盒子能力来自公开体验与有限静态对照,不是完整反编译审计
- AACS / 密钥分发仅标注产品常见边界,不构成法律意见