Нет возврата из curl при запросе аннотации видео

Привет, я следую инструкциям здесь, чтобы запросить обработку аннотации видео.

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"
    ]
    }

Я должен получить ответ с именем операции:

API-интерфейс Video Intelligence создает операцию для обработки вашего запроса. Ответ включает название операции:

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

Фактический результат, который я получаю, - ничто, даже ошибка. Минутное ожидание, за которым следует пустая командная строка.

Моя панель инструментов показывает успешное создание учетных данных, но не показывает активности в API-интерфейсе Video Intelligence.

Спасибо!

1 ответ

inputUri поле должно быть действительным путем GCS в формате gs://BUCKET_NAME/path/to/video как объяснено здесь, а не 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"
        },
        ...
Другие вопросы по тегам