常见问题与故障排查
本文档基于 Javdex 源码中的错误码与运行环境检查逻辑,汇总了安装、内置播放、本地 AI 字幕、Docker 服务端部署与元数据刮削中最常见的问题与排查方案。
安装与启动问题
Section titled “安装与启动问题”1. Windows 启动安装包时弹出 SmartScreen “Windows 已保护你的电脑”
Section titled “1. Windows 启动安装包时弹出 SmartScreen “Windows 已保护你的电脑””- 原因:开源发行包暂未进行商业 Authenticode 代码签名。
- 解决方式:点击弹窗中的 “更多信息(More info)”,随后点击 “仍要运行(Run anyway)” 即可正常安装。请始终从官方 GitHub Releases 或本站下载中心获取安装包并核对
SHA256SUMS.txt。
2. macOS 提示“Javdex 已损坏,打不开”或“无法验证开发者”
Section titled “2. macOS 提示“Javdex 已损坏,打不开”或“无法验证开发者””- 原因:macOS DMG 采用 Ad-hoc 签名(
identity: '-')且未经过 Apple 公证,系统自动为下载文件附加了com.apple.quarantine隔离扩展属性。 - 解决方式:将
Javdex.app拖入/Applications后,打开终端(Terminal)运行:完成后即可正常双击打开。终端窗口 xattr -dr com.apple.quarantine /Applications/Javdex.app
3. 图形驱动故障导致主界面无法显示
Section titled “3. 图形驱动故障导致主界面无法显示”以下启动保护为当前源码新增功能,尚未包含在已发布的 0.9.1-beta.1 安装包中。
Windows、macOS 和 Linux 使用相同规则:首次显示主窗口前,若检测到明确的 GPU 进程启动故障,最多自动重启一次,暂时使用软件界面与 CPU 视频。恢复后的提示可继续使用、重新尝试 GPU 或查看启动日志。再次失败会停止自动重试并显示日志位置;普通初始化错误不会被当作显卡故障切换。
也可以完全退出应用后,在启动命令末尾添加 --javdex-software,手动使用兼容模式。它同时影响界面与视频;--javdex-cpu 仅强制视频使用 CPU。启动日志通常位于用户数据目录的 logs/startup.log,以错误提示中的实际路径为准。此模式不能修复缺失运行库或不受支持的系统版本。
内置播放与本地 AI 字幕问题
Section titled “内置播放与本地 AI 字幕问题”1. Linux 下点击内置播放提示“需要 X11 / XWayland 环境”
Section titled “1. Linux 下点击内置播放提示“需要 X11 / XWayland 环境””- 原因:Linux 平台的
libmpv原生渲染视口通过独立子进程playback-helper实现 X11 窗口嵌入(apps/desktop/src/main/player/playbackDisplay.ts)。在未开启 XWayland 的纯 Wayland 会话或未指定 X11 Ozone 平台时无法嵌入窗口。 - 解决方式:
- 确保当前桌面环境存在有效的
DISPLAY环境变量(X11 或 XWayland)。 - 完全退出 Javdex 后,通过命令行附带
--javdex-x11(或--ozone-platform=x11)重新启动:终端窗口 javdex --javdex-x11 - 若坚持使用纯原生 Wayland,可在播放报错卡片上直接点击 “改用外部播放器”(调用系统安装的 mpv 或 VLC)。
- 确保当前桌面环境存在有效的
2. 本地 AI 日中字幕在 macOS 或 Linux 上提示系统环境不支持
Section titled “2. 本地 AI 日中字幕在 macOS 或 Linux 上提示系统环境不支持”- 原因:
runtimeInstaller.ts在启动本地 AI 运行库前会检查宿主系统基线:- macOS:本地 AI 字幕与本地模型翻译要求 macOS 13.3+(Ventura,
Darwin >= 22.4)(普通内置视频播放仅需 macOS 12.0+)。 - Linux:要求
glibc >= 2.38、GCC 14 兼容的libstdc++6。
- macOS:本地 AI 字幕与本地模型翻译要求 macOS 13.3+(Ventura,
- 解决方式:
- Linux 用户可通过
ldd --version核对 glibc 版本,并检查 GCC C++ 运行库版本。工具从 Javdex Runtime 按需下载,不需要额外安装xz-utils。
- Linux 用户可通过
3. 开启 CUDA / Vulkan 加速后为什么实际回退到了 CPU 推理?
Section titled “3. 开启 CUDA / Vulkan 加速后为什么实际回退到了 CPU 推理?”GPU 运行库未安装、驱动不兼容、设备不可用或显存预算不足都可能触发 CPU 回退。“已检测到显卡”只代表枚举成功,应以所选模型下方的实际验证结果为准。
- 在“设置 → AI 服务 → 本地模型”安装对应的 GPU 加速支持,再点击“重新检测并验证”。Linux 的 CUDA 运行依赖随可选运行库下载,无需安装完整开发工具包;Vulkan 仍需要系统的加载器和厂商驱动。
- 查看该模型显示的回退原因。可以选择更小的模型或量化精度、关闭其他占用显存的程序后再试。
- 文本引擎可只将部分层放在 GPU;显存预算不足不一定意味着完全不能加速。语音和文本分别验证,不能将其中一个成功当作另一个已通过。
Docker 服务端部署与远程连接问题
Section titled “Docker 服务端部署与远程连接问题”1. 容器启动立即退出,报错 /data 必须位于本地文件系统
Section titled “1. 容器启动立即退出,报错 /data 必须位于本地文件系统”- 原因:
apps/server/src/filesystem.ts在启动时调用statfs校验/data挂载点。若检测到文件系统魔数为 NFS (0x6969)、CIFS (0xff534d42)、SMB (0x517b)、FUSE (0x65735546) 或 9P (0x1021997),程序会主动拒绝启动,防止网络文件锁缺陷损坏 SQLite WAL 数据库。 - 解决方式:将
/data与/program挂载在宿主机或 NAS 的本地物理磁盘存储池(ext4 / btrfs / ZFS / XFS)上;只有存放电影的/media/*目录才可以使用远程挂载。
2. 服务端添加媒体库报错无法写入 .javdex-root
Section titled “2. 服务端添加媒体库报错无法写入 .javdex-root”- 原因:容器内业务进程默认以
UID 1000/GID 1000运行,且每个媒体库根目录必须可写以创建.javdex-root身份标记文件。 - 解决方式:
- 检查
docker-compose.yml中媒体目录是否以:rw(读写)而非:ro挂载。 - 将
JAVDEX_SERVER_UID与JAVDEX_SERVER_GID环境变量设置为宿主机上拥有该媒体目录读写权限的实际 UID/GID。
- 检查
3. 桌面端连接远程服务端报错 JAVDEX_CERTIFICATE_MISMATCH(证书指纹不匹配)
Section titled “3. 桌面端连接远程服务端报错 JAVDEX_CERTIFICATE_MISMATCH(证书指纹不匹配)”- 原因:桌面端首次连接服务端时会通过 TOFU(Trust On First Use)机制将
/program/state/tls/中的自签名证书 SHA-256 指纹固定在本地server-certificates.bin中。如果服务端删除或重建了/program卷,新生成的证书指纹与本地记录不一致,客户端会自动阻断请求以防御中间人攻击。 - 解决方式:如果确认是你本人重建了服务端容器,在桌面端“设置 -> 存储 -> 资料库模式”中点击断开/忘记旧连接,重新签发一次性 Token 配对即可更新信任指纹。
4. 服务端所有接口返回 503 且状态显示 recoveryRequired
Section titled “4. 服务端所有接口返回 503 且状态显示 recoveryRequired”- 原因:服务端在升级进入
installing、verifying或activating阶段后发生异常中断。为保护可能已迁移至新 Schema 的/data/library.db,管理器锁定在维护态,拒绝自动降级回退。 - 解决方式:参见 服务端托管更新与维护恢复,核查容器日志与磁盘空间后,使用升级前备份还原或使用对应目标版本的 Docker 镜像完成恢复。
扫描与刮削问题
Section titled “扫描与刮削问题”1. 为什么文件夹里的部分视频扫描后没有出现在媒体库?
Section titled “1. 为什么文件夹里的部分视频扫描后没有出现在媒体库?”- 排查清单:
- 检查文件扩展名:确认属于支持的 12 种视频格式(
.mp4,.mkv,.avi,.wmv,.mov,.flv,.webm,.ts,.m4v,.rmvb,.mpg,.mpeg)或.strm文件($\le 64\text{ KiB}$)。 - 检查时长过滤门槛:默认跳过时长
< 30 分钟的本地视频(记为short-video)。若是短视频合集,可在该媒体库设置中调低“最小导入时长”。 - 检查目录名与文件名排除词:位于
sample、samples、trailers、extras、subtitles、extrafanart等目录,或文件名含trailer、sample、preview、宣传、预告的文件会被自动忽略。 - 查看“待办中心 (
/pending)”与“未识别文件”:若存在同番号多文件冲突或 NFO 番号不一致,文件会挂起在左侧“待办中心”;若文件名完全不含可识别的番号,可在媒体库扫描审计报告的unrecognized列表中查看并手动改名。
- 检查文件扩展名:确认属于支持的 12 种视频格式(
2. 插件刮削报错超时或被站点 Cloudflare 盾牌拦截
Section titled “2. 插件刮削报错超时或被站点 Cloudflare 盾牌拦截”- 解决方式:
- 前往 “设置 -> 网络”,配置可用的本地 HTTP/HTTPS 代理(如
http://127.0.0.1:7890)并点击“测试连接”。 - 若目标站点要求登录或触发了 Cloudflare 验证,在“设置 -> 刮削插件”中点击对应插件的预登录/辅助浏览器入口,在弹出的 Chromium 窗口中完成一次验证,会话会自动保存在本机
Partitions/scraper/分区中复用。 - 批量刮削大量影片时,建议保持默认的
3000ms ~ 5000ms随机延迟,或部署自建MetaTube服务端实现零延迟稳定刮削。
- 前往 “设置 -> 网络”,配置可用的本地 HTTP/HTTPS 代理(如