ভিডিও ক্রিয়েটিভ ইনজেস্ট API

ভিডিও ক্রিয়েটিভ ইনজেস্ট API তৃতীয় পক্ষের বিজ্ঞাপন সিস্টেমগুলিকে YouTube এবং DAI পণ্যগুলিতে ক্রিয়েটিভগুলিকে সক্রিয়ভাবে গ্রহণ করার অনুমতি দেয়৷ এই প্রক্রিয়াটি নিশ্চিত করে যে যখন একটি বিজ্ঞাপন একটি নন-Google বিজ্ঞাপন সার্ভার থেকে সিদ্ধান্ত নেওয়া হয়, যে ক্রিয়েটিভগুলি ফেরত দেওয়া হয় তা YouTube বা DAI ভিডিও স্ট্রীমে পরিবেশনের জন্য প্রস্তুত এবং উপলব্ধ।

তৃতীয় পক্ষের বিজ্ঞাপন সিস্টেমগুলি থেকে ক্রিয়েটিভগুলিকে সক্রিয়ভাবে গ্রহণ করার প্রক্রিয়াটির দুটি প্রধান অংশ জড়িত। প্রথম অংশটি তৃতীয় পক্ষের বিজ্ঞাপন সিস্টেমকে Google-কে ক্রিয়েটিভ সরবরাহ করতে এবং ক্রিয়েটিভগুলির অগ্রগতি নিরীক্ষণ করার অনুমতি দেয় কারণ সেগুলি Google ভিডিও পরিকাঠামোতে প্রবেশ করানো হয়৷ ক্রিয়েটিভগুলি সফলভাবে গ্রহণ করা হয়ে গেলে, শনাক্তকারীকে বিজ্ঞাপন সিস্টেমে ফেরত পাঠানো হয়।

দ্বিতীয় ধাপে বিজ্ঞাপন সিস্টেম সেই শনাক্তকারীকে গ্রহণ করে এবং VAST নথিতে অন্তর্ভুক্ত করে যা জমাকৃত সৃজনশীলকে উল্লেখ করে, হয় ইউনিভার্সাল অ্যাড আইডি (VAST 4.0+) অথবা "UniversalAdId" ধরনের একটি ক্রিয়েটিভ এক্সটেনশন ব্যবহার করে। যখন DAI বা YouTube-এ সিদ্ধান্ত নেওয়ার সময় বিজ্ঞাপন সিস্টেম থেকে একটি VAST নথির সম্মুখীন হয়, তখন সৃজনশীল সিস্টেম সেই শনাক্তকারীগুলিকে VAST থেকে বের করে এবং প্লেব্যাকের জন্য সন্নিবেশ করার জন্য Google ভিডিও পরিকাঠামো থেকে উপযুক্ত সৃজনশীল নিয়ে আসে।

মিডিয়া প্রয়োজনীয়তা

API-তে জমা দেওয়া সৃজনশীল মিডিয়াকে নিম্নলিখিত মানদণ্ড পূরণ করা উচিত যাতে এটি সিস্টেম দ্বারা সফলভাবে প্রক্রিয়া করা যায়।

মিডিয়া প্রকার

নিম্নলিখিত মিডিয়া প্রকারগুলি Google দ্বারা গৃহীত হয়৷ অন্য কোন মিডিয়া প্রকার জমা দেওয়ার পরে প্রত্যাখ্যান করা যেতে পারে।

  • video/mp4
  • video/webm
  • video/quicktime
  • video/avi
  • video/mpeg
  • video/x-flv
  • flv-application/octet-stream
  • application/octet-stream
  • video/3gpp
  • video/ogg
  • audio/mp4
  • audio/mpeg

মিডিয়া বৈশিষ্ট্য

নিম্নলিখিত মানদণ্ড জমা দেওয়া মিডিয়া দ্বারা পূরণ করা আবশ্যক:

  • মিডিয়াতে কমপক্ষে একটি অডিও বা ভিডিও ট্র্যাক থাকতে হবে৷
  • মিডিয়া একটি যুক্তিসঙ্গত সময়কাল থাকতে হবে. কয়েক মিনিটের বেশি কিছু নয়।
  • মিডিয়াতে অবশ্যই 1 সেকেন্ডের বেশি সময়ের অডিও বা ভিডিও থাকতে হবে।
  • যদি মিডিয়াতে অডিও থাকে, তবে এটিতে অবশ্যই একটি স্ট্যান্ডার্ড অডিও চ্যানেল কনফিগারেশন যেমন মনো, স্টেরিও বা চারপাশের শব্দ থাকতে হবে।

