褐马智能边缘计算云-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)
TFLiteTensorFlow Lite 模型格式(.tflite),在 GPU 上运行
INT8 / FP16模型量化精度。INT8 体积小速度快,FP16 精度更高;同一模型两种精度可分别注册
NMS非极大值抑制。检测出重叠框后只保留置信度最高的那个
IoU交并比。两个框重叠程度的度量,NMS 依据它判断是否重复
letterbox等比缩放并补灰边,使图片不变形地填满模型输入尺寸。返回的 result.letterbox 含换算参数
arm64-v8a64 位 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 个月过渡期,再移除。

#能力说明
1vision.image_labeling图像打标
2vision.face_detection人脸检测
3vision.translate_text离线文本翻译
4vision.barcode_scan条码扫描
5vision.identify_language语种识别
6system.ocr离线图片文字识别
7image.resize缩放图片
8image.compress压缩图片
9image.crop裁剪图片
10image.rotate旋转图片
11image.flip翻转图片
12image.format_convert转换图片格式
13image.thumbnail生成缩略图
14imagehw.batch_resize批量缩放图片
15imagehw.rotate硬件旋转图片
16imagehw.convert_format硬件转换格式
17imagehw.watermark添加水印
18imagehw.thumbnail硬件缩略图
19imagehw.jpeg_encode硬件 JPEG 编码
20gpu.blur高斯模糊
21gpu.grayscale转灰度
22gpu.sharpen锐化
23gpu.tflite_gpuGPU 运行 TFLite 模型
24video.extract_thumbnail提取视频封面
25video.extract_frames批量抽帧
26video.get_metadata读取视频信息
27videohw.extract_frames硬件批量抽帧
28videohw.transcode硬件视频转码
29videohw.get_metadata硬件读取视频信息
30speech.transcribe实时麦克风转文字
31speech.transcribe_file音频文件转文字
32speech.status语音模块自检
33speech.release释放语音模型
34rknn.inferRKNN 模型推理
35rknn.load_model加载 RKNN 模型
36rknn.release释放 NPU 模型
37system.sync_models同步 AI 模型
38crypto.gen_keys生成密钥对
39crypto.aes_encryptAES-GCM 加密
40crypto.aes_decryptAES-GCM 解密
41crypto.rsa_signRSA 签名
42crypto.rsa_verifyRSA 验签
43rag.ingest文档入库
44rag.search语义检索
45rag.answer基于知识库问答
46batch.process通用批量子集处理
47batch.ocr批量图片识别文字
48batch.image_batch批量图片处理
49batch.hash_batch批量文件哈希
50file.upload端上文件上传七牛
51file.download下载七牛文件到端上
52rknn.detectYOLO 目标检测(数据级)
53rknn.infer fullOutput 模式取回完整原始张量
54audiohw.probe_audio音频编码能力探测
55audiohw.get_metadata读取音频信息
56audiohw.extract_audio提取音频
57audiohw.transcode音频转码
58audiohw.denoise音频降噪
59audiohw.remove_audio剥离音轨
60audiohw.replace_audio替换音轨
61audiohw.mix_audio混音
62audiohw.set_volume调音量
63remuxhw.avinfo媒体探针
64remuxhw.remux容器重封装
65remuxhw.segment无损切片
66remuxhw.transcode视频转码
67remuxhw.private_encrypt私有加密
68remuxhw.private_decrypt私有解密
69remuxhw.list_encoders编码器清单
70videoedithw.watermark视频水印
71videoedithw.concat_video视频拼接
72videoedithw.concat_audio音频拼接
73videoedithw.add_subtitle字幕处理
74videoedithw.mix_audio视频混音
75videoedithw.replace_audio视频换音轨
76videoedithw.mosaic马赛克
77videoedithw.remove_streams轨道过滤
78videoedithw.list_capabilities编辑能力探测
79imageproc.animate生成动图
80imageproc.avif_compressAVIF 压缩
81imageproc.blind_watermark盲水印嵌入
82imageproc.blind_watermark_extract盲水印提取
83imageproc.capabilities图像能力探测
84imageproc.exif读取 EXIF
85imageproc.heif_compressHEIF 压缩
86imageproc.image_ave平均色调
87imageproc.image_density读写 DPI
88imageproc.image_exif_retainEXIF 保留/剥离
89imageproc.image_info图片信息
90imageproc.image_mogr2图片规范化
91imageproc.image_mogr2_ext图片规范化扩展
92imageproc.image_slim图片瘦身
93imageproc.jpeg_progressive渐进 JPEG
94imageproc.png_adam7隔行 PNG
95imageproc.round_pic圆角图片
96imageproc.stitch全景拼接
97imageproc.style_apply应用样式
98imageproc.style_delete删除样式
99imageproc.style_get读取样式
100imageproc.style_list样式列表
101imageproc.style_save保存样式
102imageproc.super_resolution图片超分
103imageproc.watermark图片水印
104filehw.capabilities文件能力探测
105filehw.concat文件拼接
106filehw.md2htmlMarkdown 转 HTML
107filehw.html2mdHTML 转 Markdown
108filehw.mkzip打包 ZIP
109filehw.probe文件探测
110filehw.probe_all批量文件探测
111filehw.qhash文件哈希
112filehw.qhash_all全量文件哈希
113filehw.qrcode生成二维码
114spritehw.sprite视频雪碧图
115spritehw.vsample_sprite视频采样雪碧图
116spritehw.sprite_info雪碧图规划
117spritehw.capabilities雪碧图能力探测
118provider.capabilities供应商能力
119provider.local_validate本地证件校验
120provider.verify_identity身份核验
121provider.audit_probe审核探针
122provider.audit_list审核厂商列表
123provider.audit_submit提交审核
124provider.audit_query查询审核
125provider.audit_callback审核回调
126provider.audit_log审核日志
127provider.configure_provider配置供应商
128provider.clear_idempotency清理幂等缓存
129ortdora.probeORT 探针
130ortdora.moderate_image图片审核
131ortdora.detect_faces人脸检测
132ortdora.embed_faces人脸向量
133ortdora.compare_faces人脸 1:1 比对
134ortdora.search_faces人脸 1:N 检索
135ortdora.portrait_matte人像抠图
136ortdora.super_resolve图片超分
137ortdora.release_models释放 ORT 模型
138ocr.audio_moderation文本风控
139ocr.comment_filter评论过滤
140ocr.long_speech长语音转写
141ocr.plan_segments切分规划
142ocr.probeOCR/ASR 探针
143ocr.recognize图片文字识别
144ocr.recognize_document票据识别
145ocr.release_asr释放 ASR
146ocr.short_speech短语音转写
147ocr.text_filter文本过滤
148ocr.validate规则校验
149safety.aggregate_frames多帧聚合判定
150safety.anti_replay翻拍检测
151safety.capabilities安全能力探测
152safety.detect_ad广告检测
153safety.face_cluster人脸聚类
154safety.face_compare人脸向量比对
155safety.face_quality人脸质量
156safety.face_search向量检索
157safety.image_moderate图片审核
158safety.image_quality图像质量
159safety.liveness活体检测
160safety.refine_matte抠图精修
161safety.scan_ad_text广告文本扫描
162safety.temporal_self_test时序自检
163safety.video_moderate视频审核
164safety.video_moderate_local视频本地审核
165safety.video_sampling视频采样
166safety.vision_pipeline视觉管线
167hlshw.adapt自适应码率
168hlshw.authorize_all私有授权
169hlshw.capabilitiesHLS 能力探测
170hlshw.color_enhance色彩增强
171hlshw.encryptHLS 加密
172hlshw.hdr_to_sdrHDR 转 SDR
173hlshw.live_audio_transcode音频直播转码
174hlshw.live_playlist直播播放列表
175hlshw.live_remux直播重封装
176hlshw.live_transcode直播转码
177hlshw.play_stream拉流
178hlshw.private_m3u8私有播放列表
179hlshw.probe_stream流探测
180hlshw.push_streamRTMP 推流
181hlshw.sdr_to_hdrSDR 转 HDR
182hlshw.sliceHLS 切片
183hlshw.stop_live停止直播
184hlshw.super_resolve视频超分
185hlshw.super_resolve_face人脸超分
186hlshw.aifastAI 快剪
187math.add加法
188math.sub减法
189math.mul乘法
190math.div除法
191system.reload重启应用
192system.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否jpegjpeg|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,宽高随角度互换
注意
  • 90/270 度会交换宽高

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 等于请求格式
注意
  • 未知格式会回落到 JPEG

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
注意
  • 默认最长边 256,等比缩放;输出为同目录新文件

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
注意
  • 质量范围 1–100,数值越高质量越好、体积越大

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 非空
注意
  • 走 Skia GPU 通路,输出为同目录新文件

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 非空
注意
  • 单帧抽取典型耗时 0.5 秒量级

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.argsarray是—固定 []
返回示例
{"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.argsarray是—固定 []
返回示例
{"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.argsarray是—固定 []
返回示例
{"released":true}
判定 result.released=true
注意
  • 不释放也不影响后续加载;长时间连续调用建议释放

37. system.sync_models — 同步 AI 模型

用途 拉取模型清单并逐个下载,每份校验大小与 sha256,写入版本化目录后更新 current 指针。返回 installed / confirmed / failed 三个列表。首次执行 NPU 推理前需先调用一次。
调用前需满足
  • 请求头需带有效的 X-Admin-Key
请求示例
post_task script '{"module":"system","func":"sync_models","args":[]}' "acme-syncm-001" 900
请求字段
字段类型必填默认值说明
payload.argsarray是—固定 [],无需参数
返回示例
{"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].confnumber否0.25置信度阈值
payload.args[2].iounumber否0.45NMS IoU 阈值
payload.args[2].maxnumber否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].fullOutputboolean否—置 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 — 文档入库

用途 把一段文本切块、向量化后写入端侧知识库,供后续检索与问答。
调用前需满足
  • 请求头需带有效的 X-Admin-Key
请求示例
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 个片段。
调用前需满足
  • 请求头需带有效的 X-Admin-Key
请求示例
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 为数组
注意
  • 先 #43 入库再检索;空库时返回空数组不报错

45. rag.answer — 基于知识库问答

用途 先检索再结合召回内容生成答案,适合直接对用户展示。
调用前需满足
  • 请求头需带有效的 X-Admin-Key
请求示例
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 非空
注意
  • 答案基于端侧知识库,不调用外部大模型 API

K 组:批量处理(46–49)

一次处理一批文件,替代逐条下发。

46. batch.process — 通用批量子集处理

用途 通用入口,由后端下发的 batch_func 决定对分片做什么。适合编排平台下发的结构化批任务。
调用前需满足
  • 请求头需带有效的 X-Admin-Key
请求示例
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,比逐张下发快一个数量级。
调用前需满足
  • 请求头需带有效的 X-Admin-Key
请求示例
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,用于端侧资产完整性核对。模型分发校验的同一套能力。
调用前需满足
  • 请求头需带有效的 X-Admin-Key
请求示例
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
请求字段
字段类型必填默认值说明
typestring是—固定 file
payload.actionstring是—固定 upload
payload.localPathstring是—端侧文件路径
payload.filenamestring是—上传后的文件名
payload.mimeTypestring否—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/&lt;uuid&gt;/result.txt","localPath":"back.txt"}' "acme-dn-001" 180
请求字段
字段类型必填默认值说明
typestring是—固定 file
payload.actionstring是—固定 download
payload.keystring是—七牛对象 key,须在本设备命名空间内
payload.localPathstring是—落地路径
返回示例
{"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。
调用前需满足
  • 请求头需带有效的 X-Admin-Key
请求示例
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.argsarray是—固定 []
返回示例
{"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否nullmode: 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否nullmode/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否nullmode: 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否nullremoveIndexes 优先于 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.argsarray是—固定 []
返回示例
{"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是texttext 文本或 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.argsarray是—固定 []
返回示例
{"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否0dpi>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 为真
注意
  • 本组 args 须双层数组,见 §0。

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 为真
注意
  • 本组 args 须双层数组,见 §0。

100. imageproc.style_list — 样式列表

用途 列出全部图片样式。
调用前需满足
  • 请求头需带有效的 X-Admin-Key
  • 输入文件需已在端上,用 file.download 取得
请求示例
post_task script '{"module":"imageproc","func":"style_list","args":[[]]}' "acme-sl2-001"
请求字段
字段类型必填默认值说明
payload.argsarray是—固定 []
返回示例
{"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否enhancednormal 双三次或 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.argsarray是—固定 []
返回示例
{"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
注意
  • 本组 args 须双层数组,见 §0。

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
注意
  • 本组 args 须双层数组,见 §0。

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否etagetag|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.argsarray是—固定 []
返回示例
{"sheet":true,"maxCells":100}
判定 status=success
注意
  • 本组 args 须双层数组,见 §0。

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.argsarray是—固定 []
返回示例
{"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
注意
  • 本组 args 须双层数组,见 §0。

122. provider.audit_list — 审核厂商列表

用途 全部审核厂商与配置状态。
调用前需满足
  • 请求头需带有效的 X-Admin-Key
  • 输入文件需已在端上,用 file.download 取得
请求示例
post_task script '{"module":"provider","func":"audit_list","args":[[]]}' "acme-al-001"
请求字段
字段类型必填默认值说明
payload.argsarray是—固定 []
返回示例
{"providers":[{"id":"qiniu-censor","configured":true}]}
判定 status=success
注意
  • 本组 args 须双层数组,见 §0。

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
注意
  • 本组 args 须双层数组,见 §0。

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.argsarray是—固定 []
返回示例
{"cleared":true}
判定 status=success
注意
  • 本组 args 须双层数组,见 §0。

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.argsarray是—固定 []
返回示例
{"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.4NMS 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.argsarray是—固定 []
返回示例
{"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.argsarray是—固定 []
返回示例
{"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
注意
  • 本组 args 须双层数组,见 §0。

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.argsarray是—固定 []
返回示例
{"available":["face_quality"],"missing":["arcface"]}
判定 先调本函数;available 含目标能力才可派发
注意
  • 本组 args 须双层数组,见 §0。

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否connectedconnected|average|dbscan
payload.args[2]number否0相似度阈值
payload.args[3]number否0dbscan 最小点数
返回示例
{"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否bruteforcebruteforce|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.argsarray是—固定 []
返回示例
{"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/覆盖统计
注意
  • 本组 args 须双层数组,见 §0。
  • 完全可用

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否nullURL 模板(含占位符)
返回示例
{"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.argsarray是—固定 []
返回示例
{"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否nullsaturation/contrast/temperature/色域选项
返回示例
{"uri":"file:///…/out.mp4","saturation":1.15}
判定 status=success 且含 uri/path
注意
  • 本组 args 须双层数组,见 §0。

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否nullkeyHex/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否nullnits/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否nullsessionId 必填;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否nullsessionId 必填;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否nullsessionId 必填;分辨率/码率/编码等
返回示例
{"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否nulldstPath 必填
返回示例
{"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否nulltemplate 必填;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否nullrtmpUrl 必填;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否nullnits/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否nulloutDir/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否nullscale/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否nullscale/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否nullsuperResolution(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.argsarray是—固定 []
返回示例
{"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 模式(取回完整原始张量)。