Roboflow提供了一个强大的视频推理API,通过这个API,用户可以上传视频文件,调度推理任务,并查询任务状态。以下是API的详细使用方法。
首先,需要通过POST请求上传视频文件。使用以下URL:
https://api.roboflow.com/video_upload_signed_url/?api_key={{WORKSPACE_API_KEY}}
在请求体中,需要提供视频文件的名称,格式如下:
{
"file_name": "my_video_file.mp4"
}
成功上传后,将获得一个签名的URL,用于上传视频文件。可以使用任何支持POST请求的工具(如curl)将视频文件上传到该URL。
接下来,可以通过POST请求调度一个视频推理任务。使用以下URL:
https://api.roboflow.com/videoinfer/?api_key={{WORKSPACE_API_KEY}}
在请求体中,需要提供输入视频的URL、推理帧率以及要使用的模型信息。例如:
{
"input_url": "{{INPUT_URL}}",
"infer_fps": 5,
"models": [
{
"model_id": "rock-paper-scissors-presentation",
"model_version": "4",
"inference_type": "object-detection"
}
]
}
推理帧率(infer_fps)应至少设置为1,且不应超过视频帧率。对于大多数用例,视频帧率是推理帧率的整数倍。可以在models数组中指定多个模型。
成功调度任务后,将收到一个JSON字符串作为响应,其中包含任务ID(job_id)和消息(message)。例如:
{
"job_id": "fec28362-f7d9-4cc0-a805-5e94495d063d",
"message": "This endpoint will create videojob"
}
最后,可以通过GET请求查询推理任务的当前状态。使用以下URL:
https://api.roboflow.com/videoinfer/?api_key={{WORKSPACE_API_KEY}}&job_id={{JOB_ID}}
请注意,此端点有速率限制,请不要每分钟查询超过一次。
当任务成功时,返回的JSON中的status键将设置为0,output_signed_url键将包含视频推理结果的下载链接。如果status设置为1,则表示任务处理尚未完成。任何更高的值表示任务失败。
一旦从output_signed_url位置下载了JSON文件,就可以解析它以获取推理信息。JSON文件的格式在这里有详细描述。