ইনজেশনের জন্য ক্রিয়েটিভ জমা দিন

ইনজেশন প্রক্রিয়ার ফ্লো ডায়াগ্রাম

  1. একটি তৃতীয় পক্ষের বিজ্ঞাপন সিস্টেম ভিডিও ক্রিয়েটিভ ইনজেস্ট এপিআইতে একটি HTTP অনুরোধ পাঠায় যাতে সৃজনশীলের সাথে যুক্ত মিডিয়া ফাইলগুলির একটি তালিকা থাকে৷
  2. ভিডিও ক্রিয়েটিভ ইনজেস্ট API প্রদত্ত তালিকা থেকে সর্বোচ্চ মানের সৃজনশীল নির্বাচন করে এবং CDN থেকে ডাউনলোড করে।
  3. ভিডিও ক্রিয়েটিভ ইনজেস্ট API ডাউনলোড করা ক্রিয়েটিভকে Google ভিডিও ইনফ্রাস্ট্রাকচারে প্রবেশ করায়, এটিকে YouTube এবং DAI উভয় পণ্যেই উপলব্ধ করে।
  4. একটি পাব/সাব বিজ্ঞপ্তি সৃজনশীল অবস্থা সহ তৃতীয় পক্ষের বিজ্ঞাপন সিস্টেমে ফেরত পাঠানো হয়। YouTube এবং DAI উভয়ের জন্যই এটি সফলভাবে লোড হয়েছে কিনা তা বিজ্ঞপ্তিটি নির্দেশ করবে। সৃজনশীল লোড করার ফলে ব্যর্থ হলে, বিজ্ঞপ্তিটি ব্যর্থতার কারণ নির্দেশ করবে।

ক্রিয়েটিভ জমা দেওয়ার সময় এই নির্দেশিকাগুলি অনুসরণ করুন।

প্রমাণীকরণ

আপনাকে অবশ্যই একটি Google ক্লাউড পরিষেবা অ্যাকাউন্ট ব্যবহার করে API অ্যাক্সেস করতে হবে৷ ইন্টিগ্রেশনের সময়, যথাযথ অনুমোদন পেতে অ্যাকাউন্টের তথ্য অবশ্যই Google-কে প্রদান করতে হবে।

creativeingestion@google.com-এর মাধ্যমে Google-কে অ্যাকাউন্টের তথ্য দেওয়া হয়ে গেলে, API এন্ডপয়েন্ট এবং বিজ্ঞপ্তি প্রকাশের জন্য ব্যবহৃত Cloud PubSub বিষয়গুলিতে অ্যাক্সেস দেওয়া হবে।

