概述
Noktus 是一个非官方的跨平台桌面客户端,用于 Jellyfin,它将 官方 Jellyfin Web 界面与可选的原生 MPV 播放相结合。
Noktus 并非用另一个前端替换 Jellyfin,而是专注于提供 精致的桌面体验,同时尽可能贴近官方 Jellyfin 界面。媒体库、身份验证、设置和播放行为继续由 Jellyfin 驱动,使新的服务器功能和 UI 改进能够自然地 流动,而无需维护一个独立的前端。
设计目标
Noktus 刻意保持轻量级。
Noktus 不重新实现 Jellyfin 或从头构建一个完整的媒体播放器, 而是专注于围绕官方 Jellyfin 体验提供一个可靠的桌面运行时。
该项目旨在:
- 保持与上游 Jellyfin 的紧密一致。
- 最小化平台特定行为。
- 保持长期维护的可管理性。
- 在能提升体验的地方提供原生桌面集成。
- 在 MPV 能提供更好播放体验的地方使用 MPV。
Noktus 的工作原理
Noktus 直接加载官方 Jellyfin Web 界面。
对于大多数内容,播放工作与在浏览器中使用标准 Jellyfin web 播放器时完全相同。媒体库、账户、队列、身份验证和播放 均由 Jellyfin 拥有。
对于受益于原生播放的视频,Noktus 可以改为启动一个外部 MPV 窗口,同时保持与 Jellyfin 的播放同步。进度、暂停状态、恢复位置以及其他播放事件会继续报告回服务器。
在 Windows 上,mpv.net 也可以作为 MPV 的直接替代品使用。Noktus 会自动检测 MPV,然后是 mpv.net,或者可以在设置中手动选择任一可执行文件。
原生 MPV 集成
当使用 MPV 时,Noktus 添加了面向桌面的功能,同时保持与 Jellyfin 的完全集成。
- 原生跳过片头和跳过片尾提示。
- 播放报告。
- 恢复位置同步。
- 自动检测 MPV。
- Windows 上可选的 mpv.net 支持。
- 来自现有 MPV 配置的命名 MPV 视频配置文件。
- 按系列设置的音频和字幕偏好。
跳过片头和跳过片尾提示由 Jellyfin 的经过身份验证的 MediaSegments API 提供支持,使其兼容使用 Intro Skipper 和其他受支持片段提供者的服务器,无需额外配置。
视频配置文件可以在设置中选择。Noktus 可以从常规 MPV 中发现配置文件,或者在使用 mpv.net 时手动输入配置文件名称。
当你在剧集播放期间更改音频或字幕轨道时,Noktus 会自动 记住该选择并应用于整个系列,并在 MPV 中确认。Noktus 在后续剧集 中匹配语言和轨道类型,而不是假设每个文件使用相同的流 编号。使用 Playback → Forget automatically saved tracks for this series 返回 到 Jellyfin 的正常选择。这些偏好设置仅保留在本地 Noktus 中,不会更改 你 Jellyfin 服务器上的系列设置。
Playback
MPV 是完全可选的。
内置的 Jellyfin 播放器仍然可用于诸如 Live TV、音乐、 活动录制、SyncPlay 或任何标准网页播放器是更好 选择的内容。
用户可以自由选择最适合内容的播放方式。
Platform
Noktus 使用捆绑的 Chromium 运行时以在 Windows、 macOS 和 Linux 上提供一致的行为。这使桌面体验可预测,同时避免 系统 webview 之间的平台特定差异。
LLM Disclosure
代码库的核心由我编写。我使用本地 LLM 作为开发辅助,用于 诸如调试、文档和语法审查、研究我生疏的主题,以及生成测试套件的部分内容(因为,说实话,没有人 喜欢写测试)。
所有架构、设计决策、实现以及最终代码审查均由我完成。 任何由 LLM 生成的建议都经过审查,在必要时进行了修改, 并在纳入项目之前进行了验证。