HIGHLIGHT_DEPLOYMENT.md
4.3 KB
WebScreen 高光录制部署文档
1. 部署范围
当前仅部署到新验证服务器,只启用 xdyui2。
不要直接替换现有正式录制服务器。CrazyTalk 等 xdyui2 验证通过后再添加。
2. 环境要求
- Node.js 与现有 WebScreen 生产版本一致。
-
web_capture_c可执行文件及依赖完整。 - PCLive 回放地址能从服务器访问。
- 服务器时钟已通过 NTP 同步。
- OSS AccessKey 环境变量已配置,供文件状态查询使用。
- 原本地文件搬运至 OSS 的定时任务已部署。
WebScreen 只监听端口 3001。
3. 安装
cd /root/webScreen
npm install
npm test
确认录制程序可执行:
test -x /root/web_capture_release/linux-x64/web_capture_c
4. 配置
保留服务器原 GETCLASSURLPARAMETER、PROJECTWINCATALOG、PROJECTCATALOG 和 BACKMEDIACONFIG,增加:
"HIGHLIGHTCONFIG": {
"enabled": true,
"sourceMode": "site",
"siteIds": ["xdyui2"],
"apiBaseUrl": "https://saas.xuedianyun.com",
"pageSize": 100,
"taskPageSize": 100,
"maxPages": 1000,
"maxConcurrent": 2,
"maxDurationMs": 21600000,
"apiTimeoutMs": 10000,
"apiRetryCount": 2,
"apiRetryBaseDelayMs": 500,
"loadGraceMs": 60000,
"endGraceMs": 10000,
"taskRetentionMs": 86400000,
"outputNamespace": "",
"outputBaseUrl": "https://xdymp4.xuedianyun.com"
}
验证 JSON:
node -e "JSON.parse(require('fs').readFileSync('config/config.json')); console.log('config ok')"
5. 启动
npm run pm2
pm2 show webScreen
curl http://127.0.0.1:3001/highlight/status
预期:
{"code":0,"message":"success","data":{"queued":0,"recording":0,"knownTasks":0}}
6. 首次手工验证
先查询某节已知课堂,不启动录制:
curl -X POST http://127.0.0.1:3001/highlight/preview/by-class \
-H 'Content-Type: application/json' \
-d '{"classId":"课堂号"}'
检查响应中的:
-
siteId必须是xdyui2。 -
playbackUrl包含recBeginTime和recEndTime。 - 文件名包含
_highlight_高光ID.mp4。 -
duration等于endTime-beginTime。
再手工触发单课堂:
curl -X POST http://127.0.0.1:3001/highlight/recording/by-class \
-H 'Content-Type: application/json' \
-d '{"classId":"课堂号"}'
观察:
tail -f log/$(date +%Y%m%d).txt
find /root/web_capture_release/media/xdyui2 -type f
一个课堂有 N 条高光时,应出现 N 个不同文件。
7. 验证多文件查询
curl -X POST http://127.0.0.1:3001/highlight/fileExists \
-H 'Content-Type: application/json' \
-d '{"siteId":"xdyui2","classId":"课堂号"}'
本地文件等待搬运时,状态应为 uploading;OSS 可见后应为 generated 并返回 URL。
8. 验证 cron 全量模式
先手工执行原 cron 入口:
wget -qO- http://127.0.0.1:3001/recording
响应 data.mode 应为 site,时间窗应为 Asia/Shanghai 前一天。
确认无误后配置:
57 7 * * * wget -qO- http://127.0.0.1:3001/recording >/dev/null 2>&1
9. 切换任务模式
xdyui2 全量验证完成后,可改为:
"sourceMode": "task"
任务模式只处理:
status = 0
onlyHighlight = 1
siteId = xdyui2
当前没有任务状态回写接口。重复 cron 依靠队列、本地文件和 OSS 文件跳过,代码中保留 TODO。后端接口确定后再补领取和结果回写。
10. OSS 搬运验证
高光录制完成后,本地目录应包含:
{classId}_highlight_{highlightId}.mp4
download.json
等待现有搬运任务执行,再检查:
https://xdymp4.xuedianyun.com/oss/xdyui2/{yyyyMMdd}/{classId}_highlight_{highlightId}.mp4
确认搬运程序不会只匹配旧 {classId}.mp4 文件名。
11. 回滚
最快业务回滚:
"HIGHLIGHTCONFIG": {
"enabled": false
}
然后:
pm2 restart webScreen
关闭后,GET /recording 继续运行原整课录制逻辑。高光使用独立文件名,不覆盖旧整课 MP4。
12. 上线 CrazyTalk 前检查
- 获取 CrazyTalk 准确、区分大小写的
siteId。 - xdyui2 连续验证多天,无重复、缺段和错误路径。
- 确认 OSS 搬运支持高光文件名。
- 确认任务状态回写方案。
- 将 CrazyTalk 加入
HIGHLIGHTCONFIG.siteIds,不要改旧GETCLASSURLPARAMETER.siteId。