প্রমাণীকরণ প্রক্রিয়া শুরু করতে, এই পদক্ষেপগুলি অনুসরণ করুন:

  1. একটি Google ক্লাউড অ্যাকাউন্ট তৈরি করুন।
  2. DAI API-তে অনুরোধ পাঠানোর জন্য অ্যাকাউন্টের সাথে একটি প্রকল্প সেট আপ করুন।
  3. প্রকল্পের মধ্যে, বাম দিকে IAM এবং অ্যাডমিন ট্যাবে যান এবং একটি নতুন পরিষেবা অ্যাকাউন্ট তৈরি করুন; পরিষেবা অ্যাকাউন্ট ব্যবহার করে অনুরোধ পাঠানো হয়।
  4. PubSub API সক্ষম করুন এবং একটি একক অনন্য অংশীদার বিজ্ঞপ্তি বিষয় তৈরি করুন যেখানে API সমস্ত সাফল্য এবং ব্যর্থতার বিজ্ঞপ্তি প্রকাশ করে৷

    আপনার যদি একটি ডোমেন সীমাবদ্ধতা সংস্থা নীতি থাকে, তাহলে আপনাকে অনুমোদিত গ্রাহক তালিকায় Google গ্রাহক আইডি যোগ করতে হবে। আইডির জন্য creativeingestion@google.com এ যোগাযোগ করুন। এটি হয়ে গেলে, আপনি IAM নীতিতে (PubSub Publisher) অনুমোদিত গ্রাহক তালিকা (এপিআই-এর গ্রাহক আইডি) থেকে প্রধান (আমাদের রোবট অ্যাকাউন্ট) যোগ করতে পারেন।

    video-creative-library-discovery@system.gserviceaccount.com একটি PubSub প্রকাশক হিসাবে বিষয়ের সাথে যুক্ত করুন৷

  5. API-এর সাথে এই তথ্য নিবন্ধন করতে পরিষেবা অ্যাকাউন্ট ইমেল ঠিকানা এবং PubSub বিষয় সহ creativeingestion@google.com প্রদান করুন৷

  6. পরিষেবা গ্রাহক হিসাবে অ্যাকাউন্ট যোগ করার পরে DAI API সক্ষম করুন৷

  7. API অ্যাক্সেস করার জন্য আপনার শংসাপত্র সেট করতে:

    • পরিষেবা অ্যাকাউন্ট থেকে শংসাপত্রগুলি ডাউনলোড করুন: IAM এবং অ্যাডমিন ট্যাবের পরিষেবা অ্যাকাউন্ট বিভাগে পরিষেবা অ্যাকাউন্টে ক্লিক করুন, কী তৈরি করুন ক্লিক করুন এবং শংসাপত্রগুলি সংরক্ষণ করুন৷

    • আপনার API কলার প্রমাণীকরণ করুন । JSON ফাইলের পাথে GOOGLE_APPLICATION_CREDENTIALS সেট করুন। সাধারণ ভাষায় gRPC ক্লায়েন্ট প্রমাণীকরণের জন্য কোড উদাহরণ দেখুন।

ক্রিয়েটিভ ইনজেশন

প্রতিবার একটি অংশীদারের বিজ্ঞাপন সিস্টেমে একটি নতুন সৃজনশীল উপলব্ধ হলে, সৃজনশীলটি অংশীদারের সিস্টেম দ্বারা ক্রিয়েটিভ ইনজেস্ট API এ জমা দেওয়া উচিত৷

ভিডিও পরিকাঠামোতে লোড করার জন্য যখন নতুন ক্রিয়েটিভগুলি Google-এ জমা দেওয়া হয়, তখন বিজ্ঞাপন সিস্টেমের দ্বারা তৈরি করা VAST নথিতে অন্তর্ভুক্ত একই সৃজনশীল ডেটা সরবরাহ করা উচিত৷ এটি নিশ্চিত করে যে Google-এ ক্রিয়েটিভগুলিকে সক্রিয়ভাবে ঢোকানোর আচরণটি ক্রিয়েটিভগুলিকে লোড করার মতো একই আচরণ করে যখন সেগুলি একটি বিজ্ঞাপন প্রতিক্রিয়ায় প্রথম আবিষ্কৃত হয়।

প্রতিটি জমা দেওয়া সৃজনশীল সার্ভারে একটি দীর্ঘস্থায়ী ইনজেস্ট অপারেশন তৈরি করে যার স্থিতি জিজ্ঞাসা করা যেতে পারে। একবার অপারেশনটি সফলভাবে সম্পন্ন হলে, এটি সিস্টেমের মধ্যে একটি সৃজনশীল সংস্থান তৈরি করে। একটি ক্রিয়েটিভ জমা দেওয়ার প্রতিক্রিয়াতে অনুরোধের ফলে ক্রিয়াকলাপের আইডি থাকে। ফলস্বরূপ অপারেশন আইডি ক্লাউড PubSub বিজ্ঞপ্তিতে অন্তর্ভুক্ত করা হয় যা পাঠানো হয় যখন অপারেশনটি সম্পূর্ণ হয়ে যায় তখন জমা দেওয়া আসল ক্রিয়েটিভে ম্যাপ করার জন্য। অপারেশন আইডি যেকোনো সময় অপারেশনের অগ্রগতি পরীক্ষা করতেও ব্যবহার করা যেতে পারে।

