请求视频注释时无法从curl返回

时间:2017-12-07 17:28:35

标签: video-intelligence-api

嗨,我按照说明here请求视频注释处理。

curl -s -H 'Content-Type: application/json' -H 'Authorization: Bearer ACCESS_TOKEN_PASTED_HERE' 'https://videointelligence.googleapis.com/v1/videos:annotate' -d @request.json

我的json文件包含存储在项目存储桶中的视频文件的公共链接。

    {
   "inputUri":"https://storage.googleapis.com/PROJECT_URL_HERE/video.mp4",
   "features": [
       "LABEL_DETECTION"
    ]
    }

我应该得到一个带有操作名称的回复:

  

Video Intelligence API会创建一个处理您的操作的操作   请求。响应包括操作名称:

     

{" name":" us-west1.18358601230245040268" }

我得到的实际结果是什么,甚至不是错误。等待一会儿空白命令行。

我的信息中心显示了我的凭据的成功创建,但在视频智能API上没有显示任何活动。

谢谢!

1 个答案:

答案 0 :(得分:2)

inputUri字段必须是gs://BUCKET_NAME/path/to/video格式的有效GCS路径,如here所述,而不是您正在使用的https://storage.googleapis.com链接。否则,它应该返回google.rpc.Code.INVALID_ARGUMENT。如果您没有获得任何输出,则可能是语法错误(请参阅下面的步骤)。就我而言,它写着:

{
  "error": {
    "code": 400,
    "message": "Request contains an invalid argument.",
    "status": "INVALID_ARGUMENT"
  }
}

相反,如果您在gs://中使用request.json格式的公开示例之一:

{
   "inputUri":"gs://cloud-ml-sandbox/video/chicago.mp4",
   "features": [
       "LABEL_DETECTION"
   ]
}

然后激活服务帐户并通过运行以下命令请求视频注释:

gcloud auth activate-service-account --key-file=/path/to/credentials.json
curl -s -H "Content-Type: application/json" \
        -H "Authorization: Bearer $(gcloud auth print-access-token)" \
           "https://videointelligence.googleapis.com/v1/videos:annotate" \
        -d @request.json

您会收到如下回复:

{
  "name": "europe-west1.16***************80"
}

获得操作名称后,您可以使用以下方式检查状态:

curl -s -H "Content-Type: application/json" \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://videointelligence.googleapis.com/v1/operations/europe-west1.16***************80" > result.json

验证是否已完成:

cat result.json | grep done

如果完成,则输出:

"done": true,

result.json将包含请求的注释:

"annotationResults": [
  {
    "inputUri": "/cloud-ml-sandbox/video/chicago.mp4",
    "segmentLabelAnnotations": [
      {
        "entity": {
          "entityId": "/m/0pg52",
          "description": "taxi",
          "languageCode": "en-US"
        },
        ...