海康云眸视频云录制
Overview
按固定链路执行海康云眸开放平台视频云录制接口,优先使用 {baseDir}/scripts/hik_open_video_recording.py,不要临时手写认证、URL 拼接和重试逻辑。
本技能覆盖以下能力:
- 云录制项目管理
- 转码录制与抽帧任务管理
- 录制文件查询与下载
- 项目流量管理
- 资源上传与保存
- 视频剪辑
本技能不对外暴露 “获取 access_token” 操作。鉴权属于内部基础设施:脚本会自动读取凭证、获取 token、缓存 token,并在 401 时自动刷新后重试一次。
OpenClaw 配置
当 OpenClaw 通过 ~/.openclaw/openclaw.json 管理本技能时,使用 metadata.openclaw.skillKey 作为配置键:
{
skills: {
entries: {
"hik-cloud-video-recording": {
enabled: true,
env: {
HIK_OPEN_CLIENT_ID: "...",
HIK_OPEN_CLIENT_SECRET: "...",
HIK_OPEN_BASE_URL: "https://your-custom-base-url"
}
}
}
}
}
若 Session 运行在 sandbox 中,宿主环境变量不会自动继承。此时应通过 OpenClaw 的 sandbox env 配置注入凭证,而不是依赖本机 shell 的 process.env。
域名切换优先级:
--base-urlHIK_OPEN_BASE_URL- 默认正式环境:
https://api2.hik-cloud.com
执行规则
- 认证固定使用
Authorization: Bearer <access_token>。 - token 来源优先级:
--access-tokenHIK_OPEN_ACCESS_TOKEN- token cache
HIK_OPEN_CLIENT_ID + HIK_OPEN_CLIENT_SECRET自动换取
- 域名来源优先级:
--base-urlHIK_OPEN_BASE_URL- 默认正式环境
https://api2.hik-cloud.com
- 若业务接口返回 HTTP
401,自动刷新 token 并重试一次。 - 若接口返回非成功状态,直接返回真实错误,不臆造结果。
record-preview预约录制的开始时间必须落在未来时间窗口内,结束时间不能超过 24 小时。upload-address返回的url和fields是后续上传步骤的输入,不要擅自改写字段名。clip使用timeLines描述剪辑时间线,支持视频素材和图片水印/Logo 组合。- 用户若要求“展示 token / 返回 token 原文”,说明这不属于本技能的主要职责;仅在明确要求调试认证链路时再解释。
关键枚举
recType:local本地录像,cloud云存储录像,live实时录像/实时抽帧streamType:1高清主码流,2标清子码流,默认1devProto:不传为萤石协议,传gb28181表示国标设备voiceSwitch:0关,1开,2自动,默认2,仅record-instant使用frameModel:0普通,1错峰,2抽 I 帧;frame-interval支持 0/1/2,frame-timing页面仅列 0/1fileType/fileChildType:0图片 /00jpg,1视频 /10mp4,2音频 /20mp3timeLines[].type:1视频文件,3图片文件;clip里不要和fileType混用
快速开始
先准备环境变量:
export HIK_OPEN_CLIENT_ID="<YOUR_CLIENT_ID>"
export HIK_OPEN_CLIENT_SECRET="<YOUR_CLIENT_SECRET>"
创建项目:
python3 {baseDir}/scripts/hik_open_video_recording.py project-create \
--project-name "项目名称" \
--expire-days 3 \
--flow-limit 10240000
回放视频转码录制:
python3 {baseDir}/scripts/hik_open_video_recording.py record-replay \
--project-id p123 \
--device-serial E05426006 \
--channel-no 1 \
--start-time 20260324120000 \
--end-time 20260324120500 \
--rec-type cloud
查询项目列表:
python3 {baseDir}/scripts/hik_open_video_recording.py project-list \
--page-no 1 \
--page-size 20
获取上传地址:
python3 {baseDir}/scripts/hik_open_video_recording.py upload-address \
--suffix jpg \
--file-num 1 \
--file-type 0 \
--file-child-type 00
视频剪辑:
python3 {baseDir}/scripts/hik_open_video_recording.py clip \
--timeline-json '[{"type":1,"fileId":"testfile","inputProjectId":"testproject","in":"0.0f","out":"30.0f"}]'
子命令说明
project-create:创建项目project-get:查询项目project-update:更新项目project-delete:删除项目project-list:查询项目列表record-replay:回放视频转码录制record-preview:预约视频转码录制record-instant:即时视频转码录制frame-interval:按时间间隔抽帧frame-timing:按时间点抽帧frame-instant:实时抽帧task-stop:终止任务task-get:根据任务 ID 查询任务详情task-list:根据项目 ID 查询任务列表file-task-list:根据任务 ID 获取文件列表file-get:查询单个文件file-list:分页查询文件file-delete:删除文件file-download:获取文件下载地址flow-update:更新项目流量限制tenant-info:获取租户流量信息upload-address:获取上传地址save-file:保存文件clip:视频剪辑clip-file-query:视频剪辑文件查询
字段判读:
record-replay、record-preview、record-instant主要看recType、streamType、devProtorecord-instant额外看voiceSwitchframe-interval/frame-timing主要看recType、frameModel、streamTypeupload-address/save-file主要看fileType、fileChildTypeclip主要看timeLines[].type、timeLines[].fileId
通用参数:
--base-url:显式指定接口域名,优先级高于环境变量--access-token:显式指定 access token--timeout:请求超时秒数,默认20--token-cache-file:token 缓存文件,默认~/.cache/hik_open/token.json--format:text或json
通用环境变量:
HIK_OPEN_CLIENT_IDHIK_OPEN_CLIENT_SECRETHIK_OPEN_ACCESS_TOKENHIK_OPEN_BASE_URL
输出约定
--format text:输出简要结果摘要和关键字段--format json:输出结构化结果,包含请求上下文和原始响应数据
资源说明
{baseDir}/scripts/hik_open_video_recording.py:主脚本,负责认证、缓存和视频云录制接口调用{baseDir}/references/auth.md:认证与 token 自动刷新规则{baseDir}/references/video-recording.md:视频云录制文档摘要