সৃজনশীল অনুরোধ

প্রোটোকল বাফার বা JSON অবজেক্ট হিসাবে API এ ডেটা পাঠানো হয়। প্রোটোকল বাফারগুলি, gRPC ব্যবহার করে প্রেরিত, সুপারিশ করা হয় কারণ সেগুলি PubSub বিজ্ঞপ্তিগুলি ব্যবহার করার জন্য প্রয়োজনীয়, এবং JSON-এর মার্শাল করা google.protobuf.Any এর কারণে জটিলতা যুক্ত করেছে৷ প্রতিক্রিয়াতে যে কোনও ক্ষেত্র রয়েছে৷

সৃজনশীল প্রতিক্রিয়া

সফল হলে, সার্ভার অনুরোধের প্রকারের উপর নির্ভর করে একটি প্রোটোকল বাফার প্রতিক্রিয়া বা JSON প্রতিক্রিয়া প্রদান করে। প্রতিক্রিয়াটিতে নতুন তৈরি ইনজেস্ট অপারেশনের নাম এবং অপারেশনের বিশদ বিবরণ রয়েছে।

প্রাথমিক জমা দেওয়ার পরে, অপারেশনের সাথে সম্পর্কিত কিছু মেটাডেটা খালি থাকতে পারে এবং ফলাফল উপস্থিত নাও থাকতে পারে। একবার অপারেশন শেষ হলে, ফলাফলটি ক্রিয়েটিভ রিসোর্স (বা একটি ত্রুটি) দিয়ে পপুলেট করা হয় এবং মেটাডেটা ইনজেস্ট স্ট্যাটাস সম্পর্কে তথ্য ধারণ করে।

মনে রাখবেন যে মেটাডেটা অবশ্যই Any প্রোটো থেকে CreateCreativeOperationMetadata প্রোটোতে আনমার্শাল করতে হবে এবং প্রতিক্রিয়া (যদি উপস্থিত থাকে) Creative প্রোটোতে আনমার্শাল করা আবশ্যক।

API অ্যাক্সেস করতে ক্লায়েন্ট লাইব্রেরি

API এর সাথে সংহত করতে এই পদক্ষেপগুলি অনুসরণ করুন:

  1. প্রোটোকল বাফার নির্ভরতা ডাউনলোড করুন এবং সমগ্র google ফোল্ডারটিকে আপনার src ডিরেক্টরিতে সরান। Google ক্লাউড অ্যাপ ইঞ্জিন ব্যবহার করলে এটি এড়ানো যেতে পারে।
  2. প্রোটো ফাইল থেকে জিআরপিসি কোড তৈরি করতে প্রোটোক প্লাগইন ব্যবহার করুন এবং জেনারেট করা কোডটি প্রাসঙ্গিক ডিরেক্টরিতে রাখুন।
  3. PubSub বিজ্ঞপ্তিতে ফিরে আসা প্রোটোর জন্য একটি নতুন প্রোটো ফাইল তৈরি করুন; প্রোটো থেকে কোড জেনারেট করতে আগের ধাপটি পুনরাবৃত্তি করুন।
  4. API এ অনুরোধ করতে gRPC ব্যবহার করুন:

    1. নিম্নলিখিত সুযোগগুলির সাথে ডিফল্ট শংসাপত্র পান:

    https://www.googleapis.com/auth/video-ads ,

    https://www.googleapis.com/auth/pubsub

    1. ক্রিয়েটিভ ইনজেস্টে অনুরোধটি পাঠান।
    • ডিফল্ট শংসাপত্র ব্যবহার করে dai.googleapis.com:443 এ সংযোগ করুন৷
    • জিআরপিসি প্রোটো-জেনারেটেড কোড ব্যবহার করে ক্রিয়েটিভ ইনজেস্ট পরিষেবাতে একটি ক্লায়েন্ট স্টাব তৈরি করুন।
    • ক্লায়েন্ট স্টাব ব্যবহার করে CreateCreative কল করুন।

    ঐচ্ছিকভাবে, দীর্ঘ-চলমান অপারেশন জিআরপিসি কোড ব্যবহার করে অপারেশন পরিষেবাতে একটি স্টাব তৈরি করুন — ধাপ 2-এ ডাউনলোড করা googleapis ডিরেক্টরিতে অন্তর্ভুক্ত—যা একটি প্রদত্ত অপারেশন ( GetOperation ) এর স্থিতি পেতে ব্যবহার করা যেতে পারে।

  5. বিজ্ঞপ্তির জন্য PubSub চেক করুন:

    1. PubSub পরিষেবার সাথে সংযোগ করতে PubSub ক্লায়েন্ট লাইব্রেরি বা gRPC ব্যবহার করুন এবং প্রদত্ত বিষয়ে প্রকাশিত PubSub বিজ্ঞপ্তিগুলির জন্য পোল করুন৷

    2. ধাপ 4 থেকে প্রোটোতে PubSub বার্তাটি আনমার্শাল করুন।

    3. যখনই CreateCreative , GetOperation , বা একটি PubSub বিজ্ঞপ্তিতে কল থেকে একটি দীর্ঘমেয়াদী অপারেশন ফেরত দেওয়া হয়, google.protobuf.Any থেকে discovery.protoCreateCreativeOperationMetadata তে মেটাডেটা আনমার্শাল করুন। যেকোন প্রোটো এবং discovery.proto তে Creative -এ যেকোনো প্রতিক্রিয়া।

