褐马智能边缘计算云-Edge 对接文档
共 192 项能力。每项包含用途、调用前需满足、请求字段、返回示例、判定条件与注意事项。
没有匹配的内容,可试试中文说明或接口名(如「识别」「检测」「转写」)。
文档更新日期:2026-09-30 | 排障与设备维护
0. 接入准备
接入要素
KEY(鉴权)与 BASE(入口)
KEY="<管理端密钥>"
BASE="https://desk.xiaohetx.cn/api/edge"
任务下发
提交一条任务,取得 taskId,再轮询取结果。设备选择在服务端完成。
是否传 device_id | 创建返回 | 行为 |
| 不传(默认) | 202 pending | 平台约 10s 内派发到空闲节点 |
| 传 | 201 dispatched | 立即下发到指定节点 |
仅在需要固定某一台机器对比结果时才传 device_id。指定了离线节点会返回 409 DEVICE_OFFLINE,去掉该字段即可。
请求头辅助变量 H
H=(-H "X-Admin-Key: $KEY" -H "Content-Type: application/json")
通用函数
封装「下发任务」和「轮询结果」,复制到终端即可反复调用;后文各能力的请求示例都基于它们。
post_task 创建并下发一条任务。第 4 个参数为 device_id,留空即由平台派发。
post_task() { # post_task <类型> <payload-json> <幂等键> [device_id 可省略] [超时秒]
local type="$1" payload="$2" ikey="$3" dev="$4" tout="${5:-120}"
local body="{\"type\":\"$type\",\"payload\":$payload,\"timeout_sec\":$tout,\"idempotency_key\":\"$ikey\""
[ -n "$dev" ] && body="$body,\"device_id\":\"$dev\"" # 传了才指定, 不传就自动派发
curl -s -X POST "${H[@]}" -d "$body}" "$BASE/admin/tasks/"
}
poll_task 按 taskId 轮询状态,直到成功/失败等终态并打印任务全文。
poll_task() { # poll_task <taskId>:打印状态直到终态并输出任务全文
local tid="$1"
for i in $(seq 1 45); do
R=$(curl -s "${H[@]}" "$BASE/admin/tasks/$tid/")
echo "[$i] $(echo "$R" | grep -o '"status":"[a-z]*"' | head -1)"
echo "$R" | grep -q '"status":"pending"\|"status":"dispatched"\|"status":"running"' || { echo "$R"; return 0; }
sleep 2
done
echo POLL_TIMEOUT; return 1
}
两种 args 传参约定
- 平铺风格:
system / vision / image / gpu / video / speech / rknn / rag / batch —— 按形参顺序直接平铺,例:"args":["a.png",640,480]
- 双层数组(asArgs):
crypto / imagehw / videohw —— 函数只收一个数组参数,args 必须再包一层,例:"args":[["a.png",90]]
- 写错约定的表现:HTTP 层正常、任务
status=success,但 result.error 提示 requires args
通用约定
- 外层包络固定
{"type","payload","timeout_sec?","idempotency_key?"};device_id 可有可无,默认不传
- 不传
device_id → 202 pending,平台自动派发(约 10s);传了 → 201 dispatched 立即下发到指定机器
idempotency_key 用 自家前缀-uuid,重放返回同一任务,详见 §3.2
script 类 payload 固定 {"module","func","args"}
- 长耗时能力(转码、模型同步、批量)务必调大
timeout_sec,否则会被后端按预算扫尾为 failed
1. 术语表
正文与参数表中出现的缩写与专有名词,在此统一解释一次。
| 术语 | 含义 |
| NPU | 神经网络处理器。片上专用 AI 加速单元,模型在其上运行,不占用通用 CPU |
| RKNN | 瑞芯微 NPU 的模型文件格式(.rknn) |
| TFLite | TensorFlow Lite 模型格式(.tflite),在 GPU 上运行 |
| INT8 / FP16 | 模型量化精度。INT8 体积小速度快,FP16 精度更高;同一模型两种精度可分别注册 |
| NMS | 非极大值抑制。检测出重叠框后只保留置信度最高的那个 |
| IoU | 交并比。两个框重叠程度的度量,NMS 依据它判断是否重复 |
| letterbox | 等比缩放并补灰边,使图片不变形地填满模型输入尺寸。返回的 result.letterbox 含换算参数 |
| arm64-v8a | 64 位 ARM 架构。语音识别仅在该架构的设备上可用 |
| HMAC | 基于哈希的消息认证码,用于校验模型清单完整性 |
| current 指针 | 记录当前生效模型版本的标记文件,由 sync_models 写入、rknn.* 读取 |
| 幂等键 | idempotency_key。用同一个键重复提交只会产生一条任务 |
| 签名 URL | 带有效期与签名的私有对象下载地址,由端侧凭据自动生成 |
| 终态 | 任务进入 success / failed / timeout / cancelled 后不再变化,详见 §3.1 |
| 429 | 超出固定窗口的调用次数上限,详见 §3.3 |
| Keystore | 片上硬件密钥库。密钥在其中生成与使用,私钥不以明文形式离开芯片 |
2. 能力速查表
共 192 项(1–53 为基础对接能力;54–192 为 2026-10 增补的全量能力,含音频/容器/编辑/图像/文件/供应商/推理/OCR/安全/流)。机器可读版本:GET admin/capabilities/。
能力下线或替换时,会先在本表标注并保留至少 6 个月过渡期,再移除。
| # | 能力 | 说明 |
| 1 | vision.image_labeling | 图像打标 |
| 2 | vision.face_detection | 人脸检测 |
| 3 | vision.translate_text | 离线文本翻译 |
| 4 | vision.barcode_scan | 条码扫描 |
| 5 | vision.identify_language | 语种识别 |
| 6 | system.ocr | 离线图片文字识别 |
| 7 | image.resize | 缩放图片 |
| 8 | image.compress | 压缩图片 |
| 9 | image.crop | 裁剪图片 |
| 10 | image.rotate | 旋转图片 |
| 11 | image.flip | 翻转图片 |
| 12 | image.format_convert | 转换图片格式 |
| 13 | image.thumbnail | 生成缩略图 |
| 14 | imagehw.batch_resize | 批量缩放图片 |
| 15 | imagehw.rotate | 硬件旋转图片 |
| 16 | imagehw.convert_format | 硬件转换格式 |
| 17 | imagehw.watermark | 添加水印 |
| 18 | imagehw.thumbnail | 硬件缩略图 |
| 19 | imagehw.jpeg_encode | 硬件 JPEG 编码 |
| 20 | gpu.blur | 高斯模糊 |
| 21 | gpu.grayscale | 转灰度 |
| 22 | gpu.sharpen | 锐化 |
| 23 | gpu.tflite_gpu | GPU 运行 TFLite 模型 |
| 24 | video.extract_thumbnail | 提取视频封面 |
| 25 | video.extract_frames | 批量抽帧 |
| 26 | video.get_metadata | 读取视频信息 |
| 27 | videohw.extract_frames | 硬件批量抽帧 |
| 28 | videohw.transcode | 硬件视频转码 |
| 29 | videohw.get_metadata | 硬件读取视频信息 |
| 30 | speech.transcribe | 实时麦克风转文字 |
| 31 | speech.transcribe_file | 音频文件转文字 |
| 32 | speech.status | 语音模块自检 |
| 33 | speech.release | 释放语音模型 |
| 34 | rknn.infer | RKNN 模型推理 |
| 35 | rknn.load_model | 加载 RKNN 模型 |
| 36 | rknn.release | 释放 NPU 模型 |
| 37 | system.sync_models | 同步 AI 模型 |
| 38 | crypto.gen_keys | 生成密钥对 |
| 39 | crypto.aes_encrypt | AES-GCM 加密 |
| 40 | crypto.aes_decrypt | AES-GCM 解密 |
| 41 | crypto.rsa_sign | RSA 签名 |
| 42 | crypto.rsa_verify | RSA 验签 |
| 43 | rag.ingest | 文档入库 |
| 44 | rag.search | 语义检索 |
| 45 | rag.answer | 基于知识库问答 |
| 46 | batch.process | 通用批量子集处理 |
| 47 | batch.ocr | 批量图片识别文字 |
| 48 | batch.image_batch | 批量图片处理 |
| 49 | batch.hash_batch | 批量文件哈希 |
| 50 | file.upload | 端上文件上传七牛 |
| 51 | file.download | 下载七牛文件到端上 |
| 52 | rknn.detect | YOLO 目标检测(数据级) |
| 53 | rknn.infer fullOutput 模式 | 取回完整原始张量 |
| 54 | audiohw.probe_audio | 音频编码能力探测 |
| 55 | audiohw.get_metadata | 读取音频信息 |
| 56 | audiohw.extract_audio | 提取音频 |
| 57 | audiohw.transcode | 音频转码 |
| 58 | audiohw.denoise | 音频降噪 |
| 59 | audiohw.remove_audio | 剥离音轨 |
| 60 | audiohw.replace_audio | 替换音轨 |
| 61 | audiohw.mix_audio | 混音 |
| 62 | audiohw.set_volume | 调音量 |
| 63 | remuxhw.avinfo | 媒体探针 |
| 64 | remuxhw.remux | 容器重封装 |
| 65 | remuxhw.segment | 无损切片 |
| 66 | remuxhw.transcode | 视频转码 |
| 67 | remuxhw.private_encrypt | 私有加密 |
| 68 | remuxhw.private_decrypt | 私有解密 |
| 69 | remuxhw.list_encoders | 编码器清单 |
| 70 | videoedithw.watermark | 视频水印 |
| 71 | videoedithw.concat_video | 视频拼接 |
| 72 | videoedithw.concat_audio | 音频拼接 |
| 73 | videoedithw.add_subtitle | 字幕处理 |
| 74 | videoedithw.mix_audio | 视频混音 |
| 75 | videoedithw.replace_audio | 视频换音轨 |
| 76 | videoedithw.mosaic | 马赛克 |
| 77 | videoedithw.remove_streams | 轨道过滤 |
| 78 | videoedithw.list_capabilities | 编辑能力探测 |
| 79 | imageproc.animate | 生成动图 |
| 80 | imageproc.avif_compress | AVIF 压缩 |
| 81 | imageproc.blind_watermark | 盲水印嵌入 |
| 82 | imageproc.blind_watermark_extract | 盲水印提取 |
| 83 | imageproc.capabilities | 图像能力探测 |
| 84 | imageproc.exif | 读取 EXIF |
| 85 | imageproc.heif_compress | HEIF 压缩 |
| 86 | imageproc.image_ave | 平均色调 |
| 87 | imageproc.image_density | 读写 DPI |
| 88 | imageproc.image_exif_retain | EXIF 保留/剥离 |
| 89 | imageproc.image_info | 图片信息 |
| 90 | imageproc.image_mogr2 | 图片规范化 |
| 91 | imageproc.image_mogr2_ext | 图片规范化扩展 |
| 92 | imageproc.image_slim | 图片瘦身 |
| 93 | imageproc.jpeg_progressive | 渐进 JPEG |
| 94 | imageproc.png_adam7 | 隔行 PNG |
| 95 | imageproc.round_pic | 圆角图片 |
| 96 | imageproc.stitch | 全景拼接 |
| 97 | imageproc.style_apply | 应用样式 |
| 98 | imageproc.style_delete | 删除样式 |
| 99 | imageproc.style_get | 读取样式 |
| 100 | imageproc.style_list | 样式列表 |
| 101 | imageproc.style_save | 保存样式 |
| 102 | imageproc.super_resolution | 图片超分 |
| 103 | imageproc.watermark | 图片水印 |
| 104 | filehw.capabilities | 文件能力探测 |
| 105 | filehw.concat | 文件拼接 |
| 106 | filehw.md2html | Markdown 转 HTML |
| 107 | filehw.html2md | HTML 转 Markdown |
| 108 | filehw.mkzip | 打包 ZIP |
| 109 | filehw.probe | 文件探测 |
| 110 | filehw.probe_all | 批量文件探测 |
| 111 | filehw.qhash | 文件哈希 |
| 112 | filehw.qhash_all | 全量文件哈希 |
| 113 | filehw.qrcode | 生成二维码 |
| 114 | spritehw.sprite | 视频雪碧图 |
| 115 | spritehw.vsample_sprite | 视频采样雪碧图 |
| 116 | spritehw.sprite_info | 雪碧图规划 |
| 117 | spritehw.capabilities | 雪碧图能力探测 |
| 118 | provider.capabilities | 供应商能力 |
| 119 | provider.local_validate | 本地证件校验 |
| 120 | provider.verify_identity | 身份核验 |
| 121 | provider.audit_probe | 审核探针 |
| 122 | provider.audit_list | 审核厂商列表 |
| 123 | provider.audit_submit | 提交审核 |
| 124 | provider.audit_query | 查询审核 |
| 125 | provider.audit_callback | 审核回调 |
| 126 | provider.audit_log | 审核日志 |
| 127 | provider.configure_provider | 配置供应商 |
| 128 | provider.clear_idempotency | 清理幂等缓存 |
| 129 | ortdora.probe | ORT 探针 |
| 130 | ortdora.moderate_image | 图片审核 |
| 131 | ortdora.detect_faces | 人脸检测 |
| 132 | ortdora.embed_faces | 人脸向量 |
| 133 | ortdora.compare_faces | 人脸 1:1 比对 |
| 134 | ortdora.search_faces | 人脸 1:N 检索 |
| 135 | ortdora.portrait_matte | 人像抠图 |
| 136 | ortdora.super_resolve | 图片超分 |
| 137 | ortdora.release_models | 释放 ORT 模型 |
| 138 | ocr.audio_moderation | 文本风控 |
| 139 | ocr.comment_filter | 评论过滤 |
| 140 | ocr.long_speech | 长语音转写 |
| 141 | ocr.plan_segments | 切分规划 |
| 142 | ocr.probe | OCR/ASR 探针 |
| 143 | ocr.recognize | 图片文字识别 |
| 144 | ocr.recognize_document | 票据识别 |
| 145 | ocr.release_asr | 释放 ASR |
| 146 | ocr.short_speech | 短语音转写 |
| 147 | ocr.text_filter | 文本过滤 |
| 148 | ocr.validate | 规则校验 |
| 149 | safety.aggregate_frames | 多帧聚合判定 |
| 150 | safety.anti_replay | 翻拍检测 |
| 151 | safety.capabilities | 安全能力探测 |
| 152 | safety.detect_ad | 广告检测 |
| 153 | safety.face_cluster | 人脸聚类 |
| 154 | safety.face_compare | 人脸向量比对 |
| 155 | safety.face_quality | 人脸质量 |
| 156 | safety.face_search | 向量检索 |
| 157 | safety.image_moderate | 图片审核 |
| 158 | safety.image_quality | 图像质量 |
| 159 | safety.liveness | 活体检测 |
| 160 | safety.refine_matte | 抠图精修 |
| 161 | safety.scan_ad_text | 广告文本扫描 |
| 162 | safety.temporal_self_test | 时序自检 |
| 163 | safety.video_moderate | 视频审核 |
| 164 | safety.video_moderate_local | 视频本地审核 |
| 165 | safety.video_sampling | 视频采样 |
| 166 | safety.vision_pipeline | 视觉管线 |
| 167 | hlshw.adapt | 自适应码率 |
| 168 | hlshw.authorize_all | 私有授权 |
| 169 | hlshw.capabilities | HLS 能力探测 |
| 170 | hlshw.color_enhance | 色彩增强 |
| 171 | hlshw.encrypt | HLS 加密 |
| 172 | hlshw.hdr_to_sdr | HDR 转 SDR |
| 173 | hlshw.live_audio_transcode | 音频直播转码 |
| 174 | hlshw.live_playlist | 直播播放列表 |
| 175 | hlshw.live_remux | 直播重封装 |
| 176 | hlshw.live_transcode | 直播转码 |
| 177 | hlshw.play_stream | 拉流 |
| 178 | hlshw.private_m3u8 | 私有播放列表 |
| 179 | hlshw.probe_stream | 流探测 |
| 180 | hlshw.push_stream | RTMP 推流 |
| 181 | hlshw.sdr_to_hdr | SDR 转 HDR |
| 182 | hlshw.slice | HLS 切片 |
| 183 | hlshw.stop_live | 停止直播 |
| 184 | hlshw.super_resolve | 视频超分 |
| 185 | hlshw.super_resolve_face | 人脸超分 |
| 186 | hlshw.aifast | AI 快剪 |
| 187 | math.add | 加法 |
| 188 | math.sub | 减法 |
| 189 | math.mul | 乘法 |
| 190 | math.div | 除法 |
| 191 | system.reload | 重启应用 |
| 192 | system.download_file | 下载文件 |
A 组:视觉识别(1–6)
对图片做识别与判断。全部在本地完成,不上传原图。
1. vision.image_labeling — 图像打标
用途 识别图中物体类别并给出置信度,返回标签列表。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"vision","func":"image_labeling","args":["ocr_test.png",0.5]}' "acme-label-001"
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 图片路径 |
| payload.args[1] | number | 否 | 0.3 | 置信度阈值 |
返回示例
{"labels":[{"label":"text","confidence":0.98},{"label":"document","confidence":0.71}]}
判定 status=success 且 result.labels 为数组
注意
args 为平铺风格,直接写 ["路径", 0.5],不要多包一层
2. vision.face_detection — 人脸检测
用途 检测图中人脸位置与关键点,返回每张脸的边界框。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"vision","func":"face_detection","args":["人脸图.png"]}' "acme-face-001"
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 图片路径 |
| payload.args[1] | object | 否 | — | 检测选项,形如 {"minFaceSize":0.1} |
返回示例
{"faces":[{"box":{"x":120,"y":80,"width":200,"height":200},"count":1}]}
判定 status=success 且 result.faces 为数组
注意
3. vision.translate_text — 离线文本翻译
用途 端侧离线翻译,把一段文本译到目标语种。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"vision","func":"translate_text","args":["hello","zh","en"]}' "acme-tr-001"
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 待翻译文本 |
| payload.args[1] | string | 是 | — | 目标语种,如 zh |
| payload.args[2] | string | 否 | 自动识别 | 源语种;留空则自动识别 |
返回示例
{"text":"你好","sourceLang":"en","targetLang":"zh"}
判定 status=success 且 result.text 非空
注意
- 完全离线,走端侧模型,不产生外部 API 调用与费用
4. vision.barcode_scan — 条码扫描
用途 扫描图片中的条形码与二维码,返回解码后的内容。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"vision","func":"barcode_scan","args":["条码图.png"]}' "acme-bar-001"
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 图片路径 |
返回示例
{"barcodes":[{"format":"QR_CODE","value":"https://desk.xiaohetx.cn"}]}
判定 status=success 且 result.barcodes 为数组
注意
- 支持 QR_CODE / CODE_128 / EAN_13 等常见格式
5. vision.identify_language — 语种识别
用途 判断一段文本属于哪种语言,返回语种代码与置信度。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"vision","func":"identify_language","args":["hello world"]}' "acme-lang-001"
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 待判定的文本 |
返回示例
{"language":"en","confidence":0.99}
判定 status=success 且 result.language 非空
注意
6. system.ocr — 离线图片文字识别
用途 ML Kit 端侧文字识别(完全离线,不联网)。除返回识别文本外,还会把结果写成同名 .ocr.txt,可用文件回传能力取回做比对。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"system","func":"ocr","args":["ocr_test.png","Latin"]}' "acme-ocr-001" 120
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 图片路径 |
| payload.args[1] | string | 否 | Latin | 识别语种脚本;中文用 Chinese |
返回示例
{"text":"…","blockCount":3,"lineCount":7,"charCount":42,"scriptUsed":"Latin","textFilePath":"…/ocr_test.png.ocr.txt"}
判定 status=success 且 result.text 非空
注意
- 输出文件名规则:
a.png → a.png.ocr.txt
- 识别在本地完成,不产生任何外部 API 调用与费用
B 组:图片处理(7–13)
图片的缩放、裁剪、旋转、格式转换等基础操作,走通用图形库。
7. image.resize — 缩放图片
用途 按目标宽高缩放图片,等比适配不裁切,输出上限受 MAX_DIMENSION 保护。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"image","func":"resize","args":["ocr_test.png",640,480]}' "acme-rs-001"
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 图片路径 |
| payload.args[1] | number | 是 | — | 目标宽,<=0 表示按高自适应 |
| payload.args[2] | number | 是 | — | 目标高,<=0 表示按宽自适应 |
| payload.args[3] | string | 否 | — | contain|cover|stretch,底层恒为 contain 语义 |
返回示例
{"uri":"file:///…/resized.jpg","path":"resized.jpg","width":640,"height":480,"format":"jpeg"}
判定 status=success 且 result.width/height 为正数
注意
- 宽高不能同时 <=0,否则报
resize requires width or height > 0
8. image.compress — 压缩图片
用途 按指定质量与格式重新编码图片,用于压体积上传。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"image","func":"compress","args":["ocr_test.png",0.6,"jpeg"]}' "acme-cp-001"
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 图片路径 |
| payload.args[1] | number | 否 | 0.8 | 质量 0.05–1 |
| payload.args[2] | string | 否 | jpeg | jpeg|png|webp |
返回示例
{"uri":"file:///…/compressed.jpg","width":1280,"height":960,"format":"jpeg"}
判定 status=success 且 result.uri 非空
注意
- 质量越低压得越狠,<0.3 时文字类图片可读性明显下降
9. image.crop — 裁剪图片
用途 以左上角为原点裁出一个矩形区域。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"image","func":"crop","args":["ocr_test.png",0,0,800,600]}' "acme-cr-001"
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 图片路径 |
| payload.args[1] | number | 是 | — | 原点 X |
| payload.args[2] | number | 是 | — | 原点 Y |
| payload.args[3] | number | 是 | — | 裁剪宽 |
| payload.args[4] | number | 是 | — | 裁剪高 |
返回示例
{"uri":"file:///…/cropped.jpg","width":800,"height":600,"format":"jpeg"}
判定 status=success 且宽高等于请求值
注意
- 超出原图范围会报错,裁剪前建议先
image.resize 归一化
10. image.rotate — 旋转图片
用途 按角度顺时针旋转图片。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"image","func":"rotate","args":["ocr_test.png",90]}' "acme-rt-001"
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 图片路径 |
| payload.args[1] | number | 是 | — | 角度,自动对 360 取模 |
返回示例
{"uri":"file:///…/rotated.jpg","width":960,"height":1280,"format":"jpeg"}
判定 status=success,宽高随角度互换
注意
11. image.flip — 翻转图片
用途 水平或垂直镜像翻转。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"image","func":"flip","args":["ocr_test.png","horizontal"]}' "acme-fp-001"
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 图片路径 |
| payload.args[1] | string | 是 | — | horizontal 或 vertical,非 horizontal 一律按 vertical 处理 |
返回示例
{"uri":"file:///…/flipped.jpg","width":1280,"height":960,"format":"jpeg"}
判定 status=success
注意
- 参数拼错不会报错而是静默按 vertical 处理,务必核对
12. image.format_convert — 转换图片格式
用途 把图片重新编码为 JPEG / PNG / WEBP。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"image","func":"format_convert","args":["ocr_test.png","webp"]}' "acme-fc-001"
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 图片路径 |
| payload.args[1] | string | 是 | — | 目标格式 jpeg|png|webp |
返回示例
{"uri":"file:///…/converted.webp","format":"webp"}
判定 status=success 且 result.format 等于请求格式
注意
13. image.thumbnail — 生成缩略图
用途 等比缩小到最长边等于指定值(默认 200),原图已小于目标时直接原样输出。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"image","func":"thumbnail","args":["ocr_test.png",256]}' "acme-th-001"
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 图片路径 |
| payload.args[1] | number | 否 | 200 | 最长边目标像素 |
返回示例
{"uri":"file:///…/thumb.jpg","width":256,"height":192,"format":"jpeg"}
判定 status=success 且最长边 == 请求值
注意
- E 组
imagehw.thumbnail(#18)为硬件实现,批量场景优先用它
C 组:硬件图片处理(14–19)
与上一组同样的图像操作,改走片上硬件通路。批量处理或对性能敏感时优先用这一组。
14. imagehw.batch_resize — 批量缩放图片
用途 用硬件 2D/JPEG 流水线批量缩放并重压一整个目录下的图片。 本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
payload.args 必须是双层数组,见 §0「两种 args 传参约定」
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"imagehw","func":"batch_resize","args":[["/data/in","/data/out",640,480,85]]}' "acme-br-001" 300
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0][0] | string | 是 | — | 输入目录 |
| payload.args[0][1] | string | 是 | — | 输出目录 |
| payload.args[0][2] | number | 否 | — | 目标宽,<=0 保持原宽 |
| payload.args[0][3] | number | 否 | — | 目标高,<=0 保持原高 |
| payload.args[0][4] | number | 否 | 85 | 质量 1–100 |
返回示例
{"items":[{"src":"a.png","uri":"file:///data/out/a.jpg","bytes":48210}],"count":1}
判定 status=success 且 result.count>0
注意
- 输入目录不存在会返回 error,先用
file.download 或 system.download_file 备好素材
15. imagehw.rotate — 硬件旋转图片
用途 任意角度硬件旋转,输出为同目录新文件。 本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
payload.args 必须是双层数组,见 §0「两种 args 传参约定」
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"imagehw","func":"rotate","args":[["a.png",90]]}' "acme-hrt-001"
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0][0] | string | 是 | — | 图片路径 |
| payload.args[0][1] | number | 是 | — | 角度 |
返回示例
{"uri":"file:///…/a_rotated.jpg"}
判定 status=success 且 result.uri 非空
注意
- 与 D 组
image.rotate(#10)结果一致,本项走硬件通路、更快
16. imagehw.convert_format — 硬件转换格式
用途 硬件格式转换,输出为同目录新文件。 本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
payload.args 必须是双层数组,见 §0「两种 args 传参约定」
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"imagehw","func":"convert_format","args":[["a.png","png"]]}' "acme-hcf-001"
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0][0] | string | 是 | — | 图片路径 |
| payload.args[0][1] | string | 是 | — | jpeg|png|webp |
返回示例
{"uri":"file:///…/a.png"}
判定 status=success 且 result.uri 非空
注意
- 输出为同目录新文件,原图保留
- 格式取值
jpeg / png / webp;写入不存在的格式会失败
17. imagehw.watermark — 添加水印
用途 用 Canvas 把文字水印合成到图片上。 本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
payload.args 必须是双层数组,见 §0「两种 args 传参约定」
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"imagehw","func":"watermark","args":[["a.png","褐马边缘云"]]}' "acme-wm-001"
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0][0] | string | 是 | — | 图片路径 |
| payload.args[0][1] | string | 是 | — | 水印文字 |
返回示例
{"uri":"file:///…/a_wm.jpg"}
判定 status=success
注意
18. imagehw.thumbnail — 硬件缩略图
用途 硬件等比缩略,默认最长边 256。 本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
payload.args 必须是双层数组,见 §0「两种 args 传参约定」
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"imagehw","func":"thumbnail","args":[["a.png",256]]}' "acme-ht-001"
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0][0] | string | 是 | — | 图片路径 |
| payload.args[0][1] | number | 否 | 256 | 最长边 |
返回示例
{"uri":"file:///…/a_thumb.jpg"}
判定 status=success
注意
19. imagehw.jpeg_encode — 硬件 JPEG 编码
用途 按质量重编码为 JPEG,返回 uri 与字节数。 本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
payload.args 必须是双层数组,见 §0「两种 args 传参约定」
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"imagehw","func":"jpeg_encode","args":[["a.png",90]]}' "acme-je-001"
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0][0] | string | 是 | — | 图片路径 |
| payload.args[0][1] | number | 否 | 85 | 质量 1–100 |
返回示例
{"uri":"file:///…/a.jpg","bytes":48210}
判定 status=success 且 result.bytes>0
注意
D 组:GPU 图像处理(20–23)
图像滤镜,以及在 GPU 上运行 TFLite 模型。
20. gpu.blur — 高斯模糊
用途 对图片做高斯模糊,用于脱敏、打码、弱化背景。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"gpu","func":"blur","args":["a.png",8]}' "acme-blur-001"
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 图片路径 |
| payload.args[1] | number | 否 | 8 | 模糊半径,原生层钳制在 1–25 |
返回示例
{"uri":"file:///…/blur.jpg"}
判定 status=success 且 result.uri 非空
注意
21. gpu.grayscale — 转灰度
用途 用 Skia ColorMatrix 把图片转成黑白灰度图。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"gpu","func":"grayscale","args":["a.png"]}' "acme-gray-001"
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 图片路径 |
返回示例
{"uri":"file:///…/gray.jpg"}
判定 status=success
注意
22. gpu.sharpen — 锐化
用途 用 3×3 拉普拉斯卷积核增强边缘清晰度。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"gpu","func":"sharpen","args":["a.png",1.2]}' "acme-sp-001"
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 图片路径 |
| payload.args[1] | number | 否 | 1.0 | 锐化强度,原生层钳制在 0–2 |
返回示例
{"uri":"file:///…/sharpen.jpg"}
判定 status=success
注意
- 强度范围 0–2;强度过高会产生明显噪点
- 输出为同目录新文件,原图保留
23. gpu.tflite_gpu — GPU 运行 TFLite 模型
用途 用 GPU delegate(Mali-G52 / OpenGL ES)在端侧跑 .tflite 模型,模型原生懒加载并缓存。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"gpu","func":"tflite_gpu","args":["/files/models/mobilenet.tflite","cat.jpg"]}' "acme-tfl-001" 180
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 模型绝对路径(file://) |
| payload.args[1] | string | 是 | — | 输入图片路径 |
返回示例
{"shape":[1,1000],"dtype":"float32","dataBase64":"…"}
判定 status=success 且 result.shape 为数组
注意
- 返回原始输出张量(shape + 小端 float32),需自行解码后处理
- TFLite GPU 依赖未集成时返回
result.error;纯 CPU 路径请用 rknn.infer(#34)
E 组:视频处理(24–26)
读取视频元信息、按时间点抽帧。
24. video.extract_thumbnail — 提取视频封面
用途 从视频指定时间点抽一帧存成图片,用于列表封面。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"video","func":"extract_thumbnail","args":["clip.mp4",1000,80]}' "acme-vt-001" 120
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 视频路径 |
| payload.args[1] | number | 否 | — | 时间点(毫秒) |
| payload.args[2] | number | 否 | — | JPEG 质量 1–100 |
返回示例
{"uri":"file:///…/thumb_1000.jpg","timeMs":1000}
判定 status=success 且 result.uri 非空
注意
25. video.extract_frames — 批量抽帧
用途 按多个时间点一次性抽出多帧。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"video","func":"extract_frames","args":["clip.mp4",[0,1000,2000]]}' "acme-vf-001" 180
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 视频路径 |
| payload.args[1] | array | 是 | — | 时间点数组(毫秒) |
返回示例
{"frames":[{"timeMs":0,"uri":"file:///…/f0.jpg"},{"timeMs":1000,"uri":"file:///…/f1000.jpg"}]}
判定 status=success 且 result.frames 数量等于请求时间点数
注意
- I 组
videohw.extract_frames(#27)为硬件解码版本,长视频优先用它
26. video.get_metadata — 读取视频信息
用途 读取视频时长、分辨率、编码格式等元信息。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"video","func":"get_metadata","args":["clip.mp4"]}' "acme-vm-001"
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 视频路径 |
返回示例
{"durationMs":5120,"width":1920,"height":1080,"fps":30}
判定 status=success 且 result.durationMs>0
注意
F 组:硬件视频处理(27–29)
与上一组同样的视频操作,改走硬件编解码通路。长视频转码用这一组。
27. videohw.extract_frames — 硬件批量抽帧
用途 用 MediaMetadataRetriever 硬件解码批量抽帧。 本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
payload.args 必须是双层数组,见 §0「两种 args 传参约定」
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"videohw","func":"extract_frames","args":[["clip.mp4",[0,1000,2000],"/data/out"]]}' "acme-hvf-001" 180
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0][0] | string | 是 | — | 视频路径 |
| payload.args[0][1] | array | 是 | — | 时间点数组(毫秒) |
| payload.args[0][2] | string | 否 | 由端侧决定 | 输出目录 |
返回示例
{"frames":[{"timeMs":0,"uri":"file:///data/out/f0.jpg"}]}
判定 status=success 且 result.frames 非空
注意
timesMs 必须是数组,传数字会报 requires timesMs: number[]
28. videohw.transcode — 硬件视频转码
用途 硬件解码后重新编码并封装,输出 H.264。 本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
payload.args 必须是双层数组,见 §0「两种 args 传参约定」
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"videohw","func":"transcode","args":[["src.mp4","dst.mp4",1280,720,4000000]]}' "acme-tc-001" 600
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0][0] | string | 是 | — | 源视频路径 |
| payload.args[0][1] | string | 是 | — | 目标视频路径 |
| payload.args[0][2] | number | 否 | — | 目标宽,<=0 保持源值 |
| payload.args[0][3] | number | 否 | — | 目标高,<=0 保持源值 |
| payload.args[0][4] | number | 否 | — | 目标码率,<=0 保持源值 |
返回示例
{"uri":"file:///…/dst.mp4","durationMs":5120}
判定 status=success 且 result.durationMs>0
注意
- 长视频转码耗时长,务必把
timeout_sec 调大(本例 600s)
29. videohw.get_metadata — 硬件读取视频信息
用途 用 MediaMetadataRetriever 读取时长与分辨率。 本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
payload.args 必须是双层数组,见 §0「两种 args 传参约定」
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"videohw","func":"get_metadata","args":[["clip.mp4"]]}' "acme-hvm-001"
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0][0] | string | 是 | — | 视频路径 |
返回示例
{"durationMs":5120,"width":1920,"height":1080}
判定 status=success 且 result.durationMs>0
注意
G 组:语音识别(30–33)
端侧语音转文字,含麦克风实时转写与音频文件转写。
30. speech.transcribe — 实时麦克风转文字
用途 端侧流式语音识别:AudioRecord 采集 16kHz 单声道 PCM,边收边用 sherpa-onnx 流式 paraformer 解码,返回全文。不需要预先录好音频。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 设备需为 arm64-v8a;先跑
speech.status 确认原生模块已链接
- 需已授予
RECORD_AUDIO;模型需已同步
请求示例
post_task script '{"module":"speech","func":"transcribe","args":[5]}' "acme-asr-001" 60
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | number | 否 | 10 | 录音时长(秒),1–60 |
| payload.args[1] | string | 否 | 自动读 current 指针 | 流式模型目录;留空自动读 current 指针 |
返回示例
{"result":{"text":"今天天气不错","tokens":[…],"latencyMs":9564}}
判定 status=success 且 result.result.text 为字符串(静音环境为空串属正常)
注意
- 需 RECORD_AUDIO 权限;headless 任务内无法弹窗授权,未授权时返回明确错误,需前台或 MDM 授权
- 先执行
system.sync_models(#37)拉取 paraformer-streaming-zh,否则报「流式语音模型未同步」
- 5 秒录音端到端约 9.5 秒,耗时主要在流式解码
31. speech.transcribe_file — 音频文件转文字
用途 对已录制好的单声道 WAV 文件做整句离线解码。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 设备需为 arm64-v8a;先跑
speech.status 确认原生模块已链接
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"speech","func":"transcribe_file","args":["a.wav"]}' "acme-asrf-001" 120
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | WAV 文件路径(单声道) |
| payload.args[1] | string | 否 | 自动读 paraformer-zh.current.json 指针 | 模型目录 |
返回示例
{"result":{"text":"今天天气不错","tokens":[…],"sampleRate":16000,"latencyMs":820,"modelDir":"/files/models/paraformer-zh@…/"}}
判定 status=success 且 result.result.text 非空
注意
- 与 #30 的区别:本项是整句离线解码(快),#30 是麦克风流式(实时)
- 非 arm64-v8a 设备会返回「端侧语音识别不可用」并带上 ABI
32. speech.status — 语音模块自检
用途 检查端侧语音能力是否可用(原生模块是否链接、ABI 是否匹配),不录音、不加载模型。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 设备需为 arm64-v8a;先跑
speech.status 确认原生模块已链接
请求示例
post_task script '{"module":"speech","func":"status","args":[]}' "acme-asrs-001"
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args | array | 是 | — | 固定 [] |
返回示例
{"result":{"available":true,"abi":"arm64-v8a","reason":null}}
判定 result.result.available=true
注意
- 排障第一步:先跑本项确认原生模块已链接,再跑 #30/#31
33. speech.release — 释放语音模型
用途 把已加载的语音模型从内存卸载,回收 NPU 与堆内存。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 设备需为 arm64-v8a;先跑
speech.status 确认原生模块已链接
请求示例
post_task script '{"module":"speech","func":"release","args":[]}' "acme-asrl-001"
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args | array | 是 | — | 固定 [] |
返回示例
{"result":{"released":2}}
判定 result.result.released 为已卸载实例数
注意
released=0 表示当前没加载任何模型,非错误
H 组:NPU 推理(34–37、52–53)
在 NPU 上运行 RKNN 模型:加载、推理、检测、释放。
34. rknn.infer — RKNN 模型推理
用途 把图片喂给 .rknn 模型做推理。输出较大时默认只返回摘要,opts.fullOutput=true 返回完整输出张量。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 模型需已同步,见
system.sync_models
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"rknn","func":"infer","args":["/files/models/mobilenetv2-12.rknn","cat.jpg"]}' "acme-inf-001" 120
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 模型路径(.rknn) |
| payload.args[1] | string | 是 | — | 输入图片路径 |
| payload.args[2] | object | 否 | — | 选项;fullOutput:true 见 #53 |
返回示例
{"output":[{"shape":[1,1000],"dtype":"float32","summary":{…}}],"latencyMs":117}
判定 status=success 且 result.output 为数组
注意
- 首次调用会自动加载模型;显式预热用
rknn.load_model(#35)
- 单次推理超时 10 秒;
timeout_sec 需大于该值
- 640 检测模型请优先用
rknn.detect(#52),原始张量有 705600 浮点不适合直接回传
35. rknn.load_model — 加载 RKNN 模型
用途 把 .rknn 模型装入 NPU 并缓存,供后续多次推理复用。可选,infer 首次会自动加载。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 模型需已同步,见
system.sync_models
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"rknn","func":"load_model","args":["/files/models/yolov8n-640@2.0.0-rk3576-int8/model.rknn"]}' "acme-lm-001" 120
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 模型路径(.rknn) |
返回示例
{"loaded":true,"modelPath":"/files/models/yolov8n-640@2.0.0-rk3576-int8/model.rknn"}
判定 result.loaded=true
注意
- 模型须先由
system.sync_models(#37)拉到 files/models/
- 批量任务开始前预热,可省去首个任务的加载时间
36. rknn.release — 释放 NPU 模型
用途 释放已加载的 RKNN 模型句柄,回收 NPU 显存。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 模型需已同步,见
system.sync_models
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"rknn","func":"release","args":[]}' "acme-rknn-001"
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args | array | 是 | — | 固定 [] |
返回示例
{"released":true}
判定 result.released=true
注意
37. system.sync_models — 同步 AI 模型
用途 拉取模型清单并逐个下载,每份校验大小与 sha256,写入版本化目录后更新 current 指针。返回 installed / confirmed / failed 三个列表。首次执行 NPU 推理前需先调用一次。
调用前需满足
请求示例
post_task script '{"module":"system","func":"sync_models","args":[]}' "acme-syncm-001" 900
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args | array | 是 | — | 固定 [],无需参数 |
返回示例
{"installed":["yolov8n-640@2.0.0-rk3576-int8"],"confirmed":["yolov8n-640@2.0.0-rk3576-int8"],"failed":[]}
判定 status=success 且 result.failed 为空数组
注意
- 幂等:当前版本摘要一致则直接跳过,不重复下载,因此第二次执行通常 20s 内完成
- 模型文件不落在业务服务器上,只存对象存储;版本目录
files/models/{name}@{version}/
- 回滚 = 把 current 指针指回旧版本,无需重新下载
52. rknn.detect — YOLO 目标检测(数据级)
用途 对 YOLO 类模型做检测推理,返回检测框列表。框坐标已映射回原图空间,返回体积与图片尺寸、图片数量无关。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 模型需已同步,见
system.sync_models
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"rknn","func":"detect","args":["/files/models/yolov8n-640@2.0.0-rk3576-int8/model.rknn","bus.jpg",{"conf":0.25,"iou":0.45,"max":100}]}' "acme-det-001" 120
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | YOLO .rknn 模型路径(须为 9 输出官方格式) |
| payload.args[1] | string | 是 | — | 输入图片路径 |
| payload.args[2].conf | number | 否 | 0.25 | 置信度阈值 |
| payload.args[2].iou | number | 否 | 0.45 | NMS IoU 阈值 |
| payload.args[2].max | number | 否 | 100 | 最大返回框数 |
返回示例
{"count":5,"dets":[{"class_id":0,"class_name":"person","score":0.89,"box":[x1,y1,x2,y2]}],"space":"src","letterbox":{…},"latencyMs":159}
判定 status=success 且 result.space="src"(坐标已在原图空间,无需二次换算)
注意
- 640 分辨率下单帧耗时:INT8 约 160 毫秒,FP16 约 220 毫秒
- 输入先经标准 letterbox(等比 + 居中 + 114 灰边)进模型,NMS 后映射回原图,
result.letterbox 附换算参数备查
- 单输出
[1,84,8400] 格式的 INT8 模型不可用于本项:坐标与类别分共享量化 scale,类别分会被压成 0.5;请用官方 9 输出模型,或改用 FP16
- FP16 模型(
yolov8n-640@2.0.0-rk3576-fp16)分数精度明显更高,真机 person 约 0.89,与 fp32 基线一致
53. rknn.infer fullOutput 模式 — 取回完整原始张量
用途 rknn.infer 的可选模式:opts.fullOutput=true 时不做端侧摘要,回传完整输出张量(大张量以 base64 编码)。用于离线比对与算法调试。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 模型需已同步,见
system.sync_models
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"rknn","func":"infer","args":["/files/models/mobilov2-12.rknn","cat.jpg",{"fullOutput":true}]}' "acme-full-001" 180
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 模型路径 |
| payload.args[1] | string | 是 | — | 输入图片路径 |
| payload.args[2].fullOutput | boolean | 否 | — | 置 true 开启本模式 |
返回示例
{"output":[{"shape":[1,1000],"dtype":"float32","dataBase64":"AA…"}],"latencyMs":121}
判定 status=success 且 result.output[0].dataBase64 非空
注意
- 需 WS 单包预算 ≥10MB:低于 2.0.53 的设备单包上限为 1 MB,会失败
- 仅用于调试;正式调用请用
rknn.detect
I 组:加密(38–42)
密钥生成、对称加密、RSA 签名与验签。密钥存于硬件 Keystore,私钥不出设备。
38. crypto.gen_keys — 生成密钥对
用途 在硬件 Keystore 内生成密钥,AES 用于对称加密,RSA 用于签名。
调用前需满足
- 请求头需带有效的
X-Admin-Key
payload.args 必须是双层数组,见 §0「两种 args 传参约定」
请求示例
post_task script '{"module":"crypto","func":"gen_keys","args":[["rt1","aes"]]}' "acme-gk-001"
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0][0] | string | 是 | — | 密钥别名 alias,后续加解密按此引用 |
| payload.args[0][1] | string | 是 | — | "aes" 或 "rsa" |
返回示例
{"generated":true,"alias":"rt1"}
判定 result.generated=true 且 result.alias 匹配
注意
- 重复对同一 alias 生成会覆盖旧密钥,先确认没有依赖该 alias 的密文
- RSA 默认 2048 位
39. crypto.aes_encrypt — AES-GCM 加密
用途 用 Keystore 中的 AES 密钥加密 base64 明文,每次调用生成新 IV 并返回。 本组 args 须双层数组,见 §0。密钥存于硬件 Keystore,私钥不出设备。
调用前需满足
- 请求头需带有效的
X-Admin-Key
payload.args 必须是双层数组,见 §0「两种 args 传参约定」
- 须先用
crypto.gen_keys 生成同名 alias 的密钥
请求示例
post_task script '{"module":"crypto","func":"aes_encrypt","args":[["rt1","aGVsbG8="]]}' "acme-ae-001"
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0][0] | string | 是 | — | 密钥别名 |
| payload.args[0][1] | string | 是 | — | base64 编码的明文,不是裸字符串 |
返回示例
{"ivBase64":"3q2+7w==","ciphertextBase64":"kQ=="}
判定 status=success 且 result.ivBase64 与 result.ciphertextBase64 均非空
注意
- 明文必须先 base64;
ivBase64 必须与密文一同保存,解密时要用
- 1 KB 明文端到端约 44 毫秒
40. crypto.aes_decrypt — AES-GCM 解密
用途 用 Keystore 中的 AES 密钥解密并校验完整性(authenticated)。
调用前需满足
- 请求头需带有效的
X-Admin-Key
payload.args 必须是双层数组,见 §0「两种 args 传参约定」
- 须先用
crypto.gen_keys 生成同名 alias 的密钥
请求示例
post_task script '{"module":"crypto","func":"aes_decrypt","args":[["rt1","3q2+7w==","kQ=="]]}' "acme-ad-001"
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0][0] | string | 是 | — | 密钥别名 |
| payload.args[0][1] | string | 是 | — | 加密时返回的 ivBase64 |
| payload.args[0][2] | string | 是 | — | 加密时返回的 ciphertextBase64 |
返回示例
{"plaintextBase64":"aGVsbG8="}
判定 status=success 且 result.plaintextBase64 与加密输入一致
注意
- 密文被篡改会校验失败,这是 AES-GCM 的设计目的,不要当作故障
41. crypto.rsa_sign — RSA 签名
用途 用 Keystore 中的 RSA 私钥对消息签名(SHA256withRSA),私钥不出设备。 本组 args 须双层数组,见 §0。密钥存于硬件 Keystore,私钥不出设备。
调用前需满足
- 请求头需带有效的
X-Admin-Key
payload.args 必须是双层数组,见 §0「两种 args 传参约定」
- 须先用
crypto.gen_keys 生成同名 alias 的密钥
请求示例
post_task script '{"module":"crypto","func":"rsa_sign","args":[["sig1","hello"]]}' "acme-rs-001"
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0][0] | string | 是 | — | 密钥别名 |
| payload.args[0][1] | string | 是 | — | 待签名消息 |
返回示例
{"hex":"a1b2c3…"}
判定 status=success 且 result.hex 为十六进制串
注意
42. crypto.rsa_verify — RSA 验签
用途 用 Keystore 中的 RSA 公钥验证签名真伪。
调用前需满足
- 请求头需带有效的
X-Admin-Key
payload.args 必须是双层数组,见 §0「两种 args 传参约定」
- 须先用
crypto.gen_keys 生成同名 alias 的密钥
请求示例
post_task script '{"module":"crypto","func":"rsa_verify","args":[["sig1","hello","a1b2c3…"]]}' "acme-rv-001"
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0][0] | string | 是 | — | 密钥别名 |
| payload.args[0][1] | string | 是 | — | 原始消息(须与签名时完全一致) |
| payload.args[0][2] | string | 是 | — | rsa_sign 返回的 hex |
返回示例
{"valid":true}
判定 result.valid=true
注意
valid=false 表示消息被改或签名不属于该 key,别名写错也会这样
J 组:知识库问答 RAG(43–45)
文档入库、语义检索、基于检索结果生成答案。知识库存于端侧。
43. rag.ingest — 文档入库
用途 把一段文本切块、向量化后写入端侧知识库,供后续检索与问答。
调用前需满足
请求示例
post_task script '{"module":"rag","func":"ingest","args":["边缘计算把算力放在离数据源更近的位置","mydoc"]}' "acme-rag-001" 180
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 文档正文 |
| payload.args[1] | string | 否 | — | 文档 id,省略自动生成;重复 id 会覆盖 |
返回示例
{"docId":"mydoc","chunks":1,"dim":384}
判定 status=success 且 result.chunks>0
注意
44. rag.search — 语义检索
用途 按语义相似度从端侧知识库召回最相关的 k 个片段。
调用前需满足
请求示例
post_task script '{"module":"rag","func":"search","args":["算力放在哪里",3]}' "acme-rag-002" 120
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 查询语句 |
| payload.args[1] | number | 否 | 3 | 返回条数 |
返回示例
{"results":[{"docId":"mydoc","score":0.87,"text":"边缘计算把算力放在…"}]}
判定 status=success 且 result.results 为数组
注意
45. rag.answer — 基于知识库问答
用途 先检索再结合召回内容生成答案,适合直接对用户展示。
调用前需满足
请求示例
post_task script '{"module":"rag","func":"answer","args":["算力放在哪里",3]}' "acme-rag-003" 180
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 问题 |
| payload.args[1] | number | 否 | 3 | 召回条数 |
| payload.args[2] | string | 否 | — | 自定义提示词模板 |
返回示例
{"answer":"边缘计算把算力放在离数据源更近的位置…","citations":["mydoc"]}
判定 status=success 且 result.answer 非空
注意
K 组:批量处理(46–49)
一次处理一批文件,替代逐条下发。
46. batch.process — 通用批量子集处理
用途 通用入口,由后端下发的 batch_func 决定对分片做什么。适合编排平台下发的结构化批任务。
调用前需满足
请求示例
post_task script '{"module":"batch","func":"process","args":[{"batch_func":"ocr","data":["a.png","b.png"]}]}' "acme-bp-001" 300
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | object | 是 | — | 分片对象,须含 batch_func 与 data |
返回示例
{"success":true,"processed":2,"failed":0,"items":[…]}
判定 status=success 且 result.success=true
注意
batch_func 未知时返回 unknown batch_func
- 日常用 #47/#48/#49 的便捷入口即可,本项主要给编排平台用
47. batch.ocr — 批量图片识别文字
用途 对一个分片的全部图片批量跑 OCR,比逐张下发快一个数量级。
调用前需满足
请求示例
post_task script '{"module":"batch","func":"ocr","args":[["a.png","b.png"],"Latin"]}' "acme-bocr-001" 180
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | array | 是 | — | 图片路径数组 |
| payload.args[1] | string | 否 | Latin | 语种脚本 |
返回示例
{"success":true,"processed":2,"failed":0,"items":[{"src":"a.png","text":"…"}]}
判定 status=success 且 result.processed>0
注意
- 单张失败不阻断整批,失败项在
items 里带错误原因
48. batch.image_batch — 批量图片处理
用途 对一批图片统一执行同一图像操作(缩放、压缩、转格式等)。
调用前需满足
- 请求头需带有效的
X-Admin-Key
args[1] 操作名必填
请求示例
post_task script '{"module":"batch","func":"image_batch","args":[["a.png","b.png"],"resize",{"width":640,"height":480}]}' "acme-bib-001" 300
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | array | 是 | — | 图片路径数组 |
| payload.args[1] | string | 是 | — | 操作名,如 resize |
| payload.args[2] | object | 否 | — | 操作参数,如 {"width":640,"height":480} |
返回示例
{"success":true,"processed":2,"failed":0,"items":[…]}
判定 status=success 且 result.processed>0
注意
args[1] 必填,缺失会报 width and height must be > 0 这类误导性错误
- 带 options 时务必同时给 width/height
49. batch.hash_batch — 批量文件哈希
用途 批量计算文件 SHA,用于端侧资产完整性核对。模型分发校验的同一套能力。
调用前需满足
请求示例
post_task script '{"module":"batch","func":"hash_batch","args":[["model.rknn","tokens.txt"]]}' "acme-bhash-001" 180
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | array | 是 | — | 文件路径数组 |
返回示例
{"success":true,"processed":2,"failed":0,"items":[{"path":"model.rknn","sha256":"03245334…"}]}
判定 status=success 且每个 item 的 sha256 与云端登记值一致
注意
- 大文件(数百 MB)耗时较长,
timeout_sec 建议 300s 以上
L 组:文件摆渡(50–51)
文件在端侧与对象存储之间双向传输。
50. file.upload — 端上文件上传七牛
用途 把端侧文件上传到七牛,key 落在 edge/{device_id}/ 命名空间,并返回 key、url 与内容哈希。
调用前需满足
- 请求头需带有效的
X-Admin-Key
localPath 需为端上已存在的文件
请求示例
post_task file '{"action":"upload","localPath":"ocr_test.png.ocr.txt","filename":"result.txt"}' "acme-up-001" 180
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| type | string | 是 | — | 固定 file |
| payload.action | string | 是 | — | 固定 upload |
| payload.localPath | string | 是 | — | 端侧文件路径 |
| payload.filename | string | 是 | — | 上传后的文件名 |
| payload.mimeType | string | 否 | — | MIME 类型,可省略 |
返回示例
{"result":{"key":"edge/edge_xxx/…/result.txt","url":"https://…","hash":"…"}}
判定 status=success 且 result.result.key 非空
注意
- key 由端侧生成、不可指定,只能落在本设备命名空间下,隔离多设备互访
- 常见组合:先用 OCR 得到
a.png.ocr.txt,再用本项回传,可比对任务结果与文件内容是否一致
51. file.download — 下载七牛文件到端上
用途 把七牛对象下载到端上指定路径。私有 bucket 自动使用签名 URL。
调用前需满足
- 请求头需带有效的
X-Admin-Key
key 须位于本设备命名空间 edge/{device_id}/ 下
请求示例
post_task file '{"action":"download","key":"edge/edge_xxx/<uuid>/result.txt","localPath":"back.txt"}' "acme-dn-001" 180
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| type | string | 是 | — | 固定 file |
| payload.action | string | 是 | — | 固定 download |
| payload.key | string | 是 | — | 七牛对象 key,须在本设备命名空间内 |
| payload.localPath | string | 是 | — | 落地路径 |
返回示例
{"result":{"uri":"file:///…/files/back.txt"}}
判定 status=success 且 result.result.uri 非空
注意
- 跨命名空间会 403:拉取
shared-test/ 等公共素材请用 test_flow 或先 file.upload 到本设备命名空间
- 私有 bucket 的签名 URL 由端侧凭据自动生成,不要手工拼 URL
3. 任务状态与限制
3.1 任务状态
每条任务有一个 status,按下面的顺序推进。success / failed / timeout / cancelled 为终态,进入终态后不再变化。
| status | 含义 | 终态 | 处理方式 |
pending | 已创建,等待派发 | 否 | 继续轮询 |
dispatched | 已下发到节点 | 否 | 继续轮询 |
running | 节点正在执行 | 否 | 继续轮询 |
success | 执行完成 | 是 | 读 result |
failed | 执行失败 | 是 | 读 error,按「注意」修正参数后重发 |
timeout | 超过 timeout_sec 未完成 | 是 | 调大 timeout_sec 后重发 |
cancelled | 已被取消 | 是 | 按需重发 |
只有 pending 与 dispatched 可被 POST admin/tasks/<id>/cancel/ 取消;已进入 running 的任务无法取消。
3.2 幂等提交
idempotency_key 由调用方生成,全局唯一,最大 128 字符。用同一个键重复提交只会得到同一条任务,不会重复执行。这一行为对全部能力一致,与具体能力无关。
- 去重记录保留 24 小时,从该任务进入终态后开始计时
- 网络超时后重发时沿用原键即可安全重试
- 需要重复执行同一动作时,换一个新的键
- 不带该字段时不去重,每次提交都是新任务
3.3 限流
按调用方密钥计数,固定窗口。
| 范围 | 上限 | 窗口 |
| 管理接口(创建任务、查询、取消等) | 60 次 | 60 秒 |
| WebSocket 下行消息 | 120 次 | 60 秒 |
超限返回 429。等待当前窗口结束后重发,不要立即重试。轮询任务状态同样计入限流,建议间隔 2 秒以上。
3.4 超时
timeout_sec 取值 1–86400 秒,默认 300 秒。超时后任务进入 timeout 终态。
- 后端按
timeout_sec 加少量余量后判定超时,长耗时能力需显式调大:视频转码 600 秒、模型同步 900 秒、批量处理 300 秒
- 单次模型推理在节点侧的固定超时为 10 秒,
timeout_sec 需大于该值
- 轮询建议用退避方式:首次 2 秒,之后每次 ×1.5,上限 15 秒
N 组:音频处理(54–62)
音频探测、转码、混音、音量与轨道替换。重编码类操作耗时较长,timeout_sec 适当调大。
54. audiohw.probe_audio — 音频编码能力探测
用途 探测端侧音频编码器(mime / 编码器名 / 是否硬件),转码前先校验目标格式。本组 args 须双层数组,见 §0。
调用前需满足
请求示例
post_task script '{"module":"audiohw","func":"probe_audio","args":[[]]}' "acme-ap-001"
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | array | 否 | [] | 待探测编码 mime 数组,空则用默认四种 DORA 目标格式 |
返回示例
{"platform":"rk3576","formats":[{"mime":"audio/mp4a-latm","available":true}]}
判定 status=success 且无 error 字段
注意
- 本组
args 须双层数组,见 §0。
- RK3576S 音频为软件编码,无硬件 AAC/AMR
55. audiohw.get_metadata — 读取音频信息
用途 读取音视频文件的轨道、编码、声道、采样率、时长等元信息。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"audiohw","func":"get_metadata","args":[["a.wav"]]}' "acme-am-001"
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 源文件路径 |
返回示例
{"trackCount":1,"audioTracks":[{"mime":"audio/x-wav","channelCount":1,"sampleRate":16000}],"hasAudio":true}
判定 status=success 且 result.trackCount 存在
注意
- 本组
args 须双层数组,见 §0。
- 相对路径自动 resolve 到应用文档目录
56. audiohw.extract_audio — 提取音频
用途 从音视频文件中提取音频轨并转码。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"audiohw","func":"extract_audio","args":[["in.mp4","out.m4a","aac",128000]]}' "acme-ea-001" 180
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 源文件路径(视频亦可) |
| payload.args[1] | string | 是 | — | 输出音频路径 |
| payload.args[2] | string | 否 | aac | 目标编码:aac|amr-nb|amr-wb|opus|copy |
| payload.args[3] | number | 否 | 0 | 目标比特率 bps,0 跟随源 |
| payload.args[4] | number | 否 | 0 | 目标采样率 Hz,0 跟随源 |
| payload.args[5] | number | 否 | 0 | 目标声道数,0 跟随源 |
返回示例
{"uri":"file:///…/out.m4a","codec":"aac","channelCount":2,"sampleRate":44100,"transcoded":true}
判定 status=success 且 result.uri 非空
注意
- 本组
args 须双层数组,见 §0。
- target=
copy 且容器允许时零重编码
57. audiohw.transcode — 音频转码
用途 纯音频文件重编码。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"audiohw","func":"transcode","args":[["a.wav","b.m4a","aac",128000]]}' "acme-at-001" 300
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 源纯音频路径(视频容器会被拒绝) |
| payload.args[1] | string | 是 | — | 输出音频路径 |
| payload.args[2] | string | 否 | aac | 目标编码 |
| payload.args[3] | number | 否 | 0 | 目标比特率 bps |
| payload.args[4] | number | 否 | 0 | 目标采样率 Hz |
| payload.args[5] | number | 否 | 0 | 目标声道数 |
返回示例
{"uri":"file:///…/b.m4a","codec":"aac","transcoded":true}
判定 status=success 且 result.uri 非空
注意
- 本组
args 须双层数组,见 §0。
- 视频转音频用
replace_audio,本项只收纯音频
58. audiohw.denoise — 音频降噪
用途 STFT 谱减降噪。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"audiohw","func":"denoise","args":[["in.wav","out.wav",12]]}' "acme-dn-001" 300
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 源文件路径 |
| payload.args[1] | string | 是 | — | 输出文件路径 |
| payload.args[2] | number | 否 | 12 | 噪声衰减上限 dB,0–30 |
返回示例
{"uri":"file:///…/out.wav","denoise":{"inputRmsDb":-20.1,"outputRmsDb":-31.4,"framesProcessed":120}}
判定 status=success 且 result.uri 非空
注意
- 本组
args 须双层数组,见 §0。
- 第三参须传数字;STFT 谱减为真实 DSP
59. audiohw.remove_audio — 剥离音轨
用途 剥离视频的音轨,输出无声视频。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"audiohw","func":"remove_audio","args":[["in.mp4","mute.mp4"]]}' "acme-ra-001" 120
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 源视频路径 |
| payload.args[1] | string | 是 | — | 输出无声视频路径 |
返回示例
{"uri":"file:///…/mute.mp4","audioRemoved":true,"videoSamplesCopied":150}
判定 status=success 且 result.audioRemoved=true
注意
- 本组
args 须双层数组,见 §0。
- 纯 stream-copy 零重编码
60. audiohw.replace_audio — 替换音轨
用途 把视频的原音轨换成指定音频。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"audiohw","func":"replace_audio","args":[["v.mp4","a.wav","out.mp4","aac",128000]]}' "acme-rpa-001" 180
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 源视频路径(视频轨 stream-copy) |
| payload.args[1] | string | 是 | — | 新音频文件路径 |
| payload.args[2] | string | 是 | — | 输出文件路径 |
| payload.args[3] | string | 否 | aac | 新音频重编码目标 |
| payload.args[4] | number | 否 | 0 | 新音频比特率 bps |
返回示例
{"uri":"file:///…/out.mp4","codec":"aac","audioSourceMime":"audio/x-wav"}
判定 status=success 且 result.uri 非空
注意
- 本组
args 须双层数组,见 §0。
- 参数顺序固定 [video,audio,dst,target,bitrate],视频不重编码
61. audiohw.mix_audio — 混音
用途 两路音频混合后重编码。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"audiohw","func":"mix_audio","args":[["v.mp4","b.wav","out.mp4",1,1,"aac",128000]]}' "acme-ma-001" 180
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 基底音视频路径 |
| payload.args[1] | string | 是 | — | 叠加的第二音频源 |
| payload.args[2] | string | 是 | — | 输出路径 |
| payload.args[3] | number | 否 | 1 | 基底线性增益(1 不变) |
| payload.args[4] | number | 否 | 1 | 叠加源线性增益 |
| payload.args[5] | string | 否 | aac | 混音后编码目标 |
| payload.args[6] | number | 否 | 0 | 输出比特率 bps |
返回示例
{"uri":"file:///…/out.mp4","mix":{"clippedSamples":0,"baseGain":1,"extraGain":1}}
判定 status=success 且 result.mix 存在
注意
- 本组
args 须双层数组,见 §0。
- 第二源会被重采样/下混到基底布局;增益为线性幅度(0.5=-6dB)
62. audiohw.set_volume — 调音量
用途 调整音量/静音后重编码。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"audiohw","func":"set_volume","args":[["in.mp4","out.mp4",0.5,false,"aac",128000]]}' "acme-sv-001" 180
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 源媒体路径 |
| payload.args[1] | string | 是 | — | 输出路径 |
| payload.args[2] | number | 是 | — | 线性音量乘子(0.5=-6dB,2.0=+6dB) |
| payload.args[3] | boolean | 否 | false | 是否静音 |
| payload.args[4] | string | 否 | aac | 重编码目标 |
| payload.args[5] | number | 否 | 0 | 输出比特率 bps |
返回示例
{"uri":"file:///…/out.mp4","volume":{"gain":0.5,"muted":false,"gainDb":-6}}
判定 status=success 且 result.volume 存在
注意
- 本组
args 须双层数组,见 §0。
volume 必须为 number;有视频轨时视频 stream-copy
O 组:容器重封装(63–69)
不重编码的容器转换、封装信息读取与私有 DRM 加密。只需改封装时优先用这一组。
63. remuxhw.avinfo — 媒体探针
用途 全量媒体探针(容器/轨道/编码/显示参数)。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"remuxhw","func":"avinfo","args":[["in.mp4"]]}' "acme-av-001"
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 源文件路径 |
返回示例
{"container":"mp4","trackCount":1,"tracks":[{"mime":"video/avc","codec":"h264","width":640,"height":480}]}
判定 status=success 且 result.tracks 为数组
注意
- 本组
args 须双层数组,见 §0。
- 全量探针:编码标准/profile/level/分辨率/帧率/旋转/码率/B 帧
64. remuxhw.remux — 容器重封装
用途 零重编码容器转换。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"remuxhw","func":"remux","args":[["in.mp4","out.webm",{"keepVideo":true,"keepAudio":true}]]}' "acme-rx-001" 120
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 源文件路径 |
| payload.args[1] | string | 是 | — | 输出文件路径 |
| payload.args[2] | object | 否 | null | 选项:format/speed/keepVideo/keepAudio/keepSubtitle/startMs/endMs |
返回示例
{"uri":"file:///…/out.webm","format":"webm","samples":150,"bytes":75975,"lossless":true}
判定 status=success 且 result.samples>0
注意
- 本组
args 须双层数组,见 §0。
- 零重编码 bit-exact;FLV 容器原生拒绝
65. remuxhw.segment — 无损切片
用途 按时长/切点无损切片。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"remuxhw","func":"segment","args":[["in.mp4","/data/out",{"durationMs":60000}]]}' "acme-sg-001" 180
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 源文件路径 |
| payload.args[1] | string | 否 | — | 输出目录(缺省由原生定) |
| payload.args[2] | object | 否 | null | 选项:format/durationMs/cutPointsMs/basename/keep* |
返回示例
{"outDir":"/data/out","count":2,"segments":[{"index":0,"uri":"file:///…/s0.mp4","durationMs":60000}]}
判定 status=success 且 result.count>0
注意
- 本组
args 须双层数组,见 §0。
- GOP 对齐无损切,每片起于关键帧;单片失败不整体失败,看
segments[].error
66. remuxhw.transcode — 视频转码
用途 硬件转码(缩放/编码/倍速)。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"remuxhw","func":"transcode","args":[["in.mp4","out.mp4",{"videoCodec":"h265","bitrate":4000000}]]}' "acme-tc2-001" 600
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 源文件路径 |
| payload.args[1] | string | 是 | — | 输出文件路径 |
| payload.args[2] | object | 否 | null | 选项:format/preset/width/height/videoCodec/profile/level/bitrate/fps/speed/audioCodec/audioBitrate |
返回示例
{"uri":"file:///…/out.mp4","videoCodec":"h265","width":640,"height":480,"durationMs":5000}
判定 status=success 且宽高大于 0
注意
- 本组
args 须双层数组,见 §0。
- RK3576S VPU 硬编,仅 H.264/H.265;调用前可用
list_encoders 校验
67. remuxhw.private_encrypt — 私有加密
用途 私有 DRM 加密(逐样本 AES-CTR / 整文件 AES-CTR)。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"remuxhw","func":"private_encrypt","args":[["in.mp4","enc.mp4",{"drmComKey":"BASE64URL","drmFileKey":"BASE64URL"}]]}' "acme-pe-001" 180
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 源文件路径 |
| payload.args[1] | string | 是 | — | 输出加密文件路径 |
| payload.args[2] | object | 是 | — | 至少含 drmComKey 或 drmFileKey(URL-safe Base64,16/32 字节) |
返回示例
{"uri":"file:///…/enc.mp4","comKeyApplied":true,"fileKeyApplied":true,"lossless":true}
判定 status=success 且任一 *KeyApplied=true
注意
- 本组
args 须双层数组,见 §0。
- 零重编码;容器保持可解析,对应 DORA 价格页 copy 档
68. remuxhw.private_decrypt — 私有解密
用途 私有 DRM 解密。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"remuxhw","func":"private_decrypt","args":[["enc.mp4","back.mp4",{"drmComKey":"BASE64URL"}]]}' "acme-pd-001" 180
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 加密源文件路径 |
| payload.args[1] | string | 是 | — | 输出解密文件路径 |
| payload.args[2] | object | 是 | — | 与加密一致的密钥袋 |
返回示例
{"uri":"file:///…/back.mp4","comKeyApplied":true,"lossless":true}
判定 status=success 且 result.uri 非空
注意
- 本组
args 须双层数组,见 §0。
- 先剥文件层再逐样本解,密钥须与加密一致
69. remuxhw.list_encoders — 编码器清单
用途 列出可用编码器/容器/预设。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"remuxhw","func":"list_encoders","args":[[]]}' "acme-le-001"
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args | array | 是 | — | 固定 [] |
返回示例
{"h264":true,"h265":true,"formats":["mp4","webm"]}
判定 status=success 且返回对象非空
注意
- 本组
args 须双层数组,见 §0。
- 无参;转码前用它校验请求合法性
P 组:视频编辑(70–78)
基于 GL 管线的视频编辑与轨道过滤(自建套件)。长视频编辑耗时较长,timeout_sec 适当调大。
70. videoedithw.watermark — 视频水印
用途 GL 管线烧录文字/图片水印。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"videoedithw","func":"watermark","args":[["in.mp4","out.mp4",{"layers":[{"type":"text","text":"EDGE","position":"bottomRight"}]}]]}' "acme-vw-001" 300
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 源视频路径 |
| payload.args[1] | string | 否 | 派生 | 输出路径,空则派生 |
| payload.args[2] | object | 是 | — | options 必填:layers(≤20)+ 编码选项 |
返回示例
{"gpu":true,"uri":"file:///data/user/0/com.xhtx.app/files/o_fwm.mp4","bytes":129545,"width":640,"frames":91,"height":480,"durationMs":4966.666,"videoCodec":"video/avc"}
判定 status=success 且 result.uri 非空
注意
- 本组
args 须双层数组,见 §0。
- options.layers 为空直接返回错误
71. videoedithw.concat_video — 视频拼接
用途 多视频首尾拼接。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"videoedithw","func":"concat_video","args":[[["a.mp4","b.mp4"],"out.mp4",{"mode":"reencode"}]]}' "acme-vc-001" 600
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | array | 是 | — | 源路径数组(≥2) |
| payload.args[1] | string | 否 | 派生 | 输出路径 |
| payload.args[2] | object | 否 | null | mode: reencode|copy;audio: auto|first|none |
返回示例
{"uri":"file:///…/out.mp4","durationMs":10000,"frames":300,"lossless":false}
判定 status=success 且 result.uri 非空
注意
- 本组
args 须双层数组,见 §0。
- copy 要求参数一致否则用 reencode
72. videoedithw.concat_audio — 音频拼接
用途 多音频首尾拼接。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"videoedithw","func":"concat_audio","args":[[["a.m4a","b.m4a"],"out.m4a",{}]]}' "acme-vca-001" 300
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | array | 是 | — | 音频源数组(≥1) |
| payload.args[1] | string | 否 | 派生 | 输出路径 |
| payload.args[2] | object | 否 | null | mode/sampleRate/channels/bitrate |
返回示例
{"uri":"file:///…/out.m4a","durationMs":20000,"sampleRate":44100}
判定 status=success 且 result.uri 非空
注意
- 本组
args 须双层数组,见 §0。
- 空列表直接返回错误
73. videoedithw.add_subtitle — 字幕处理
用途 字幕边车/封装/烧录/抽取。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"videoedithw","func":"add_subtitle","args":[["in.mp4","out.mp4",{"mode":"sidecar","subtitlePath":"/data/sub.srt"}]]}' "acme-vs-001" 300
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 源视频路径 |
| payload.args[1] | string | 否 | 派生 | 输出路径 |
| payload.args[2] | object | 否 | null | mode: sidecar|mux|embed|extract;除 extract 外需 subtitlePath |
返回示例
{"uri":"file:///…/out.mp4","subtitleUri":"file:///…/out.srt","cues":12,"mode":"sidecar"}
判定 status=success 且 result.uri 非空
注意
- 本组
args 须双层数组,见 §0。
- sidecar 无损;embed 烧录重编码
74. videoedithw.mix_audio — 视频混音
用途 视频保留原声再混入一路音频。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"videoedithw","func":"mix_audio","args":[["base.mp4","out.mp4",{"audioPath":"extra.wav"}]]}' "acme-vm-001" 300
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 源视频路径 |
| payload.args[1] | string | 否 | 派生 | 输出路径 |
| payload.args[2] | object | 是 | — | options 必填:audioPath(叠加轨)+ 编码选项 |
返回示例
{"uri":"file:///data/user/0/com.xhtx.app/files/o_fmx.mp4","bytes":93093,"audioSamples":23,"sampleRate":16000,"videoLossless":true}
判定 status=success 且 result.uri 非空
注意
- 本组
args 须双层数组,见 §0。
- 缺 audioPath 直接返回错误;视频恒流拷
75. videoedithw.replace_audio — 视频换音轨
用途 替换视频的音轨。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"videoedithw","func":"replace_audio","args":[["v.mp4","out.mp4",{"audioPath":"new.wav"}]]}' "acme-vra-001" 300
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 源视频路径 |
| payload.args[1] | string | 否 | 派生 | 输出路径 |
| payload.args[2] | object | 是 | — | options 必填:audioPath(替换轨)+ 编码选项 |
返回示例
{"uri":"file:///data/user/0/com.xhtx.app/files/o_frp.mp4","bytes":98835,"audioSamples":63,"sampleRate":44100,"videoLossless":true}
判定 status=success 且 result.uri 非空
注意
- 本组
args 须双层数组,见 §0。
- 缺 audioPath 直接返回错误;视频恒流拷
76. videoedithw.mosaic — 马赛克
用途 矩形区域打马赛克。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"videoedithw","func":"mosaic","args":[["in.mp4","out.mp4",{"rects":[{"x":10,"y":10,"w":80,"h":80}]}]]}' "acme-vmo-001" 300
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 源视频路径 |
| payload.args[1] | string | 否 | 派生 | 输出路径 |
| payload.args[2] | object | 是 | — | options 必填:rects(归一化或 px)+ 编码选项 |
返回示例
{"gpu":true,"uri":"file:///data/user/0/com.xhtx.app/files/o_fmo.mp4","bytes":102953,"width":640,"frames":92,"height":480}
判定 status=success 且 result.uri 非空
注意
- 本组
args 须双层数组,见 §0。
- 缺 rects 直接返回错误
77. videoedithw.remove_streams — 轨道过滤
用途 按轨道过滤(默认去字幕轨),无重编码。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"videoedithw","func":"remove_streams","args":[["in.mp4","out.mp4",{}]]}' "acme-vrs-001" 120
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 源路径 |
| payload.args[1] | string | 否 | 派生 | 输出路径 |
| payload.args[2] | object | 否 | null | removeIndexes 优先于 keep*;keepVideo/Audio 默认 true |
返回示例
{"uri":"file:///…/out.mp4","lossless":true}
判定 status=success 且 result.uri 非空
注意
- 本组
args 须双层数组,见 §0。
- 默认 options 即去全部文本轨
78. videoedithw.list_capabilities — 编辑能力探测
用途 列出编辑能力(编码器/GL/上限)。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"videoedithw","func":"list_capabilities","args":[[]]}' "acme-vlc-001"
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args | array | 是 | — | 固定 [] |
返回示例
{"videoEncoders":["OMX.rk.video_encoder.avc"],"maxWatermarkLayers":20,"sdk":"30"}
判定 status=success 且含 videoEncoders
注意
- 本组
args 须双层数组,见 §0。
- 无参;派发前先探测拒绝不可能任务
Q 组:图像高级处理(79–103)
水印、拼接、超分、压缩、样式模板等 25 项图像高级操作。逐项参数差异大,以各节请求字段为准。
79. imageproc.animate — 生成动图
用途 多帧合成 GIF。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"imageproc","func":"animate","args":[[["f1.png","f2.png"],120,0,512,"out.gif"]]}' "acme-an-001" 120
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | array | 是 | — | 静帧路径数组(≥2)或 JSON |
| payload.args[1] | number | 否 | 100 | 帧间隔毫秒 |
| payload.args[2] | number | 否 | 0 | 循环次数(0 无限) |
| payload.args[3] | number | 否 | 800 | 最大边长 |
| payload.args[4] | string | 否 | — | 输出 GIF 路径 |
返回示例
{"uri":"file:///…/out.gif","frames":2,"width":512,"height":384}
判定 status=success 且含 uri/frames
注意
- 本组
args 须双层数组,见 §0。
- 手写 GIF89a+LZW(Android 无 GIF 编码器)
80. imageproc.avif_compress — AVIF 压缩
用途 AVIF 压缩。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"imageproc","func":"avif_compress","args":[["in.jpg","out.avif","auto",80]]}' "acme-avif-001" 120
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 源图片路径 |
| payload.args[1] | string | 否 | — | 输出路径 |
| payload.args[2] | string | 否 | auto | 尺寸档 |
| payload.args[3] | number | 否 | 80 | 质量 1–100 |
返回示例
{"error":"AVIF_NOT_SUPPORTED","available":false,"sdkInt":30}
判定 status=success 且含 uri;available=false 表示设备无 AVIF 编码器
注意
- 本组
args 须双层数组,见 §0。
- 需 API 31+ 且有 AV1 图像编码器;Android 11 返回拒答
81. imageproc.blind_watermark — 盲水印嵌入
用途 DCT 域不可见水印嵌入。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"imageproc","func":"blind_watermark","args":[["in.jpg","text","hello","out.png",0]]}' "acme-bw-001" 60
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 源图片路径 |
| payload.args[1] | string | 是 | text | text 文本或 image 图片 |
| payload.args[2] | string | 是 | — | 文本内容或水印图路径 |
| payload.args[3] | string | 否 | — | 输出路径 |
| payload.args[4] | number | 否 | 0 | 嵌入强度(0 默认) |
返回示例
{"uri":"file:///…/out.png","payloadBytes":12}
判定 status=success 且含 uri
注意
- 本组
args 须双层数组,见 §0。
- DCT 域不可见水印;输出 PNG(JPEG 重编码会破坏载荷)
82. imageproc.blind_watermark_extract — 盲水印提取
用途 提取盲水印并校验 CRC。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"imageproc","func":"blind_watermark_extract","args":[["out.png"]]}' "acme-bwe-001" 30
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 待提取图片路径 |
返回示例
{"found":true,"valid":true,"kind":"text","text":"hello"}
判定 status=success;found 为 false 表示无载荷
注意
- 本组
args 须双层数组,见 §0。
- 缩放/低质量 JPEG 会损坏载荷
83. imageproc.capabilities — 图像能力探测
用途 图像能力清单(HEIF/AVIF 可用性等)。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"imageproc","func":"capabilities","args":[[]]}' "acme-ipc-001"
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args | array | 是 | — | 固定 [] |
返回示例
{"heif":true,"progressive":true}
判定 status=success
注意
- 本组
args 须双层数组,见 §0。
- 原生为 0 参方法,多传 null 会触发 TurboModule 参数校验失败
84. imageproc.exif — 读取 EXIF
用途 读取 EXIF(含 GPS)。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"imageproc","func":"exif","args":[["a.jpg"]]}' "acme-ex-001"
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 源图片路径 |
返回示例
{"make":"Xiaomi","width":0,"pixelWidth":4032,"hasGps":false}
判定 status=success
注意
- 本组
args 须双层数组,见 §0。
- 缺失数值标签为 0、字符串为 null
85. imageproc.heif_compress — HEIF 压缩
用途 HEIF 压缩。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"imageproc","func":"heif_compress","args":[["in.jpg","out.heic","auto",80]]}' "acme-heif-001" 120
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 源图片路径 |
| payload.args[1] | string | 否 | — | 输出路径 |
| payload.args[2] | string | 否 | auto | 尺寸档 |
| payload.args[3] | number | 否 | 80 | 质量 1–100 |
返回示例
{"uri":"file:///…/out.heic","bytes":48210}
判定 status=success 且含 uri
注意
- 本组
args 须双层数组,见 §0。
- 经 MediaCodec+MediaMuxer 编码
86. imageproc.image_ave — 平均色调
用途 计算图片平均色调。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"imageproc","func":"image_ave","args":[["a.jpg"]]}' "acme-ave-001"
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 源图片路径 |
返回示例
{"color":"0x8C547B","r":140,"g":84,"b":123,"samples":4096}
判定 status=success 且含 color
注意
- 本组
args 须双层数组,见 §0。
- 大图原生降采样,均值不变
87. imageproc.image_density — 读写 DPI
用途 读写图片 DPI。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"imageproc","func":"image_density","args":[["a.jpg",300,"out.jpg"]]}' "acme-den-001" 60
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 源图片路径 |
| payload.args[1] | number | 否 | 0 | dpi>0 写出,<=0 读取 |
| payload.args[2] | string | 否 | — | 写出时输出路径 |
返回示例
{"dpi":300,"format":"jpeg","verified":true}
判定 status=success 且含 dpi
注意
- 本组
args 须双层数组,见 §0。
- 写出支持 JFIF APP0/PNG pHYs 并回读校验
88. imageproc.image_exif_retain — EXIF 保留/剥离
用途 按策略保留/剥离 EXIF。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"imageproc","func":"image_exif_retain","args":[["a.jpg",{"mode":"keep"},"out.jpg"]]}' "acme-er-001" 60
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 源图片路径 |
| payload.args[1] | object | 是 | {} | 规范对象(mode/names 等) |
| payload.args[2] | string | 否 | — | 输出路径 |
返回示例
{"uri":"file:///…/out.jpg","mode":"keep","tagsWritten":12}
判定 status=success 且含 uri
注意
- 本组
args 须双层数组,见 §0。
- 字节级复制后仅改元数据,不重编码图像
89. imageproc.image_info — 图片信息
用途 读取容器级图片信息。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"imageproc","func":"image_info","args":[["a.jpg"]]}' "acme-ii-001"
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 源图片路径 |
返回示例
{"format":"jpeg","width":4032,"height":3024,"hasExif":true}
判定 status=success 且含 format/width
注意
- 本组
args 须双层数组,见 §0。
- 容器级事实,非解码后位图尺寸
90. imageproc.image_mogr2 — 图片规范化
用途 限尺寸/质量/渐进式规范化。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"imageproc","func":"image_mogr2","args":[["a.jpg",{"limitWidth":1920,"quality":85},"out.jpg"]]}' "acme-mg-001" 60
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 源图片路径 |
| payload.args[1] | object | 是 | {} | — |
| payload.args[2] | string | 否 | — | 输出路径 |
返回示例
{"uri":"file:///…/out.jpg","width":1920,"quality":85}
判定 status=success 且含 uri
注意
- 本组
args 须双层数组,见 §0。
- 渐进式是否应用以平台编码器上报为准
91. imageproc.image_mogr2_ext — 图片规范化扩展
用途 mogr2 扩展(密度/EXIF 保留)。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"imageproc","func":"image_mogr2_ext","args":[["a.jpg",{"limitWidth":1920,"density":300},"out.jpg"]]}' "acme-mge-001" 60
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 源图片路径 |
| payload.args[1] | object | 是 | {} | — |
| payload.args[2] | string | 否 | — | 输出路径 |
返回示例
{"uri":"file:///…/out.jpg","density":300}
判定 status=success 且含 uri
注意
- 本组
args 须双层数组,见 §0。
- 为 mogr2 扩展(密度/EXIF 保留等),原函数保持不变
92. imageproc.image_slim — 图片瘦身
用途 按体积上限压图。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"imageproc","func":"image_slim","args":[["a.jpg","out.jpg",200000]]}' "acme-sl-001" 60
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 源图片路径 |
| payload.args[1] | string | 否 | — | 输出路径 |
| payload.args[2] | number | 否 | 0 | 目标上限字节数(0 为源一半) |
返回示例
{"uri":"file:///…/out.jpg","quality":72,"savedRatio":0.5}
判定 status=success 且含 uri
注意
- 本组
args 须双层数组,见 §0。
- 二分搜索能装入上限的 JPEG 质量,不够才降分辨率
93. imageproc.jpeg_progressive — 渐进 JPEG
用途 转渐进式 JPEG。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"imageproc","func":"jpeg_progressive","args":[["a.jpg",{},"out.jpg"]]}' "acme-jp-001" 60
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 源图片路径 |
| payload.args[1] | object | 是 | {} | — |
| payload.args[2] | string | 否 | — | 输出路径 |
返回示例
{"uri":"file:///…/out.jpg","outputProgressive":true,"scans":10}
判定 status=success 且 outputProgressive 为真
注意
- 本组
args 须双层数组,见 §0。
- 内置纯 JVM 编码器(SOF2)
94. imageproc.png_adam7 — 隔行 PNG
用途 转 Adam7 隔行 PNG。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"imageproc","func":"png_adam7","args":[["a.png",{},"out.png"]]}' "acme-pa-001" 60
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 源图片路径 |
| payload.args[1] | object | 是 | {} | — |
| payload.args[2] | string | 否 | — | 输出路径 |
返回示例
{"uri":"file:///…/out.png","outputInterlaced":true}
判定 status=success 且 outputInterlaced 为真
注意
- 本组
args 须双层数组,见 §0。
- 内置纯 JVM 编码器,无损
95. imageproc.round_pic — 圆角图片
用途 圆角裁切。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"imageproc","func":"round_pic","args":[["in.jpg",24,"out.png"]]}' "acme-rp-001" 60
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 源图片路径 |
| payload.args[1] | number | 否 | 0 | 圆角半径像素(0 自动=短边/8) |
| payload.args[2] | string | 否 | — | 输出路径 |
返回示例
{"uri":"file:///…/out.png","width":800,"height":600}
判定 status=success 且含 uri
注意
- 本组
args 须双层数组,见 §0。
- 强制 PNG(JPEG 无 Alpha)
96. imageproc.stitch — 全景拼接
用途 多图全景拼接。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"imageproc","func":"stitch","args":[[["a.jpg","b.jpg"],"1600x1200","out.jpg"]]}' "acme-st-001" 180
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | array | 是 | — | 待拼接路径数组(≥2) |
| payload.args[1] | string | 否 | 1600x1200 | 尺寸档 |
| payload.args[2] | string | 否 | — | 输出路径 |
返回示例
{"uri":"file:///…/out.jpg","canvasWidth":2400,"canvasHeight":1200}
判定 status=success 且含 uri
注意
- 本组
args 须双层数组,见 §0。
- Harris+块描述子+RANSAC 单应性+羽化
97. imageproc.style_apply — 应用样式
用途 应用已存图片样式。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"imageproc","func":"style_apply","args":[["s1","a.jpg","out.jpg"]]}' "acme-sa-001" 120
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 样式名 |
| payload.args[1] | string | 是 | — | 源图片路径 |
| payload.args[2] | string | 否 | — | 目标路径 |
返回示例
{"uri":"file:///…/out.jpg","style":"s1","opsApplied":["resize","watermark"]}
判定 status=success 且含 uri
注意
- 本组
args 须双层数组,见 §0。
- 复用位图管线(缩放/裁剪/水印/mogr2 等)
98. imageproc.style_delete — 删除样式
用途 删除图片样式。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"imageproc","func":"style_delete","args":[["s1"]]}' "acme-sd-001"
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 样式名 |
返回示例
{"deleted":true,"name":"s1"}
判定 status=success 且 deleted 为真
注意
99. imageproc.style_get — 读取样式
用途 读取图片样式定义。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"imageproc","func":"style_get","args":[["s1"]]}' "acme-sg-001"
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 样式名 |
返回示例
{"found":true,"name":"s1","opsCount":2}
判定 status=success 且 found 为真
注意
100. imageproc.style_list — 样式列表
用途 列出全部图片样式。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"imageproc","func":"style_list","args":[[]]}' "acme-sl2-001"
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args | array | 是 | — | 固定 [] |
返回示例
{"count":2,"styles":[{"name":"s1"}]}
判定 status=success 且含 count/styles
注意
- 本组
args 须双层数组,见 §0。
- 忽略传入参数
101. imageproc.style_save — 保存样式
用途 保存图片样式。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"imageproc","func":"style_save","args":[["s1",[{"op":"resize","w":800}]]]}' "acme-ss-001"
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 样式名(字母数字下划线) |
| payload.args[1] | array | 是 | {} | — |
返回示例
{"saved":true,"name":"s1","opsCount":1}
判定 status=success 且 saved 为真
注意
- 本组
args 须双层数组,见 §0。
- 持久化到 files/image_styles.json,重启保留
102. imageproc.super_resolution — 图片超分
用途 图片超分(高质量重采样)。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"imageproc","func":"super_resolution","args":[["a.jpg",2,"enhanced","out.jpg"]]}' "acme-sr-001" 180
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 源图片路径 |
| payload.args[1] | number | 是 | — | 放大倍数(仅 2 或 3) |
| payload.args[2] | string | 否 | enhanced | normal 双三次或 enhanced |
| payload.args[3] | string | 否 | — | 输出路径 |
返回示例
{"uri":"file:///…/out.jpg","scale":2,"aiModel":false}
判定 status=success 且含 uri
注意
- 本组
args 须双层数组,见 §0。
aiModel 恒 false(高质量重采样非 GAN);scale 非 2/3 直接报错
103. imageproc.watermark — 图片水印
用途 图片水印合成。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"imageproc","func":"watermark","args":[["a.jpg",{"mode":"single","text":"Hi"},"out.jpg"]]}' "acme-wm2-001" 60
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 源图片路径 |
| payload.args[1] | object | 是 | {} | — |
| payload.args[2] | string | 否 | — | 输出路径 |
返回示例
{"uri":"file:///…/out.jpg","mode":"single","opacity":1}
判定 status=success 且含 uri
注意
- 本组
args 须双层数组,见 §0。
- mode: single 文本|image 图片|tile 网格|mixed 混合
R 组:文件工具(104–113)
哈希、压缩包、二维码、文本格式互转等文件小工具。均为本地轻量操作。
104. filehw.capabilities — 文件能力探测
用途 文件能力清单。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"filehw","func":"capabilities","args":[[]]}' "acme-fc-001"
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args | array | 是 | — | 固定 [] |
返回示例
{"hashAlgorithms":["etag","md5","sha256"],"zipAes":false}
判定 status=success 且含 hashAlgorithms
注意
- 本组
args 须双层数组,见 §0。
- zipAes 恒 false,不要把 password 当 AES
105. filehw.concat — 文件拼接
用途 多文件字节拼接。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"filehw","func":"concat","args":[[["a.bin","b.bin"],"out.bin",{}]]}' "acme-fcc-001" 300
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | array | 是 | — | 源文件路径数组 |
| payload.args[1] | string | 是 | — | 目标文件路径 |
| payload.args[2] | object | 否 | — | separator/rejectMedia |
返回示例
{"uri":"file:///…/out.bin","sizeBytes":2048,"fileCount":2}
判定 status=success 且含 uri/sizeBytes
注意
- 本组
args 须双层数组,见 §0。
- 默认 rejectMedia=true 拒绝音视频图片;流式拼接不加载到内存
106. filehw.md2html — Markdown 转 HTML
用途 Markdown 转 HTML。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"filehw","func":"md2html","args":[["a.md","","{}"]]}' "acme-md-001" 60
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 源 markdown 路径 |
| payload.args[1] | string | 否 | — | 目标 html 路径(空则内联返回) |
| payload.args[2] | object | 否 | — | gfm/breaks/xhtml 选项 |
返回示例
{"html":"<h1>…","htmlLength":120}
判定 status=success 且含 htmlLength
注意
- 本组
args 须双层数组,见 §0。
- destPath 为空返回内联 html,预览场景用此模式
107. filehw.html2md — HTML 转 Markdown
用途 HTML 转 Markdown。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"filehw","func":"html2md","args":[["a.html","","{}"]]}' "acme-hm-001" 60
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 源 html 路径 |
| payload.args[1] | string | 否 | — | 目标 md 路径(空则内联返回) |
| payload.args[2] | object | 否 | — | 选项 |
返回示例
{"markdown":"# …","markdownLength":80}
判定 status=success 且含 markdownLength
注意
108. filehw.mkzip — 打包 ZIP
用途 多文件打 ZIP 包。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"filehw","func":"mkzip","args":[[["a.txt"],"out.zip",{"level":6}]]}' "acme-mz-001" 600
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | array | 是 | — | 源文件路径数组 |
| payload.args[1] | string | 是 | — | 目标 zip 路径 |
| payload.args[2] | object | 否 | — | level 0–9/password/entries |
返回示例
{"uri":"file:///…/out.zip","entryCount":1,"ratio":0.4}
判定 status=success 且含 uri/entryCount
注意
- 本组
args 须双层数组,见 §0。
- 仅 ZipCrypto(非 AES-256)
109. filehw.probe — 文件探测
用途 文件类型/大小/权限探测。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"filehw","func":"probe","args":[["a.apk"]]}' "acme-fp-001"
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 待探测文件路径(类型看魔数而非扩展名) |
返回示例
{"mime":"application/vnd.android.package-archive","fileSizeBytes":278992207}
判定 status=success 且含 mime/fileSizeBytes
注意
110. filehw.probe_all — 批量文件探测
用途 批量文件探测。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"filehw","func":"probe_all","args":[[["a.apk","b.png"]]]}' "acme-fpa-001" 60
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | array | 是 | — | 待探测路径数组 |
返回示例
{"count":2,"files":[{"mime":"…"}]}
判定 status=success 且 count 与 files 一致
注意
- 本组
args 须双层数组,见 §0。
- 空数组直接返回错误
111. filehw.qhash — 文件哈希
用途 计算文件哈希。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"filehw","func":"qhash","args":[["/sdcard/a.apk","sha256"]]}' "acme-qh-001"
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 文件路径 |
| payload.args[1] | string | 否 | etag | etag|etagMd5|md5|sha1|sha256|crc32 |
返回示例
{"algorithm":"sha256","hash":"73d17a0c…"}
判定 status=success 且含 hash
注意
- 本组
args 须双层数组,见 §0。
- sha512 在 crypto 模块,不在此处
112. filehw.qhash_all — 全量文件哈希
用途 一次算出全部常用哈希。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"filehw","func":"qhash_all","args":[["/sdcard/a.apk"]]}' "acme-qha-001"
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 文件路径 |
返回示例
{"qhash":"…","md5":"…","sha256":"…","crc32":"…"}
判定 status=success 且含 qhash/md5
注意
- 本组
args 须双层数组,见 §0。
- 一次流式全算,比调两次 qhash 更省
113. filehw.qrcode — 生成二维码
用途 生成二维码图片。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"filehw","func":"qrcode","args":[["https://xiaohetx.cn","/sdcard/qr.png",{"ecl":"Q"}]]}' "acme-qr-001"
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 二维码内容(一般为 URL) |
| payload.args[1] | string | 否 | — | 目标 png 路径(空则内联 base64) |
| payload.args[2] | object | 否 | — | scale/border/ecl/version/mask/颜色 |
返回示例
{"pngBytes":4820,"version":"5","ecl":"Q"}
判定 status=success 且含 pngBytes
注意
- 本组
args 须双层数组,见 §0。
- content 原样传入不做路径解析
S 组:视频雪碧图(114–117)
按时间抽帧并拼成雪碧图。先用 sprite_info 确认规格,再取图。
114. spritehw.sprite — 视频雪碧图
用途 抽帧拼雪碧图。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"spritehw","func":"sprite","args":[["in.mp4",{"lines":4,"columns":8,"cellSize":160,"interval":5}]]}' "acme-sp-001" 600
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 视频文件路径 |
| payload.args[1] | object | 否 | {} | 雪碧图规格(行列/格尺寸/采样/旋转/边距等) |
返回示例
{"sprite":{"uri":"file:///…/s.jpg","width":1280},"frameCount":32}
判定 status=success 且含 sprite.uri 与 frames
注意
- 本组
args 须双层数组,见 §0。
- spec 可传对象或 JSON 串;interval 与 frames 互斥
115. spritehw.vsample_sprite — 视频采样雪碧图
用途 采样雪碧图(别名)。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"spritehw","func":"vsample_sprite","args":[["in.mp4",{"lines":2,"columns":4}]]}' "acme-vsp-001" 600
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 视频文件路径 |
| payload.args[1] | object | 否 | {} | 同 sprite 的 spec |
返回示例
{"sprite":{"uri":"file:///…/s.jpg"},"frameCount":8}
判定 status=success 且含 sprite.uri
注意
- 本组
args 须双层数组,见 §0。
- DORA 命令名别名,与 sprite 同一实现
116. spritehw.sprite_info — 雪碧图规划
用途 探测视频以规划雪碧图。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"spritehw","func":"sprite_info","args":[["in.mp4"]]}' "acme-si-001" 60
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 视频文件路径(只探测不抽帧) |
返回示例
{"durationMs":5000,"width":640,"height":480,"frameRate":30}
判定 status=success 且含 durationMs
注意
- 本组
args 须双层数组,见 §0。
- 用于事前规划行列/格尺寸
117. spritehw.capabilities — 雪碧图能力探测
用途 雪碧图能力清单。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"spritehw","func":"capabilities","args":[[]]}' "acme-sc-001"
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args | array | 是 | — | 固定 [] |
返回示例
{"sheet":true,"maxCells":100}
判定 status=success
注意
T 组:供应商与审核(118–128)
身份核验与内容审核(需先配置供应商)。未配置时返回明确错误,见各节判定。
118. provider.capabilities — 供应商能力
用途 已配置供应商与能力状态。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"provider","func":"capabilities","args":[[]]}' "acme-pc-001"
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args | array | 是 | — | 固定 [] |
返回示例
{"providers":["qiniu-censor"],"audit":true}
判定 status=success;未配置返回 PROVIDER_NOT_CONFIGURED 而非伪造结论
注意
- 本组
args 须双层数组,见 §0。
- JS 层永不抛异常,全部转 error
119. provider.local_validate — 本地证件校验
用途 本地规则校验(身份证校验位/号段/Luhn)。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"provider","func":"local_validate","args":[["id_card",{"idNumber":"11010119900307461X","name":"张三"}]]}' "acme-lv-001"
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 操作:idcard2|mobile3|bank4|anchor_blacklist|face_compare |
| payload.args[1] | object | 否 | {} | 参数对象(身份证/手机/卡/姓名) |
返回示例
{"valid":true,"operation":"idcard2"}
判定 status=success
注意
- 本组
args 须双层数组,见 §0。
- 纯本地校验,无网络无供应商
120. provider.verify_identity — 身份核验
用途 经供应商做实名/卡/手机核验。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"provider","func":"verify_identity","args":[["default","idcard2",{"realname":"张三","idcard":"11010119900307461X"}]]}' "acme-vi-001" 60
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 否 | default | 供应商 ID |
| payload.args[1] | string | 是 | — | 远端核验操作 |
| payload.args[2] | object | 否 | {} | 实名/证件/手机/卡等参数 |
返回示例
{"matched":true,"operation":"idcard2"}
判定 status=success;未配置看 PROVIDER_NOT_CONFIGURED
注意
- 本组
args 须双层数组,见 §0。
- 需已配置供应商,幂等 5 分钟
121. provider.audit_probe — 审核探针
用途 审核供应商连通性/配置探针。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"provider","func":"audit_probe","args":[["qiniu-censor"]]}' "acme-apb-001"
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 审核供应商 ID |
返回示例
{"configured":true,"auth":true}
判定 status=success
注意
122. provider.audit_list — 审核厂商列表
用途 全部审核厂商与配置状态。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"provider","func":"audit_list","args":[[]]}' "acme-al-001"
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args | array | 是 | — | 固定 [] |
返回示例
{"providers":[{"id":"qiniu-censor","configured":true}]}
判定 status=success
注意
123. provider.audit_submit — 提交审核
用途 向审核供应商提交内容。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"provider","func":"audit_submit","args":[["qiniu-censor","image",{"url":"https://x/x.jpg"}]]}' "acme-as-001" 120
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 审核供应商 ID |
| payload.args[1] | string | 是 | — | 分类:image|audio|video|text |
| payload.args[2] | object | 否 | {} | 载荷(url/path/base64/text 等) |
返回示例
{"entryId":"abc123","provider":"qiniu-censor"}
判定 status=success
注意
- 本组
args 须双层数组,见 §0。
- 未配置不伪造结论,fallback:local 才走端侧
124. provider.audit_query — 查询审核
用途 查询异步审核结果。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"provider","func":"audit_query","args":[["qiniu-censor","image","abc123"]]}' "acme-aq-001" 60
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 审核供应商 ID |
| payload.args[1] | string | 是 | — | 分类 |
| payload.args[2] | string | 是 | — | 异步审核条目 ID |
返回示例
{"status":"done","decision":"pass"}
判定 status=success
注意
- 本组
args 须双层数组,见 §0。
- 三参缺一直接返回参数错误
125. provider.audit_callback — 审核回调
用途 归一化供应商审核回调裁决。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"provider","func":"audit_callback","args":[["qiniu-censor","image",{}]]}' "acme-acb-001"
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 审核供应商 ID |
| payload.args[1] | string | 是 | — | 分类 |
| payload.args[2] | object | 否 | {} | 回调体(已配密钥时验签) |
返回示例
{"decision":"pass","provider":"qiniu-censor"}
判定 status=success
注意
126. provider.audit_log — 审核日志
用途 审核日志(脱敏)。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"provider","func":"audit_log","args":[[50]]}' "acme-alg-001"
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | number | 否 | 50 | 返回条数 |
返回示例
{"entries":[{"op":"verify","ok":true}]}
判定 status=success
注意
- 本组
args 须双层数组,见 §0。
- 证件/手机/卡号脱敏 first3+****+last4
127. provider.configure_provider — 配置供应商
用途 登记供应商配置。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"provider","func":"configure_provider","args":[["qiniu-censor",{"endpoint":"https://x","appKey":"k","appSecret":"s"}]]}' "acme-cp-001"
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 供应商 ID |
| payload.args[1] | object | 否 | {} | 配置(endpoint/appKey/appSecret…),回显仅 hasAppSecret |
返回示例
{"configured":true,"providerId":"qiniu-censor"}
判定 status=success;缺 providerId 直接报参数错误
注意
- 本组
args 须双层数组,见 §0。
- 合并写入 files/identity_provider.json,secret 不回显
128. provider.clear_idempotency — 清理幂等缓存
用途 清理 5 分钟幂等缓存。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"provider","func":"clear_idempotency","args":[[]]}' "acme-ci-001"
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args | array | 是 | — | 固定 [] |
返回示例
{"cleared":true}
判定 status=success
注意
U 组:ORT 推理(129–137)
ONNX Runtime 视觉推理(需先经 sync_models 同步权重)。权重缺失时返回明确错误,见各节判定。
129. ortdora.probe — ORT 探针
用途 ONNX Runtime 可用性探针。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"ortdora","func":"probe","args":[[]]}' "acme-op-001"
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args | array | 是 | — | 固定 [] |
返回示例
{"available":true,"runtime":"onnxruntime-android 1.27.0"}
判定 status=success(无 error 即模型/绑定可用)
注意
- 本组
args 须双层数组,见 §0。
- 先探活:Java 绑定与 libonnxruntime 须同 AAR
130. ortdora.moderate_image — 图片审核
用途 图片安全分类。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"ortdora","func":"moderate_image","args":[["a.jpg","image-safety-xs",0.6]]}' "acme-om-001" 120
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 图片路径 |
| payload.args[1] | string | 否 | image-safety-xs | 模型名 |
| payload.args[2] | number | 否 | 0.6 | 阈值 |
返回示例
{"label":"SFW","score":0.98}
判定 status=success;NSFW/NSFL/SFW 看返回标签
注意
- 本组
args 须双层数组,见 §0。
- 缺权重返回 MODEL_NOT_FOUND,权重经 sync_models 分发
131. ortdora.detect_faces — 人脸检测
用途 人脸检测。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"ortdora","func":"detect_faces","args":[["face.jpg","scrfd-det",0.4,0.4,16]]}' "acme-od-001" 120
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 图片路径 |
| payload.args[1] | string | 否 | scrfd-det | 检测模型 |
| payload.args[2] | number | 否 | 0.4 | 得分阈值 |
| payload.args[3] | number | 否 | 0.4 | NMS IoU |
| payload.args[4] | number | 否 | 16 | 最大人脸数 |
返回示例
{"faces":[{"box":{"x":120,"y":80,"width":200,"height":200}}]}
判定 status=success
注意
- 本组
args 须双层数组,见 §0。
- SCRFD 检测 + 5 点关键点
132. ortdora.embed_faces — 人脸向量
用途 提取人脸嵌入向量。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"ortdora","func":"embed_faces","args":[["face.jpg","scrfd-det","mobilefacenet",0.4]]}' "acme-oe-001" 120
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 图片路径 |
| payload.args[1] | string | 否 | scrfd-det | 检测器 |
| payload.args[2] | string | 否 | mobilefacenet | 嵌入模型 |
| payload.args[3] | number | 否 | 0.4 | 得分阈值 |
返回示例
{"embeddings":[{"dim":512}]}
判定 status=success
注意
- 本组
args 须双层数组,见 §0。
- 返回 L2 归一化人脸向量
133. ortdora.compare_faces — 人脸 1:1 比对
用途 两张人脸是否为同一人。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"ortdora","func":"compare_faces","args":[["a.jpg","b.jpg","mobilefacenet",0.4]]}' "acme-oc-001" 120
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 第一张人脸图 |
| payload.args[1] | string | 是 | — | 第二张人脸图 |
| payload.args[2] | string | 否 | mobilefacenet | 模型 |
| payload.args[3] | number | 否 | 0.4 | 余弦阈值(需按部署校准) |
返回示例
{"similarity":0.82,"matched":true}
判定 status=success;是否同一人看分数与阈值
注意
- 本组
args 须双层数组,见 §0。
- 两图均必填
134. ortdora.search_faces — 人脸 1:N 检索
用途 人脸底库检索。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"ortdora","func":"search_faces","args":[["q.jpg","/files/gallery","mobilefacenet",0.4,5]]}' "acme-os-001" 180
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 查询图片 |
| payload.args[1] | string | 是 | — | 底库目录 |
| payload.args[2] | string | 否 | mobilefacenet | 模型 |
| payload.args[3] | number | 否 | 0.4 | 阈值 |
| payload.args[4] | number | 否 | 5 | 返回前 K |
返回示例
{"hits":[{"id":"p1","score":0.82}]}
判定 status=success
注意
- 本组
args 须双层数组,见 §0。
- 底库逐图重载模型,大库慢——建议限规模或缓存会话
135. ortdora.portrait_matte — 人像抠图
用途 MODNet 人像 alpha matte。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"ortdora","func":"portrait_matte","args":[["a.jpg"]]}' "acme-opm-001" 180
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 图片路径 |
| payload.args[1] | string | 否 | modnet | 模型名(默认 modnet) |
返回示例
{"task":"portrait_matting","model":"modnet","aiModel":true,"meanAlpha":0.00028,"elapsedMs":1899}
判定 status=success
注意
- 本组
args 须双层数组,见 §0。
- 参数是 [path, model?],不要把输出路径传进第二位
136. ortdora.super_resolve — 图片超分
用途 SwinIR 图片超分。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"ortdora","func":"super_resolve","args":[["a.jpg","out.png","swinir_x4",4,0]]}' "acme-osr-001" 600
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 源图路径 |
| payload.args[1] | string | 是 | — | 输出 PNG 路径 |
| payload.args[2] | string | 否 | swinir_x4 | 模型 |
| payload.args[3] | number | 否 | 4 | 放大倍数 |
| payload.args[4] | number | 否 | 0 | 分块尺寸(0 整图;>0 分块 32px 重叠防爆内存) |
返回示例
{"uri":"file:///…/out.png","width":1280,"height":960}
判定 status=success
注意
- 本组
args 须双层数组,见 §0。
- 大图用分块模式;本硬件 swinir 整图可能触发 E_TOO_SLOW 快速失败
137. ortdora.release_models — 释放 ORT 模型
用途 释放缓存的 ONNX 会话。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"ortdora","func":"release_models","args":[[]]}' "acme-orm-001"
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args | array | 是 | — | 固定 [] |
返回示例
{"released":2}
判定 status=success
注意
- 本组
args 须双层数组,见 §0。
- 替换权重文件后丢弃缓存会话
V 组:OCR 与文本(138–148)
文字识别、语音转写与文本过滤。长音频转写耗时较长,timeout_sec 适当调大。
138. ocr.audio_moderation — 文本风控
用途 ASR 文本风控(含音频特有信号)。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"ocr","func":"audio_moderation","args":[["你好", "default"]]}' "acme-oam-001"
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | ASR 转写文本 |
| payload.args[1] | string | 否 | default | 过滤器名 |
返回示例
{"riskLevel":"none","hitCount":0}
判定 status=success;riskLevel none/low 通过
注意
- 本组
args 须双层数组,见 §0。
- 含静默空转写/循环复读/零宽混淆三音频信号
139. ocr.comment_filter — 评论过滤
用途 评论垃圾与风险过滤。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"ocr","func":"comment_filter","args":[["好评!","","comment"]]}' "acme-ocf-001"
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 待检评论正文 |
| payload.args[1] | string | 否 | — | 用户历史评论(换行分隔) |
| payload.args[2] | string | 否 | comment | 过滤器名 |
返回示例
{"isSpam":false,"riskLevel":"none"}
判定 status=success;isSpam=false 通过
注意
- 本组
args 须双层数组,见 §0。
- 含灌水/复读/键盘乱敲等垃圾信号
140. ocr.long_speech — 长语音转写
用途 长音频分窗转写后拼接。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"ocr","func":"long_speech","args":[["meet.wav","vad",500,""]]}' "acme-ols-001" 600
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 音频路径 |
| payload.args[1] | string | 否 | vad | 切分策略 vad|fixed |
| payload.args[2] | number | 否 | 500 | 拼接去重重叠毫秒 |
| payload.args[3] | string | 否 | — | 模型目录 |
返回示例
{"text":"the quick brown fox jumps over the lazy dog","segmentCount":1}
判定 status=success 且 text 非空
注意
- 本组
args 须双层数组,见 §0。
- 单窗失败只贡献空串,不中断整体
141. ocr.plan_segments — 切分规划
用途 音频切分边界规划。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"ocr","func":"plan_segments","args":[["meet.wav","vad"]]}' "acme-ops-001" 60
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 音频路径 |
| payload.args[1] | string | 否 | vad | 切分策略 |
返回示例
{"segmentCount":1,"segments":[{"startMs":0,"endMs":2660}]}
判定 status=success 且分段数一致
注意
- 本组
args 须双层数组,见 §0。
- 只算边界不识别,用于预估后再跑 long_speech
142. ocr.probe — OCR/ASR 探针
用途 OCR/ASR 可用性探针。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"ocr","func":"probe","args":[[]]}' "acme-opb-001"
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args | array | 是 | — | 固定 [] |
返回示例
{"ocr":{"available":true},"asr":{"available":true}}
判定 status=success
注意
- 本组
args 须双层数组,见 §0。
- OCR 需 ML Kit 运行时,ASR 需 sherpa 模型
143. ocr.recognize — 图片文字识别
用途 图片 OCR(未解析文本)。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"ocr","func":"recognize","args":[["a.png","Chinese"]]}' "acme-or-001" 60
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 图片路径 |
| payload.args[1] | string | 否 | Chinese | 识别脚本 |
返回示例
{"text":"发票…"}
判定 status=success 且 text 为识别文本
注意
- 本组
args 须双层数组,见 §0。
- 票据类优先用 recognize_document;Chinese 兼读拉丁数字
144. ocr.recognize_document — 票据识别
用途 票据结构化识别+校验。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"ocr","func":"recognize_document","args":[["id.jpg","id_card","Chinese"]]}' "acme-ord-001" 120
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 票据图片 |
| payload.args[1] | string | 是 | — | id_card|driver_license|vehicle_license|invoice|business_license |
| payload.args[2] | string | 否 | Chinese | 识别脚本 |
返回示例
{"docType":"id_card","fields":{"name":"张三"}}
判定 status=success;字段 *Valid 为 true 即校验通过
注意
- 本组
args 须双层数组,见 §0。
- 含 GB11643/GB32100 校验位;不猜测缺失值
145. ocr.release_asr — 释放 ASR
用途 释放 ASR 识别器与模型内存。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"ocr","func":"release_asr","args":[[""]]}' "acme-ora-001"
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 否 | — | 模型目录(空释全部) |
返回示例
{"released":1}
判定 status=success
注意
146. ocr.short_speech — 短语音转写
用途 短语音听写。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"ocr","func":"short_speech","args":[["a.wav",60,""]]}' "acme-oss-001" 90
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 16kHz 单声道 WAV |
| payload.args[1] | number | 否 | 60 | 最长秒数 |
| payload.args[2] | string | 否 | — | 模型目录 |
返回示例
{"text":"the quick brown fox jumps over the lazy dog","durationSec":2.67}
判定 status=success 且 text 为听写结果
注意
- 本组
args 须双层数组,见 §0。
- 仅收 16k 单声道 WAV;时间戳为推导值(approx)
147. ocr.text_filter — 文本过滤
用途 自由文本风控过滤。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"ocr","func":"text_filter","args":[["你好","default","",false]]}' "acme-otf-001"
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 待检自由文本 |
| payload.args[1] | string | 否 | default | 过滤器 |
| payload.args[2] | string | 否 | — | 限定分类 |
| payload.args[3] | boolean | 否 | false | 是否统计重叠出现 |
返回示例
{"riskLevel":"none","hitCount":0}
判定 status=success;riskLevel none 通过
注意
- 本组
args 须双层数组,见 §0。
- Aho-Corasick 扫描,返回精确字符偏移
148. ocr.validate — 规则校验
用途 证件/证号校验位规则。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"ocr","func":"validate","args":[["id_card","11010119900307461X"]]}' "acme-ov-001"
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 规则:id_card|uscc|invoice_number|plate |
| payload.args[1] | string | 是 | — | 待校验值 |
返回示例
{"kind":"id_card","valid":true}
判定 status=success 且 valid 为 true
注意
- 本组
args 须双层数组,见 §0。
- 不跑 OCR,只对已有值跑校验位
W 组:安全审核(149–166)
人脸、广告、活体与视频审核(部分需同步权重)。阈值类参数以各节默认值为准。
149. safety.aggregate_frames — 多帧聚合判定
用途 多帧滑窗聚合判定。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"safety","func":"aggregate_frames","args":[[[{"timestampMs":0,"label":"nsfw","score":0.9}],5,2]]}' "acme-saf-001"
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | array | 是 | — | 逐帧判定数组 |
| payload.args[1] | number | 否 | 5 | 滑动窗口大小 |
| payload.args[2] | number | 否 | 2 | 窗口内所需命中 |
返回示例
{"decision":"block","blocked":true,"hitRatio":0.8}
判定 blocked=true 则拦截;单帧闪现不拦截
注意
- 本组
args 须双层数组,见 §0。
- 纯算法无需模型;需连续窗口达标(迟滞)
150. safety.anti_replay — 翻拍检测
用途 屏幕翻拍检测。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"safety","func":"anti_replay","args":[["a.jpg",0,0]]}' "acme-sar-001" 30
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 图片路径 |
| payload.args[1] | number | 否 | 0 | 参考清晰度方差 |
| payload.args[2] | number | 否 | 0 | 最大边长缩放 |
返回示例
{"suspicious":false,"composite":0.2}
判定 suspicious=true 视为翻拍可疑
注意
- 本组
args 须双层数组,见 §0。
- 纯算法;LCD 条纹/摩尔纹/眩光多维证据
151. safety.capabilities — 安全能力探测
用途 安全能力与权重可用性清单。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"safety","func":"capabilities","args":[[]]}' "acme-scp-001"
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args | array | 是 | — | 固定 [] |
返回示例
{"available":["face_quality"],"missing":["arcface"]}
判定 先调本函数;available 含目标能力才可派发
注意
152. safety.detect_ad — 广告检测
用途 广告图文检测。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"safety","func":"detect_ad","args":[["a.jpg",[],[]]]}' "acme-sda-001" 30
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 图片路径 |
| payload.args[1] | array | 否 | [] | OCR 文本数组 |
| payload.args[2] | array | 否 | [] | 文本框数组 |
返回示例
{"text":{"blocked":false},"decision":"pass"}
判定 看 text.blocked/text.decision;版式分仅为结构特征
注意
- 本组
args 须双层数组,见 §0。
- 文本与版式纯算法;分类器缺权重时不做拦截依据
153. safety.face_cluster — 人脸聚类
用途 人脸向量聚类。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"safety","func":"face_cluster","args":[[[{"id":"a","embedding":"BASE64"}],"connected",0.4,0]]}' "acme-sfc-001" 30
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | array | 是 | — | 向量数组(id+base64 float32) |
| payload.args[1] | string | 否 | connected | connected|average|dbscan |
| payload.args[2] | number | 否 | 0 | 相似度阈值 |
| payload.args[3] | number | 否 | 0 | dbscan 最小点数 |
返回示例
{"clusterCount":1,"clusters":[{"clusterId":0,"size":1}]}
判定 按 clusters/memberIds 消费
注意
- 本组
args 须双层数组,见 §0。
- 纯数学;embedding 需外部供给
154. safety.face_compare — 人脸向量比对
用途 两个人脸向量是否同一人。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"safety","func":"face_compare","args":[["BASE64A","BASE64B","arcface",0.4]]}' "acme-sfco-001"
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | base64 float32 向量 A |
| payload.args[1] | string | 是 | — | base64 float32 向量 B |
| payload.args[2] | string | 否 | arcface | 阈值档案 |
| payload.args[3] | number | 否 | 0 | 阈值(0 用档案默认 0.40) |
返回示例
{"similarity":0.82,"matched":true,"threshold":0.4}
判定 matched=true 判同人
注意
- 本组
args 须双层数组,见 §0。
- 数学计算;embedding 提取本身需 arcface 权重
155. safety.face_quality — 人脸质量
用途 人脸质量(清晰/光照/姿态/遮挡)。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"safety","func":"face_quality","args":[["/sdcard/frame.jpg",[{"x":10,"y":10,"w":80,"h":80}]]]}' "acme-sfq-001" 30
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 图片路径 |
| payload.args[1] | array | 是 | — | 人脸框数组 |
| payload.args[2] | number | 否 | 0 | 最大边长缩放 |
返回示例
{"faceCount":1,"faces":[{"pass":true,"qualityScore":0.9}]}
判定 看 faces[].pass/qualityScore 及 issues
注意
- 本组
args 须双层数组,见 §0。
- 纯算法;框由 ML Kit 供给,无需权重
156. safety.face_search — 向量检索
用途 向量底库检索。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"safety","func":"face_search","args":[["BASE64Q",[{"id":"p1","embedding":"BASE64"}]]]}' "acme-sfs-001"
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | base64 float32 查询向量 |
| payload.args[1] | array | 是 | — | 底库数组 |
| payload.args[2] | string | 否 | bruteforce | bruteforce|ivf|tree |
| payload.args[3] | number | 否 | 5 | 返回前 K |
返回示例
{"hits":[{"id":"p1","score":0.82}]}
判定 按 hits[].score/rank 消费
注意
- 本组
args 须双层数组,见 §0。
- 纯数学;ivf 看 recallAtK 评估近似损失
157. safety.image_moderate — 图片审核
用途 图片安全审核。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"safety","func":"image_moderate","args":[["a.jpg","A1"]]}' "acme-sim-001" 60
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 图片路径 |
| payload.args[1] | string | 是 | — | 能力:A1 涉黄|A2 暴力|A3 敏感人物 |
| payload.args[2] | string | 否 | — | 权重路径(空自动探测) |
返回示例
{"decision":"pass","blocked":false,"score":0.02}
判定 blocked=true 拦截;无权重以 modelAvailable=false 识别拒答
注意
- 本组
args 须双层数组,见 §0。
- 无权重时结构化拒答,绝不编造分数
158. safety.image_quality — 图像质量
用途 图像质量全检。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"safety","func":"image_quality","args":[["a.jpg"]]}' "acme-siq-001" 30
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 图片路径 |
返回示例
{"pass":true,"qualityScore":0.88,"anomalyCount":0}
判定 pass=true 判质量过关
注意
- 本组
args 须双层数组,见 §0。
- 纯算法:模糊/黑帧/曝光/噪声/偏色全覆盖
159. safety.liveness — 活体检测
用途 活体检测(眨眼/张嘴/摇头)。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"safety","func":"liveness","args":[[[{"timestampMs":0,"leftEyeX":100,"leftEyeY":100,"rightEyeX":160,"rightEyeY":100,"eyeTopY":90,"eyeBottomY":110,"noseX":130,"noseY":140}]],[]]]}' "acme-slv-001"
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | array | 是 | — | 逐帧 ML Kit 关键点序列 |
| payload.args[1] | array | 否 | [] | 所需动作 blink|mouth|shake |
返回示例
{"pass":true,"blinksDetected":1}
判定 pass=true 判活体通过
注意
- 本组
args 须双层数组,见 §0。
- 纯几何+状态机,无需权重
160. safety.refine_matte — 抠图精修
用途 抠图 alpha 精修。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"safety","func":"refine_matte","args":[["BASE64ALPHA",640,480]]}' "acme-srm-001" 60
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | base64 float32 原始 alpha 图 |
| payload.args[1] | number | 是 | — | alpha 宽 |
| payload.args[2] | number | 是 | — | alpha 高 |
返回示例
{"width":640,"height":480,"coverageRatio":0.2}
判定 消费返回的 alpha/coverageRatio/holeCount
注意
- 本组
args 须双层数组,见 §0。
- 只做后处理(trimap 夹紧+导向滤波+去斑+羽化)
161. safety.scan_ad_text — 广告文本扫描
用途 OCR 文本广告扫描。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"safety","func":"scan_ad_text","args":[[["特价优惠"]]]}' "acme-sat-001"
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | array | 是 | — | OCR 文本数组 |
返回示例
{"blocked":false,"hitCount":0}
判定 blocked=true 或 hitCount>0 判命中
注意
- 本组
args 须双层数组,见 §0。
- 确定性词库+模式扫描
162. safety.temporal_self_test — 时序自检
用途 时序聚合器自检。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"safety","func":"temporal_self_test","args":[[]]}' "acme-stt-001"
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args | array | 是 | — | 固定 [] |
返回示例
{"pass":true,"aggregator":"temporal"}
判定 pass=true 判自检通过
注意
- 本组
args 须双层数组,见 §0。
- 确定性自检,无模型无视频
163. safety.video_moderate — 视频审核
用途 视频安全审核。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"safety","func":"video_moderate","args":[["v.mp4","B7",12]]}' "acme-svm-001" 180
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 视频路径 |
| payload.args[1] | string | 是 | — | 能力:B7 涉黄|B8 暴力|B9 敏感人物 |
| payload.args[2] | number | 否 | 12 | 最大采样帧数 |
返回示例
{"temporal":{"blocked":false},"samples":[{"index":0}]}
判定 有权重按 temporal/frames 判定;无权重按 modelAvailable=false 识别拒答
注意
- 本组
args 须双层数组,见 §0。
- 无权重仍返回采样计划+结构化拒答
164. safety.video_moderate_local — 视频本地审核
用途 视频本地兜底审核。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"safety","func":"video_moderate_local","args":[["v.mp4","B7",12]]}' "acme-svml-001" 180
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 视频路径 |
| payload.args[1] | string | 是 | — | 能力 |
| payload.args[2] | number | 否 | 12 | 最大采样帧数 |
返回示例
{"advisoryDecision":"pass","requiresHumanReview":true}
判定 仅作 advisory;blocked 恒 false
注意
- 本组
args 须双层数组,见 §0。
- 本地兜底(肤色比/红主导+边缘能量);B9 无本地分类器会明示
165. safety.video_sampling — 视频采样
用途 视频均匀+场景切采样。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"safety","func":"video_sampling","args":[["v.mp4"]]}' "acme-svs-001" 120
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 视频路径 |
返回示例
{"samples":[{"index":0,"timestampMs":0}],"sceneCutsDetected":2}
判定 消费 samples/覆盖统计
注意
166. safety.vision_pipeline — 视觉管线
用途 视觉 AI 管线(抠图/分割/风格/修复)。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"safety","func":"vision_pipeline","args":[["F17","",{}]]}' "acme-svp-001" 120
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 能力:F17 人像抠图|F18 实例分割|F19 风格化|F20 修复 |
| payload.args[1] | string | 否 | — | 权重路径 |
| payload.args[2] | object | 否 | {} | 选项 |
返回示例
{"modelAvailable":false,"requiredModel":"modnet.onnx"}
判定 modelAvailable=false 即缺权重拒答
注意
- 本组
args 须双层数组,见 §0。
- 管线完整但均需权重
X 组:HLS 与流(167–186)
HLS 切片、直播、推流与拉流播放。推流前先用 probe_stream 确认源可达。
167. hlshw.adapt — 自适应码率
用途 自适应码率 HLS 打包。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"hlshw","func":"adapt","args":[["in.mp4",{}]]}' "acme-ad-001" 600
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 源视频路径 |
| payload.args[1] | object | 否 | null | 档位选项(rungs 指定则忽略自动 ladder) |
返回示例
{"uri":"file:///…/master.m3u8","rungCount":3}
判定 status=success 且含 uri/path
注意
- 本组
args 须双层数组,见 §0。
- 档位永不超过源分辨率
168. hlshw.authorize_all — 私有授权
用途 私有 URL 批量授权。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"hlshw","func":"authorize_all","args":[["video.m3u8",{"template":"https://x/media/{path}?sig={sig}"}]]}' "acme-aa-001" 60
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 播放列表路径 |
| payload.args[1] | object | 否 | null | URL 模板(含占位符) |
返回示例
{"count":12,"urls":["https://…"]}
判定 status=success 且含 urls/count
注意
- 本组
args 须双层数组,见 §0。
- 不触网,仅计算 URL 列表;设备不签名
169. hlshw.capabilities — HLS 能力探测
用途 HLS 能力清单。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"hlshw","func":"capabilities","args":[[]]}' "acme-hc-001"
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args | array | 是 | — | 固定 [] |
返回示例
{"webrtc":false,"hls":true}
判定 status=success
注意
- 本组
args 须双层数组,见 §0。
- 含 webrtc:false 等缺失声明;调用前先探测
170. hlshw.color_enhance — 色彩增强
用途 视频调色增强。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"hlshw","func":"color_enhance","args":[["in.mp4",{"saturation":1.15}]]}' "acme-ce-001" 600
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 源视频路径 |
| payload.args[1] | object | 否 | null | saturation/contrast/temperature/色域选项 |
返回示例
{"uri":"file:///…/out.mp4","saturation":1.15}
判定 status=success 且含 uri/path
注意
171. hlshw.encrypt — HLS 加密
用途 HLS 分段 AES 加密。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"hlshw","func":"encrypt","args":[["video.m3u8",{"keyTransport":"plain"}]]}' "acme-he-001" 120
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 播放列表路径 |
| payload.args[1] | object | 否 | null | keyHex/keyFileName/keyBaseUrl/expiresInSec 等 |
返回示例
{"playlistUri":"file:///…/video.m3u8","roundTripVerified":true}
判定 status=success 且 roundTripVerified=true
注意
- 本组
args 须双层数组,见 §0。
- 原地加密写 EXT-X-KEY;每段写前重解密校验
172. hlshw.hdr_to_sdr — HDR 转 SDR
用途 HDR 转 SDR。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"hlshw","func":"hdr_to_sdr","args":[["hdr.mp4",{"nits":1000}]]}' "acme-hs-001" 600
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 源视频路径 |
| payload.args[1] | object | 否 | null | nits/videoCodec/bitrate/saturation 等 |
返回示例
{"uri":"file:///…/sdr.mp4","peakNits":1000}
判定 status=success 且含 uri/path
注意
- 本组
args 须双层数组,见 §0。
- 线性 toneMap + BT.2020→BT.709
173. hlshw.live_audio_transcode — 音频直播转码
用途 音频直播(AAC-LC LL-HLS)。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"hlshw","func":"live_audio_transcode","args":[["in.mp4",{"sessionId":"a1","segTime":2}]]}' "acme-lat-001" 60
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 源路径 |
| payload.args[1] | object | 否 | null | sessionId 必填;segTime/audioBitrate 等 |
返回示例
{"sessionId":"a1","running":true}
判定 status=success 即会话创建成功
注意
- 本组
args 须双层数组,见 §0。
- sessionId 在 options 内;仅 AAC-LC
174. hlshw.live_playlist — 直播播放列表
用途 查询直播会话播放列表。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"hlshw","func":"live_playlist","args":[["s1"]]}' "acme-lp-001"
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 直播会话 ID |
返回示例
{"sessionId":"s1","segments":12}
判定 status=success
注意
- 本组
args 须双层数组,见 §0。
- 单参,非 [src,options] 形态
175. hlshw.live_remux — 直播重封装
用途 直播重封装(无损)。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"hlshw","func":"live_remux","args":[["in.mp4",{"sessionId":"s1","hlsTime":2}]]}' "acme-lr-001" 60
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 源路径 |
| payload.args[1] | object | 否 | null | sessionId 必填;hlsTime/windowSize 等 |
返回示例
{"sessionId":"s1","running":true}
判定 status=success 即会话创建成功
注意
- 本组
args 须双层数组,见 §0。
- stream-copy 无损,比 live_transcode 省
176. hlshw.live_transcode — 直播转码
用途 直播转码。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"hlshw","func":"live_transcode","args":[["in.mp4",{"sessionId":"s1","hlsTime":2}]]}' "acme-lt-001" 60
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 源路径 |
| payload.args[1] | object | 否 | null | sessionId 必填;分辨率/码率/编码等 |
返回示例
{"sessionId":"s1","running":true}
判定 status=success 即会话创建成功
注意
- 本组
args 须双层数组,见 §0。
- 重编码 LL-HLS;webrtc 恒 false
177. hlshw.play_stream — 拉流
用途 拉流到本地文件。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"hlshw","func":"play_stream","args":[["rtsp://host/live/s",{"dstPath":"/data/out.mp4"}]]}' "acme-ps-001" 120
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 流地址(原样透传) |
| payload.args[1] | object | 否 | null | dstPath 必填 |
返回示例
{"uri":"file:///…/out.mp4","bytes":48210}
判定 status=success
注意
- 本组
args 须双层数组,见 §0。
- RTSP 拉流;RTMP 地址被拒(平台解复用无 RTMP)
178. hlshw.private_m3u8 — 私有播放列表
用途 私有签名播放列表。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"hlshw","func":"private_m3u8","args":[["video.m3u8",{"template":"https://x/media/{path}?sig={sig}"}]]}' "acme-pm-001" 60
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 播放列表路径 |
| payload.args[1] | object | 否 | null | template 必填;md5/hmac/secret 等 |
返回示例
{"uri":"file:///…/video.m3u8","signedUriCount":12}
判定 status=success 且含 signedUris
注意
- 本组
args 须双层数组,见 §0。
- 设备不签名,仅填充后端给的 md5/hmac
179. hlshw.probe_stream — 流探测
用途 流可达性探测。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"hlshw","func":"probe_stream","args":[["rtmp://host/live/s"]]}' "acme-prb-001" 60
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 流地址 |
返回示例
{"reachable":true,"protocol":"rtmp","handshake":"simple; server replied with S0/S1/S2"}
判定 status=success 且 reachable=true
注意
- 本组
args 须双层数组,见 §0。
- RTMP/RTSP 可达性检查
180. hlshw.push_stream — RTMP 推流
用途 RTMP 推流。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"hlshw","func":"push_stream","args":[["in.mp4",{"rtmpUrl":"rtmp://host/live/key","sessionId":"s1"}]]}' "acme-pu-001" 120
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 本地文件路径 |
| payload.args[1] | object | 否 | null | rtmpUrl 必填;sessionId 必填 |
返回示例
{"published":true,"videoTags":150,"samples":150,"protocol":"rtmp","handshake":"simple (C0/C1 -> S0/S1/S2 -> C2)"}
判定 status=success 且 published=true
注意
- 本组
args 须双层数组,见 §0。
- 自研 RTMP 客户端:握手/connect/publish + FLV tag
181. hlshw.sdr_to_hdr — SDR 转 HDR
用途 SDR 转 HDR。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"hlshw","func":"sdr_to_hdr","args":[["in.mp4",{"nits":1000}]]}' "acme-sh-001" 600
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 源视频路径 |
| payload.args[1] | object | 否 | null | nits/videoCodec/bitrate 等 |
返回示例
{"uri":"file:///…/sdr_hdr.mp4","peakNits":1000}
判定 status=success 且含 uri/path
注意
- 本组
args 须双层数组,见 §0。
- BT.709→BT.2020,10bit 输出,默认 h265
182. hlshw.slice — HLS 切片
用途 HLS 切片。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"hlshw","func":"slice","args":[["in.mp4",{"outDir":"/sdcard/hls","hlsTime":6}]]}' "acme-sl-001" 300
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 源视频路径 |
| payload.args[1] | object | 否 | null | outDir/basename/hlsTime/format/playlistType 等 |
返回示例
{"uri":"file:///…/video.m3u8","segmentCount":2}
判定 status=success 且含 uri/segments
注意
- 本组
args 须双层数组,见 §0。
- 每段以关键帧起始可独立解码
183. hlshw.stop_live — 停止直播
用途 停止直播会话。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"hlshw","func":"stop_live","args":[["s1"]]}' "acme-stl-001"
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 直播会话 ID |
返回示例
{"sessionId":"s1","stopped":1}
判定 status=success 且含 sessionId
注意
- 本组
args 须双层数组,见 §0。
- 单参,停止并释放会话
184. hlshw.super_resolve — 视频超分
用途 视频超分。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"hlshw","func":"super_resolve","args":[["in.mp4",{"scale":2}]]}' "acme-hsr-001" 600
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 源视频路径 |
| payload.args[1] | object | 否 | null | scale/modelPath/sharpness/编码等 |
返回示例
{"uri":"file:///…/out.mp4","scale":2,"aiModel":false}
判定 含 uri 则成功;含 error+requiredModel 为缺模型
注意
- 本组
args 须双层数组,见 §0。
- 无 modelPath 走 GPU 插值(aiModel:false)
185. hlshw.super_resolve_face — 人脸超分
用途 人脸区域超分。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"hlshw","func":"super_resolve_face","args":[["in.mp4",{"scale":2,"face":{"x":0.2,"y":0.2,"w":0.3,"h":0.3}}]]}' "acme-hsrf-001" 600
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 源视频路径 |
| payload.args[1] | object | 否 | null | scale/face(归一化框)/faceBoost 等 |
返回示例
{"uri":"file:///…/out.mp4","faceBoost":1}
判定 status=success 且含 uri
注意
- 本组
args 须双层数组,见 §0。
- 人脸框为必需输入,不猜 ROI
186. hlshw.aifast — AI 快剪
用途 AI 快剪(超分路由)。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"hlshw","func":"aifast","args":[["in.mp4",{"superResolution":2,"srMode":"base"}]]}' "acme-aif-001" 600
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 源视频路径 |
| payload.args[1] | object | 否 | null | superResolution(2|3)/srMode/faceFilter 等 |
返回示例
{"srMode":"base","uri":"file:///…/out.mp4"}
判定 含 srMode+uri 则成功
注意
- 本组
args 须双层数组,见 §0。
- superResolution 非 2/3 直接报错
Y 组:数学与系统(187–192)
四则运算与应用管理。均为轻量调用,可直接验证。
187. math.add — 加法
用途 两数相加。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"math","func":"add","args":[1,2]}' "acme-madd-001"
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | number | 是 | — | 加数 a |
| payload.args[1] | number | 是 | — | 加数 b |
返回示例
3
判定 status=success 且 result 为 3
注意
188. math.sub — 减法
用途 两数相减。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"math","func":"sub","args":[5,2]}' "acme-msub-001"
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | number | 是 | — | 被减数 |
| payload.args[1] | number | 是 | — | 减数 |
返回示例
3
判定 status=success 且 result 为 3
注意
189. math.mul — 乘法
用途 两数相乘。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"math","func":"mul","args":[3,4]}' "acme-mmul-001"
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | number | 是 | — | 乘数 a |
| payload.args[1] | number | 是 | — | 乘数 b |
返回示例
12
判定 status=success 且 result 为 12
注意
190. math.div — 除法
用途 两数相除。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"math","func":"div","args":[7,2]}' "acme-mdiv-001"
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | number | 是 | — | 被除数 |
| payload.args[1] | number | 是 | — | 除数(非零) |
返回示例
3.5
判定 status=success 且 result 为 3.5
注意
191. system.reload — 重启应用
用途 重启端侧应用。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"system","func":"reload","args":[]}' "acme-srl-001"
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args | array | 是 | — | 固定 [] |
返回示例
{"reloading":true}
判定 status=success
注意
192. system.download_file — 下载文件
用途 下载文件到端侧。本组 args 须双层数组,见 §0。
调用前需满足
- 请求头需带有效的
X-Admin-Key
- 输入文件需已在端上,用
file.download 取得
请求示例
post_task script '{"module":"system","func":"download_file","args":["https://example.com/a.png","a.png"]}' "acme-sdl-001" 300
请求字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
| payload.args[0] | string | 是 | — | 下载 URL |
| payload.args[1] | string | 是 | — | 落盘相对路径 |
返回示例
{"uri":"file:///…/a.png","bytes":48210}
判定 status=success
注意
- 平铺风格。
- 长耗时务必调大 timeout_sec
排障与设备维护
错误码对照、连通性自检、设备恢复与指定设备等运维内容在独立页面。
open troubleshooting.html
更新记录
- 2026-10-10:补全 54–192 共 139 项能力(N–Y 组);导航统一为"编号.中文名"。
- 2026-10-10:52–53(rknn.detect、infer fullOutput)归入 H 组 NPU 推理,取消按时间命名的"新增能力"分组。
- 2.0.50:新增 rknn.detect(YOLO 目标检测)与 rknn.infer fullOutput 模式(取回完整原始张量)。