文档中心/安装与初始化
VISTO USER GUIDE / 08
安装视频处理运行时
用户手册2026-09-30Server 浏览器工作台
视频预览、媒体探测和部分衍生产物需要 FFmpeg 与 ffprobe。原生 Server 安装包不包含它们;运行时由主机维护者单独安装。Owner 网页可以显示运行状态,但不会下载、提权或安装主机程序。
安装前确认
- 原生 Server 已经安装并可运行
visto-server。 - 当前机器是 Apple Silicon macOS;本章运行时不能用于 Intel、Windows 或 Linux。
- 使用官方公开仓库中固定的公钥。不要使用下载归档里附带的公钥来证明同一个归档可信。
- 官方仓库未公开时,公钥下载可能返回 404。已获授权的维护者可以使用随审核材料取得的同一固定公钥文件;普通用户应等待可用的公开安装入口。
在线安装
以下运行时版本依据当前安装说明固定为 ffmpeg-8.1.2-macos-lgpl.2。以后以对应发布说明为准,不自行猜测“最新版”地址。
mkdir -p "$HOME/Downloads/visto-runtime"
RUNTIME_VERSION='ffmpeg-8.1.2-macos-lgpl.2'
RUNTIME_BASE="https://visto-server-updates.pages.dev/media-runtime/$RUNTIME_VERSION"
curl -fL "$RUNTIME_BASE/media-runtime-manifest.json" \
-o "$HOME/Downloads/visto-runtime/media-runtime-manifest.json"
curl -fL "$RUNTIME_BASE/media-runtime-manifest.json.sig" \
-o "$HOME/Downloads/visto-runtime/media-runtime-manifest.json.sig"
curl -fL 'https://raw.githubusercontent.com/huangdiyou/Visto/main/keys/media-runtime-root-public-key.txt' \
-o "$HOME/Downloads/visto-runtime/media-runtime-root-public-key.txt"
上面三个下载都成功后再运行:
sudo /Library/Visto/current/bin/visto-server --json media-runtime install \
--media-runtime managed \
--manifest "$HOME/Downloads/visto-runtime/media-runtime-manifest.json" \
--signature "$HOME/Downloads/visto-runtime/media-runtime-manifest.json.sig" \
--public-key "$(cat "$HOME/Downloads/visto-runtime/media-runtime-root-public-key.txt")" \
--non-interactive --confirm-download
管理器会验证签名、下载清单指定的归档,并验证内容和媒体能力。签名、哈希或能力检查失败时,停止并保留报错;不要绕过检查切换运行时。
重启与验证
sudo launchctl kickstart -k system/com.visto.server
curl -fsS http://127.0.0.1:8787/health/ready
检查结果包含 "ffmpeg":true 和 "ffprobe":true。再进入演示项目上传一个短视频,确认能生成预览并播放。两项为 true 说明程序被检测到,实际视频播放还要用媒体验证。
失败时怎么处理
| 现象 | 先检查 | 下一步 |
|---|---|---|
| 公钥下载 404 | 官方仓库是否对你可访问 | 不换用包内公钥;等待公开或使用授权取得的固定公钥 |
| 清单 / 签名下载失败 | 网络、版本路径、文件是否完整 | 重新下载同一版本的清单和签名 |
| 验签失败 | 公钥、清单、签名是否相互匹配 | 保留文件和错误,联系维护者,停止安装 |
| 重启后检测仍为 false | 安装结果和服务日志 | 查看系统诊断,确认运行时配置与权限 |
| 能检测但视频处理失败 | 单个文件、格式、磁盘和任务错误 | 先用小测试文件确认,再定位实际素材问题 |
运行时清单有签名;免费 Server 的版本更新提示清单不签名。这是两条不同的分发流程。