উদাহরণ Go ক্লায়েন্ট কোড

// Copyright 2024 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     https://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

package main

import (
  dai "google.golang.org/genproto/googleapis/ads/dai/v1"
  psnotif "protos/dai"
  "google.golang.org/genproto/googleapis/longrunning"
  "cloud.google.com/go/pubsub"
  "golang.org/x/net/context"
  "google.golang.org/grpc"
  "google.golang.org/grpc/credentials"
  "google.golang.org/grpc/credentials/oauth"
  "github.com/golang/protobuf/proto"
  anypb "github.com/golang/protobuf/ptypes/any"
)

var scopes = []string{"https://www.googleapis.com/auth/video-ads", "https://www.googleapis.com/auth/pubsub"}

const (
  subID = "sub-id" // The ID for the subscription to the topic you provided us (projects/<project ID>/subscriptions/<subscription ID>)
  project = "your-project-id" // Your Google Cloud Project ID
)

func main() {
  ctx := context.Background()
  crpc, err := oauth.NewApplicationDefault(ctx, scopes...)
  if err != nil {
    // TODO: Handle error
  }

  conn, err := grpc.Dial("dai.googleapis.com:443",
    grpc.WithTransportCredentials(credentials.NewClientTLSFromCert(nil, "")),
    grpc.WithPerRPCCredentials(crpc))
  if err != nil {
    // TODO: Handle error 
  }

  apiclient := dai.NewPartnerDiscoveryServiceClient(conn)
  opclient := longrunning.NewOperationsClient(conn)

  op, err := apiclient.CreateCreative(ctx, &dai.CreateCreativeRequest{
    // TODO: Add Creative with metadata and media files.
  })
  if err != nil {
    // TODO: Handle error
  }

  pubsubClient, err := pubsub.NewClient(ctx, project)
  if err != nil {
    // TODO: Handle error
  }
  sub := pubsubClient.Subscription(subID)

  // TODO: Pull from Pub/Sub subscription to receive messages, and acknowledge them
  var msg *pubsub.Message // Assume msg = a received Pub/Sub message

  // Unmarshal the Pub/Sub message into the proto created in step 9a of guide
  var n psnotif.CreateCreativeStatus
  if err := proto.Unmarshal(msg.Data, &n); err != nil {
    // TODO: Handle error
  }
  op = n.GetDetails()
  md, err = anyToMetadata(op.GetMetadata())
  if err != nil {
    // TODO: Handle error
  }
  // TODO: Check if ingest was successful and get Google Video ID from md.GetGvRegistryId()
  // TODO: Enable serving of creative using Google Video ID in VAST document

  // Optionally check the status of an ingest request using the status endpoint
  op, err = opclient.GetOperation(ctx, &longrunning.GetOperationRequest{Name:   op.Name})
  if err != nil {
    // TODO: Handle error
  }
}

