ארגון משאבים באמצעות תוויות

בדף הזה מוסבר איך להוסיף תוויות למשאבי Transcoder API ואיך להציג אותן. תוויות הן צמדי מפתח/ערך שבעזרתם אפשר לארגן משאבים. אפשר לצרף תוויות למשאבים ספציפיים כדי לסנן את המשאבים לפי התוויות. המידע על התוויות מועבר למערכת החיוב, כך שאתם יכולים לפרק את החיובים לפי התוויות.

אפשר להוסיף תוויות כשיוצרים משימות ותבניות למשימות ב-Transcoder API. אם יוצרים משימה על סמך תבנית משימה שמכילה תוויות, המשימה תכיל את אותן תוויות כמו תבנית המשימה. כדי לשנות את התוויות מתבנית המשרה, אפשר לציין ישירות את התוויות במשרה עצמה.

אפשר להשתמש בתוויות באמצעות ממשקי ה-API ל-REST או ל-RPC. התוויות לא זמינות ב-Google Cloud CLI או במסוף Google Cloud .

דרישות לגבי תוויות

התוויות שמוחלות על משאב צריכות לעמוד בדרישות הבאות:

  • לכל משאב יכולות להיות כמה תוויות, עד 64 לכל היותר.
  • כל תווית צריכה להיות צמד מפתח/ערך.
  • האורך המינימלי של המפתחות הוא תו אחד, והאורך המקסימלי הוא 63 תווים. המפתחות לא יכולים להיות ריקים. הערכים יכולים להיות ריקים, והאורך המקסימלי שלהם הוא 63 תווים.
  • המפתחות והערכים יכולים להכיל רק אותיות קטנות, ספרות, קווים תחתונים ומקפים. כל התווים צריכים להיות בקידוד UTF-8. מותר להשתמש בתווים בינלאומיים.
  • המפתח של תווית חייב להיות ייחודי במשאב יחיד, אבל אפשר להשתמש באותו מפתח בכמה משאבים.
  • המפתחות צריכים להתחיל באות קטנה או בתו בינלאומי.

הוספת תווית למשרה

בדוגמה הבאה אפשר לראות איך מוסיפים תווית כשיוצרים משימה חדשה. לדוגמה, אפשר להשתמש בתווית כדי לציין שהמשימה תשמש בסביבת בדיקה. המפתח של התווית יהיה environment והערך יהיה test.

כדי ליצור את העבודה, משתמשים בשיטה projects.locations.jobs.create.

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

  • PROJECT_ID: מזהה הפרויקט ב- Google Cloud שמופיע בהגדרות IAM.
  • LOCATION: המיקום שבו המשימה תפעל. להשתמש באחד מהאזורים הנתמכים.
    הצגת מיקומים
    • 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: השם של הקטגוריה שיצרתם ב-Cloud Storage.
  • STORAGE_INPUT_VIDEO: השם של הסרטון בקטגוריית Cloud Storage שאתם מקודדים, כמו my-vid.mp4. בשדה הזה צריך להזין את כל התיקיות שיצרתם בדלי (לדוגמה, input/my-vid.mp4).
  • STORAGE_OUTPUT_FOLDER: שם התיקייה ב-Cloud Storage שבה רוצים לשמור את פלט הווידאו המקודד.

כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:

אתם אמורים לקבל תגובת JSON שדומה לזו:

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

כדי להוסיף כמה תוויות, צריך להפריד ביניהן באמצעות פסיק.

הצגה וסינון לפי תוויות

אפשר להציג רשימה של משאבים ולסנן אותם לפי התוויות שלהם. לדוגמה, אחרי שמוסיפים תווית למשרה, אפשר להציג רשימה של המשרות במיקום מסוים ולסנן לפי התוויות שהוספתם. בדוגמה הבאה מוצגת רשימה של המשרות, ומסוננות משרות שלא מסומנות בתווית "environment": "test".

כדי להציג את רשימת העבודות, משתמשים בשיטה projects.locations.jobs.list. המסנן הבא מצורף לכתובת ה-URL: ?filter=labels.environment:test.

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

  • PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
  • LOCATION: המיקום של המשימות. להשתמש באחד מהאזורים הנתמכים.
    הצגת מיקומים
    • 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
  • כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:

    אתם אמורים לקבל תגובת JSON שדומה לזו:

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