因此我可以使用快速入门中给出的示例视频向视频智能 API 发出有效请求。https://cloud.google.com/video-intelligence/docs/getting-started我也尝试了许多不同的方式来验证 api。我使用的 API 令牌是从控制台中的凭据页面创建的。没有选项可以将它绑定到视频 api,所以我认为它应该自动工作。API 已在我的帐户上启用。
export TOKEN="foobar"
curl -XPOST -s -k -H"Content-Type: application/json" "https://videointelligence.googleapis.com/v1beta1/videos:annotate?key=$TOKEN" --data '{"inputUri": "gs://custom-bucket/IMG_3591.mov", "features": ["LABEL_DETECTION"]}'
{
"error": {
"code": 403,
"message": "The caller does not have permission",
"status": "PERMISSION_DENIED"
}
}
curl -XPOST -s -k -H"Content-Type: application/json" "https://videointelligence.googleapis.com/v1beta1/videos:annotate?key=$TOKEN" --data '{"inputUri": "gs://cloud-ml-sandbox/video/chicago.mp4", "features": ["LABEL_DETECTION"]}'
{
"name": "us-east1.18013173402060296928"
}
更新:
我将文件设置为公共文件并且它有效。但我需要以私有方式访问它,因此我授予服务帐户访问文件的权限并尝试获取建议的 API 密钥。
export TOKEN="$(gcloud auth print-access-token)"
curl -XPOST -s -k -H"Content-Type: application/json" "https://videointelligence.googleapis.com/v1beta1/videos:annotate?key=$TOKEN" --data '{"inputUri": "gs://custom-bucket/IMG_3591.mov", "features":["LABEL_DETECTION"]}'
{
"error": {
"code": 400,
"message": "API key not valid. Please pass a valid API key.",
"status": "INVALID_ARGUMENT",
"details": [
{
"@type": "type.googleapis.com/google.rpc.Help",
"links": [
{
"description": "Google developers console",
"url": "https://console.developers.google.com"
}
]
}
]
}
}
此 print-access-token 函数返回的令牌似乎不起作用。我确实有一个 API 密钥,但它无权访问存储桶,而且我看不到提供 API 密钥访问权限的方法。
更新 2:
所以看起来我们设置的令牌是错误的。我们按照这个示例https://cloud.google.com/video-intelligence/docs/analyze-labels#videointelligence-label-file-protocol获取 apiKey=$TOKEN 。但看起来我们需要设置 Bearer Header。我们一开始确实尝试过,但我们遇到了第一个问题,即无法访问存储桶。所以谢谢。