// anyToMetadata converts the metadata Any field in an Operation message to
// CreateCreativeOperationMetadata.
func anyToMetadata(msg *anypb.Any) (*dai.CreateCreativeOperationMetadata, error) {
  var md dai.CreateCreativeOperationMetadata
  return &md, proto.Unmarshal(msg.Value, &md)
}

// anyToCreative converts the response Any field in an Operation message to
// Creative.
func anyToCreative(msg *anypb.Any) (*dai.Creative, error) {
  var cr dai.Creative
  return &cr, proto.Unmarshal(msg.Value, &cr)
}

প্লেব্যাকের সময় সৃজনশীল লুকআপ

সৃজনশীল লুকআপ প্রক্রিয়ার ফ্লো ডায়াগ্রাম

  1. ইউটিউব বা DAI-তে কন্টেন্ট দেখার জন্য ব্যবহারকারীর অনুরোধ।
  2. YouTube / DAI কন্টেন্টে বিজ্ঞাপন ঢোকানোর জন্য একটি তৃতীয় পক্ষের বিজ্ঞাপন সিস্টেম থেকে একটি বিশাল প্রতিক্রিয়া পায়৷
  3. প্রত্যাবর্তিত বিজ্ঞাপনগুলি পূর্বে গ্রহণ করা ক্রিয়েটিভগুলিতে ম্যাপ করা হয়৷ এই ক্রিয়েটিভগুলি প্লেব্যাকের জন্য প্রস্তুত - সেগুলি Google ভিডিও পরিকাঠামো থেকে আনা হয়েছে এবং ব্যবহারকারীর জন্য চালানো হয়েছে৷

অংশীদার VAST নথি সংশোধন করেছে৷

Google ভিডিও পরিকাঠামোতে ক্রিয়েটিভ সফলভাবে লোড হওয়ার পরে যখন বিজ্ঞাপন সিস্টেম থেকে একটি VAST প্রতিক্রিয়া ফেরত দেওয়া হয়, তখন নথিতে প্রক্রিয়াকৃত সৃজনশীলের একটি রেফারেন্স থাকা উচিত। VAST নথিতে একটি প্রদত্ত সৃজনশীলের জন্য মিডিয়া ফাইলগুলি অন্তর্ভুক্ত করা চালিয়ে যাওয়া উচিত তবে এই মিডিয়া ফাইলগুলি সিস্টেম দ্বারা ব্যবহার করা হবে এমন কোনও গ্যারান্টি নেই৷

একটি VAST নথিতে একটি প্রক্রিয়াকৃত সৃজনশীল উল্লেখ করার দুটি উপায় রয়েছে: VAST 4+ নথিতে একটি নতুন UniversalAdId উপাদান যোগ করা বা একটি কাস্টম এক্সটেনশন যোগ করা৷

ইউনিভার্সাল অ্যাড আইডি

ভিডিও ক্রিয়েটিভ ইনজেস্ট API দ্বারা প্রত্যাবর্তিত gvRegistryID হল একটি সার্বজনীন-মুখী আইডি যা একাধিক বিজ্ঞাপন সিস্টেম জুড়ে একটি ভিডিও ক্রিয়েটিভকে স্বতন্ত্রভাবে সনাক্ত করতে ব্যবহৃত হয়। এই আইডিটি বিজ্ঞাপন সিস্টেমের VAST 4+ নথিতে যোগ করা উচিত যাতে YouTube বা DAI দ্বারা একটি VAST নথি গ্রহণ করা হলে, আইডিটি মূল জমা দেওয়া ক্রিয়েটিভের সাথে ম্যাপ করতে ব্যবহার করা যেতে পারে।

বিজ্ঞাপন সিস্টেমের ক্রিয়েটিভ নোডের অধীনে তাদের VAST 4+ নথিতে একটি নতুন UniversalAdId উপাদান যোগ করা উচিত। idRegistry বৈশিষ্ট্যটি "googlevideo" এ সেট করা উচিত এবং মানটি সফলভাবে প্রক্রিয়াকৃত সৃজনশীল বিজ্ঞপ্তির স্থিতিতে প্রদত্ত মান হওয়া উচিত।

