Organize recursos com etiquetas

Esta página mostra como adicionar e ver etiquetas em recursos da API Transcoder. As etiquetas são pares de chave-valor que pode usar para organizar recursos. Pode anexar uma etiqueta a recursos individuais e, em seguida, filtrar os recursos com base nas respetivas etiquetas. As informações sobre as etiquetas são encaminhadas para o sistema de faturação, para que possa discriminá-las por etiqueta.

Pode adicionar etiquetas quando cria tarefas e modelos de tarefas da API Transcoder. Se criar uma tarefa com base num modelo de tarefa que contenha etiquetas, a tarefa vai conter as mesmas etiquetas que o modelo de tarefa. Para substituir as etiquetas do modelo de tarefa, pode especificar diretamente as etiquetas na própria tarefa.

As etiquetas estão disponíveis através das APIs REST ou RPC. As etiquetas não estão disponíveis na CLI gcloud nem na Google Cloud consola.

Requisitos de etiquetas

As etiquetas aplicadas a um recurso têm de cumprir os seguintes requisitos:

  • Cada recurso pode ter várias etiquetas, até um máximo de 64.
  • Cada etiqueta tem de ser um par chave-valor.
  • As chaves têm um comprimento mínimo de 1 caráter e um comprimento máximo de 63 carateres, e não podem estar vazias. Os valores podem estar vazios e ter um comprimento máximo de 63 carateres.
  • As chaves e os valores só podem conter letras minúsculas, carateres numéricos, sublinhados e travessões. Todos os carateres têm de usar a codificação UTF-8 e são permitidos carateres internacionais.
  • A chave de uma etiqueta tem de ser exclusiva num único recurso, mas pode usar a mesma chave com vários recursos.
  • As chaves têm de começar com uma letra minúscula ou um caráter internacional.

Adicionar uma etiqueta a um trabalho

O exemplo seguinte mostra como adicionar uma etiqueta quando cria uma nova tarefa. Por exemplo, pode usar uma etiqueta para indicar que a tarefa vai ser usada num ambiente de teste. A chave da etiqueta seria environment e o valor seria test.

Para criar a tarefa, use o método projects.locations.jobs.create.

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • PROJECT_ID: o ID do projeto indicado nas definições de IAM. Google Cloud
  • LOCATION: a localização onde a tarefa vai ser executada. Usar uma das regiões suportadas.
    Mostrar localizações
    • us-central1
    • us-west1
    • us-west2
    • us-east1
    • us-east4
    • southamerica-east1
    • northamerica-northeast1
    • asia-east1
    • asia-northeast1
    • asia-northeast3
    • asia-south1
    • asia-southeast1
    • australia-southeast1
    • europe-west1
    • europe-west2
    • europe-west4
    • me-west1
    • me-central1
    • me-central2
  • STORAGE_BUCKET_NAME: o nome do contentor do Cloud Storage que criou.
  • STORAGE_INPUT_VIDEO: o nome do vídeo no seu contentor do Cloud Storage que está a transcodificar, como my-vid.mp4. Este campo deve ter em conta todas as pastas que criou no contentor (por exemplo, input/my-vid.mp4).
  • STORAGE_OUTPUT_FOLDER: o nome da pasta do Cloud Storage onde quer guardar as saídas de vídeo codificadas.

Para enviar o seu pedido, expanda uma destas opções:

Deve receber uma resposta JSON semelhante à seguinte:

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION/jobs/JOB_ID",
  "config": {
    "inputs": [
      {
        "key": "input0",
        "uri": "gs://STORAGE_BUCKET_NAME/STORAGE_INPUT_VIDEO"
      }
    ],
    "editList": [
      {
        "key": "atom0",
        "inputs": [
          "input0"
        ],
        "startTimeOffset": "0s"
      }
    ],
    "elementaryStreams": [
      {
        "videoStream": {
          "h264": {
            "widthPixels": 640,
            "heightPixels": 360,
            "frameRate": 30,
            "bitrateBps": 550000,
            "pixelFormat": "yuv420p",
            "rateControlMode": "vbr",
            "crfLevel": 21,
            "gopDuration": "3s",
            "vbvSizeBits": 550000,
            "vbvFullnessBits": 495000,
            "entropyCoder": "cabac",
            "bFrameCount": 3,
            "aqStrength": 1,
            "profile": "high",
            "preset": "veryfast"
          }
        },
        "key": "video-stream0"
      },
      {
        "videoStream": {
          "h264": {
            "widthPixels": 1280,
            "heightPixels": 720,
            "frameRate": 30,
            "bitrateBps": 2500000,
            "pixelFormat": "yuv420p",
            "rateControlMode": "vbr",
            "crfLevel": 21,
            "gopDuration": "3s",
            "vbvSizeBits": 2500000,
            "vbvFullnessBits": 2250000,
            "entropyCoder": "cabac",
            "bFrameCount": 3,
            "aqStrength": 1,
            "profile": "high",
            "preset": "veryfast"
          }
        },
        "key": "video-stream1"
      },
      {
        "audioStream": {
          "codec": "aac",
          "bitrateBps": 64000,
          "channelCount": 2,
          "channelLayout": [
            "fl",
            "fr"
          ],
          "sampleRateHertz": 48000
        },
        "key": "audio-stream0"
      }
    ],
    "muxStreams": [
      {
        "key": "sd",
        "fileName": "sd.mp4",
        "container": "mp4",
        "elementaryStreams": [
          "video-stream0",
          "audio-stream0"
        ]
      },
      {
        "key": "hd",
        "fileName": "hd.mp4",
        "container": "mp4",
        "elementaryStreams": [
          "video-stream1",
          "audio-stream0"
        ]
      },
      {
        "key": "media-sd",
        "fileName": "media-sd.ts",
        "container": "ts",
        "elementaryStreams": [
          "video-stream0",
          "audio-stream0"
        ]
      },
      {
        "key": "media-hd",
        "fileName": "media-hd.ts",
        "container": "ts",
        "elementaryStreams": [
          "video-stream1",
          "audio-stream0"
        ]
      },
      {
        "key": "video-only-sd",
        "fileName": "video-only-sd.m4s",
        "container": "fmp4",
        "elementaryStreams": [
          "video-stream0"
        ]
      },
      {
        "key": "video-only-hd",
        "fileName": "video-only-hd.m4s",
        "container": "fmp4",
        "elementaryStreams": [
          "video-stream1"
        ]
      },
      {
        "key": "audio-only",
        "fileName": "audio-only.m4s",
        "container": "fmp4",
        "elementaryStreams": [
          "audio-stream0"
        ]
      }
    ],
    "manifests": [
      {
        "fileName": "manifest.m3u8",
        "type": "HLS",
        "muxStreams": [
          "media-sd",
          "media-hd"
        ]
      },
      {
        "fileName": "manifest.mpd",
        "type": "DASH",
        "muxStreams": [
          "video-only-sd",
          "video-only-hd",
          "audio-only"
        ]
      }
    ],
    "output": {
      "uri": "gs://STORAGE_BUCKET_NAME/STORAGE_OUTPUT_FOLDER/"
    }
  },
  "state": "PENDING",
  "createTime": CREATE_TIME,
  "ttlAfterCompletionDays": 30,
  "labels": {
    "environment": "test"
  }
}

Para adicionar várias etiquetas, separe cada etiqueta com uma vírgula.

Listar e filtrar por etiquetas

Pode listar recursos e filtrá-los pelas respetivas etiquetas. Por exemplo, depois de adicionar uma etiqueta a uma tarefa, pode listar as tarefas numa determinada localização e filtrar pelas etiquetas que adicionou. O exemplo seguinte lista as tarefas e filtra todas as que não contêm a etiqueta "environment": "test".

Para listar as tarefas, use o método projects.locations.jobs.list. O seguinte filtro é anexado ao URL: ?filter=labels.environment:test.

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • PROJECT_ID: o ID do seu Google Cloud projeto.
  • LOCATION: a localização dos seus trabalhos. Usar uma das regiões suportadas.
    Mostrar localizações
    • us-central1
    • us-west1
    • us-west2
    • us-east1
    • us-east4
    • southamerica-east1
    • northamerica-northeast1
    • asia-east1
    • asia-northeast1
    • asia-northeast3
    • asia-south1
    • asia-southeast1
    • australia-southeast1
    • europe-west1
    • europe-west2
    • europe-west4
    • me-west1
    • me-central1
    • me-central2
  • Para enviar o seu pedido, expanda uma destas opções:

    Deve receber uma resposta JSON semelhante à seguinte:

    {
      "jobs": [
        {
          "name": "projects/PROJECT_NUMBER/locations/LOCATION/jobs/MY_JOB",
          "config": {
            ....
           },
          "state": "PENDING",
          "createTime": CREATE_TIME,
          "ttlAfterCompletionDays": 30,
          "labels": {
            "environment": "test"
          }
        },
        {
          "name": "projects/PROJECT_NUMBER/locations/LOCATION/jobs/MY_OTHER_JOB",
          "config": {
            ....
           },
          "state": "SUCCEEDED",
          "createTime": CREATE_TIME,
          "startTime": START_TIME,
          "endTime": END_TIME,
          "ttlAfterCompletionDays": 30,
          "labels": {
            "environment": "test"
          }
        }
      ]
    }