HTTP结果回调
更新时间:2022-06-23
说明
当用户需要获取EdgeBoard的分析结果时,EdgeBoard开发管理平台支持将视频流任务结果通过HTTP协议推送到指定地址,方便客户进行二次开发。
HTTP回调方式:EdgeBoard ----- post -----> 用户服务器
EdgeBoard <------ response---- 用户服务器
HTTP回调接口:http://ip:port/xxxxxxx 。该接口由用户定义,不做固定格式要求。
回调功能设置
添加任务时,可设置回调功能
回调状态:勾选【启用】会开启回调功能;勾选【禁用】会关掉回调功能;
回调地址:用户实际回调服务地址(图中地址仅作展示),开启回调后,设备会将结果数据发送至该地址;
回调条件:回调结果支持基于模型标签(label)进行条件筛选,增加回调条件后,服务器就会得到筛选后的数据;
回调图片:回调图片仅指回调参数中“background”的返回值,【原图】指返回的background为不带渲染的base64图片,【原图+渲染】指返回的background为不带渲染的base64图片,【无图片】则回调结果中不返回background参数。由于回调中返回图片会占用大量的资源和带宽,实际使用时推荐选择【无图片】选项。
HTTP回调协议
HTTP请求方法:post
URI:客户自定义
Request:
Post request(content-type: application/json; charset=UTF-8):
Response 返回:
Http Status 200 (ok)
数据返回格式
{
"task_id":0, //任务ID号
"task_type":"eb::vehicle_tracking", //任务类型
"camera_id":0, //摄像头ID号
"camera_name":"rtsp_camera", //摄像头名称
"camera_sn":"xafasfajfasdfas", //摄像头SN码
"model_id":0, //模型ID号
"background":"base64xxxxxxxxxxxx",//背景图片,勾选页面中【回调图片】和【是否渲染】,会返回该字段
"height":1920, //回调图片的高
"width":1080, //回调图片的宽
"time":"1637218917000", //回调图片时间戳
"result_data":[ //推理结果
{
"track_id":0,//跟踪的模型支持该字段
"image_data":xxxxx,
"label_id":0,
"label_name":"fire",
"score":0.83354",
"x0":0.1, //左上角、右下角坐标
"y0":0.1,
"x1":0.2,
"y1":0.2
},
....
],
"fence_data":[//画面框定信息
{
"id":0,
"name":"停车位1",
"coordinates":[
[0.1,0.1],
[0.2,0.2],
[0.3,0.3]
]
},
{
"id":1,
"name":"停车位2",
"coordinates":[
[0.1,0.1],
[0.2,0.2],
[0.3,0.3],
[0.4,0.4]
]
}
]
}
HTTP回调接口搭建示例
import base64
import tornado.ioloop
import tornado.web
import json
import time
class MainHandler(tornado.web.RequestHandler):
def get(self):
self.write("Hello, world")
def post(self):
post_data = self.request.body.decode('utf-8')
json_data = json.loads(post_data)
#print(json_data)
self.set_status(200)
print (json.dumps(json_data, ensure_ascii=False, indent=4))
self.finish()
def make_app():
return tornado.web.Application([
(r"/httpcallback", MainHandler),
])
if __name__ == "__main__":
app = make_app()
app.listen(8888)
tornado.ioloop.IOLoop.current().start()