নতুন ইউনিভার্সাল অ্যাড আইডি যোগ করা সহ নিম্নলিখিত নমুনা VAST 4 নথি:

<VAST xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="vast.xsd" version="4.0">
  <Ad id="318230556">
    <InLine>
      <AdSystem>DCM</AdSystem>
      <AdTitle>In-Stream Video</AdTitle>
      <Creatives>
        <Creative id="79534759" AdID="" sequence="1">
          <UniversalAdId idRegistry="googlevideo">dQw4w9WgXcQ</UniversalAdId>
          <Linear>
            <Duration>00:00:15</Duration>
            <MediaFiles>
              <Mezzanine>
                <![CDATA[https://cdn.com/media.mp4]]>
              </Mezzanine>
              <MediaFile delivery="progressive" width="640" height="360" type="video/mp4" bitrate="313">
                <![CDATA[https://cdn.com/low-res-media.mp4]]>
              </MediaFile>
            </MediaFiles>
          </Linear>
        </Creative>
      </Creatives>
    </InLine>
  </Ad>
</VAST>

ক্রিয়েটিভ এক্সটেনশন

যেহেতু ইউনিভার্সাল অ্যাড আইডি উপাদানটি শুধুমাত্র VAST 4.0-এ চালু করা হয়েছিল, তাই VAST নথিতে 4.0-এর চেয়ে কম সংস্করণ সহ একই ডেটা প্রকাশ করার জন্য একটি কাস্টম এক্সটেনশন প্রয়োজন৷ এটি VAST স্পেকের ক্রিয়েটিভ এলিমেন্টের অধীনে একটি CreativeExtension উপাদান ব্যবহার করে করা হয়।

প্রবর্তিত নতুন এক্সটেনশন হল একটি সাধারণ এক্সটেনশন যা যেকোনো ইউনিভার্সাল AD আইডি মানকে পপুলেট করার অনুমতি দিতে সক্ষম। এই বিশেষ ক্ষেত্রে ইউনিভার্সাল অ্যাড আইডি গুগলভিডিও রেজিস্ট্রির অন্তর্গত হবে এবং আইডিটি হবে গুগল ভিডিও আইডি।

<VAST version="3.0">
  <Ad id="318230556">
    <InLine>
      <AdSystem>My Ad Server</AdSystem>
      <AdTitle>Car Company</AdTitle>
      <Creatives>
        <Creative id="79534759" AdID="" sequence="1">
          <Linear>...</Linear>
          <CreativeExtensions>
            <CreativeExtension type="UniversalAdId">
              <UniversalAdId idRegistry="googlevideo">dQw4w9WgXcQ</UniversalAdId>
            </CreativeExtension>
          </CreativeExtensions>
        </Creative>
      </Creative>
    </InLine>
  </Ad>
</VAST>

CreativeExtension পদ্ধতিটি VAST 4+ এও ব্যবহার করা যেতে পারে যে ক্ষেত্রে UniversalAdId ইতিমধ্যেই একটি ভিন্ন UniversalAdId রেজিস্ট্রির জন্য একটি আইডি দিয়ে তৈরি করা হয়েছে:

<VAST xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="vast.xsd" version="4.0">
  <Ad id="318230556">
    <InLine>
      <AdSystem>DCM</AdSystem>
      <AdTitle>In-Stream Video</AdTitle>
      <Creatives>
        <Creative id="79534759" AdID="" sequence="1">
          <UniversalAdId idRegistry="other-registry">other-id</UniversalAdId>
          <Linear>
            <Duration>00:00:15</Duration>
            <MediaFiles>
              <Mezzanine>
                <![CDATA[https://cdn.com/media.mp4]]>
              </Mezzanine>
              <MediaFile delivery="progressive" width="640" height="360" type="video/mp4" bitrate="313">
                <![CDATA[https://cdn.com/low-res-media.mp4]]>
              </MediaFile>
            </MediaFiles>
          </Linear>
          <CreativeExtensions>
            <CreativeExtension type="UniversalAdId">
              <UniversalAdId idRegistry="googlevideo">dQw4w9WgXcQ</UniversalAdId>
            </CreativeExtension>
          </CreativeExtensions>
        </Creative>
      </Creatives>
    </InLine>
  </Ad>
</VAST>