יצירת סשן בשידור חי

באמצעות Video Stitcher API, אתם יוצרים סשן שידור חי בכל פעם שאתם מתחילים הפעלה של שידור חי שבו מודעות שמוצגות על ידי Google Ad Manager משולבות באופן דינמי במהלך הפסקות הפרסום. בתגובה מצוינת כתובת ה-URL להפעלה וההגדרה של הסשן בשידור חי.

במאמר הזה מוסבר איך ליצור סשן בשידור חי ואיך לנהל אותו. פרטים נוספים זמינים במסמכי התיעוד של REST.

לפני שמתחילים

  • יוצרים הגדרה פעילה. כדי להשתמש בשילוב עם Google Ad Manager, צריך לוודא שהאובייקט gamLiveConfig מוגדר.
  • אם מציינים סלייט, צריך לוודא שאובייקט gamSlate מוגדר בסלייט שרושמים.

יצירת סשן בשידור חי

כדי ליצור סשן בשידור חי באמצעות ה-API ישירות, משתמשים ב-method‏ projects.locations.liveSessions.create.

השדה liveConfig הוא שדה החובה היחיד בגוף ה-JSON. אפשר להגדיר או לשנות את הפרמטרים האופציונליים הבאים לכל סשן בשידור חי (כמו בדוגמה הבאה של REST):

  • manifestOptions: מציין אילו עיבודים של סרטונים נוצרים במניפסט של הסרטון המחובר ואת סדר העיבודים. אפשר לעיין במסמכי התיעוד בנושא אפשרויות המניפסט
  • adTracking: בוחרים מעקב אחרי ביצועים של מודעות בצד הלקוח או מעקב אחרי ביצועים של מודעות בצד השרת. הפעולה הזו מבטלת את הערך בהגדרות הפעילות של הסשן.
  • targetingParameters: תג מודעה של Google Ad Manager יכול להכיל פרמטרים של טירגוט שאפשר לעדכן לפי סשן. צריך לספק מיפוי בשדה הזה (לדוגמה, כדי להחליף את מאקרו [my_key] במחרוזת my_value, אפשר לעיין בדוגמה של REST)

REST

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

  • PROJECT_NUMBER: מספר הפרויקט Google Cloud שמופיע בשדה מספר הפרויקט בדף הגדרות IAM
  • LOCATION: המיקום שבו רוצים ליצור את הסשן. צריך להשתמש באחד מהאזורים הנתמכים
    הצגת מיקומים
    • us-central1
    • us-east1
    • us-west1
    • asia-east1
    • asia-south1
    • asia-southeast1
    • europe-west1
    • southamerica-east1
  • LIVE_CONFIG_ID: המזהה שהוגדר על ידי המשתמש עבור התצורה הפעילה

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

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

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION/liveSessions/SESSION_ID",
  "playUri": "PLAY_URI",
  "manifestOptions": {
    "includeRenditions": [
      {
        "bitrateBps": 150000,
        "codecs": "hvc1.1.4.L126.B0"
      },
      {
        "bitrateBps": 440000,
        "codecs": "hvc1.1.4.L126.B0"
      }
    ],
    "bitrateOrder": "DESCENDING"
  },
  "gamSettings": {
    "streamId": "STREAM_ID"
  },
  "liveConfig": "projects/PROJECT_NUMBER/locations/LOCATION/liveConfigs/LIVE_CONFIG_ID",
  "adTracking": "SERVER"
}

C#

לפני שמנסים את הדוגמה הזו, צריך לפעול לפי C# הוראות ההגדרה במאמר הפעלה מהירה של Video Stitcher API באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של Video Stitcher API C# API.

כדי לבצע אימות ב-Video Stitcher API, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.


using Google.Cloud.Video.Stitcher.V1;

public class CreateLiveSessionSample
{
    public LiveSession CreateLiveSession(
        string projectId, string location, string liveConfigId)
    {
        // Create the client.
        VideoStitcherServiceClient client = VideoStitcherServiceClient.Create();

        CreateLiveSessionRequest request = new CreateLiveSessionRequest
        {
            Parent = $"projects/{projectId}/locations/{location}",
            LiveSession = new LiveSession
            {
                LiveConfig = LiveConfigName.FormatProjectLocationLiveConfig(projectId, location, liveConfigId)
            }
        };

        // Call the API.
        LiveSession session = client.CreateLiveSession(request);

        // Return the result.
        return session;
    }
}

Go

לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Go הוראות ההגדרה במאמר הפעלה מהירה של Video Stitcher API באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של Video Stitcher API Go API.

כדי לבצע אימות ב-Video Stitcher API, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.

import (
	"context"
	"fmt"
	"io"

	stitcher "cloud.google.com/go/video/stitcher/apiv1"
	"cloud.google.com/go/video/stitcher/apiv1/stitcherpb"
)

// createLiveSession creates a livestream session in which to insert ads.
// Live sessions are ephemeral resources that expire after a few minutes.
func createLiveSession(w io.Writer, projectID, liveConfigID string) error {
	// projectID := "my-project-id"
	// liveConfigID := "my-live-config"
	location := "us-central1"
	ctx := context.Background()
	client, err := stitcher.NewVideoStitcherClient(ctx)
	if err != nil {
		return fmt.Errorf("stitcher.NewVideoStitcherClient: %w", err)
	}
	defer client.Close()

	req := &stitcherpb.CreateLiveSessionRequest{
		Parent: fmt.Sprintf("projects/%s/locations/%s", projectID, location),
		LiveSession: &stitcherpb.LiveSession{
			LiveConfig: fmt.Sprintf("projects/%s/locations/%s/liveConfigs/%s", projectID, location, liveConfigID),
		},
	}
	// Creates the live session.
	response, err := client.CreateLiveSession(ctx, req)
	if err != nil {
		return fmt.Errorf("client.CreateLiveSession: %w", err)
	}

	fmt.Fprintf(w, "Live session: %v\n", response.GetName())
	fmt.Fprintf(w, "Play URI: %v", response.GetPlayUri())
	return nil
}

Java

לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Java הוראות ההגדרה במאמר הפעלה מהירה של Video Stitcher API באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של Video Stitcher API Java API.

כדי לבצע אימות ב-Video Stitcher API, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.


import com.google.cloud.video.stitcher.v1.CreateLiveSessionRequest;
import com.google.cloud.video.stitcher.v1.LiveConfigName;
import com.google.cloud.video.stitcher.v1.LiveSession;
import com.google.cloud.video.stitcher.v1.LocationName;
import com.google.cloud.video.stitcher.v1.VideoStitcherServiceClient;
import java.io.IOException;

public class CreateLiveSession {

  public static void main(String[] args) throws Exception {
    // TODO(developer): Replace these variables before running the sample.
    String projectId = "my-project-id";
    String location = "us-central1";
    String liveConfigId = "my-live-config-id";

    createLiveSession(projectId, location, liveConfigId);
  }

  // Creates a live session given the parameters in the supplied live config.
  // For more information, see
  // https://cloud.google.com/video-stitcher/docs/how-to/managing-live-sessions.
  public static LiveSession createLiveSession(
      String projectId, String location, String liveConfigId) throws IOException {
    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests.
    try (VideoStitcherServiceClient videoStitcherServiceClient =
        VideoStitcherServiceClient.create()) {
      CreateLiveSessionRequest createLiveSessionRequest =
          CreateLiveSessionRequest.newBuilder()
              .setParent(LocationName.of(projectId, location).toString())
              .setLiveSession(
                  LiveSession.newBuilder()
                      .setLiveConfig(LiveConfigName.format(projectId, location, liveConfigId)))
              .build();

      LiveSession response = videoStitcherServiceClient.createLiveSession(createLiveSessionRequest);
      System.out.println("Created live session: " + response.getName());
      System.out.println("Play URI: " + response.getPlayUri());
      return response;
    }
  }
}

Node.js

לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Node.js הוראות ההגדרה במאמר הפעלה מהירה של Video Stitcher API באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של Video Stitcher API Node.js API.

כדי לבצע אימות ב-Video Stitcher API, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.

/**
 * TODO(developer): Uncomment these variables before running the sample.
 */
// projectId = 'my-project-id';
// location = 'us-central1';
// liveConfigId = 'my-live-config-id';

// Imports the Video Stitcher library
const {VideoStitcherServiceClient} =
  require('@google-cloud/video-stitcher').v1;
// Instantiates a client
const stitcherClient = new VideoStitcherServiceClient();

async function createLiveSession() {
  // Construct request
  const request = {
    parent: stitcherClient.locationPath(projectId, location),
    liveSession: {
      liveConfig: stitcherClient.liveConfigPath(
        projectId,
        location,
        liveConfigId
      ),
    },
  };

  const [session] = await stitcherClient.createLiveSession(request);
  console.log(`Live session: ${session.name}`);
  console.log(`Play URI: ${session.playUri}`);
}

createLiveSession().catch(err => {
  console.error(err.message);
  process.exitCode = 1;
});

PHP

לפני שמנסים את הדוגמה הזו, צריך לפעול לפי PHP הוראות ההגדרה במאמר הפעלה מהירה של Video Stitcher API באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של Video Stitcher API PHP API.

כדי לבצע אימות ב-Video Stitcher API, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.

use Google\Cloud\Video\Stitcher\V1\Client\VideoStitcherServiceClient;
use Google\Cloud\Video\Stitcher\V1\CreateLiveSessionRequest;
use Google\Cloud\Video\Stitcher\V1\LiveSession;

/**
 * Creates a live session. Live sessions are ephemeral resources that expire
 * after a few minutes.
 *
 * @param string $callingProjectId     The project ID to run the API call under
 * @param string $location             The location of the session
 * @param string $liveConfigId         The live config ID to use to create the
 *                                     live session
 */
function create_live_session(
    string $callingProjectId,
    string $location,
    string $liveConfigId
): void {
    // Instantiate a client.
    $stitcherClient = new VideoStitcherServiceClient();

    $parent = $stitcherClient->locationName($callingProjectId, $location);
    $liveConfig = $stitcherClient->liveConfigName($callingProjectId, $location, $liveConfigId);
    $liveSession = new LiveSession();
    $liveSession->setLiveConfig($liveConfig);

    // Run live session creation request
    $request = (new CreateLiveSessionRequest())
        ->setParent($parent)
        ->setLiveSession($liveSession);
    $response = $stitcherClient->createLiveSession($request);

    // Print results
    printf('Live session: %s' . PHP_EOL, $response->getName());
}

Python

לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Python הוראות ההגדרה במאמר הפעלה מהירה של Video Stitcher API באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של Video Stitcher API Python API.

כדי לבצע אימות ב-Video Stitcher API, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.


import argparse

from google.cloud.video import stitcher_v1
from google.cloud.video.stitcher_v1.services.video_stitcher_service import (
    VideoStitcherServiceClient,
)


def create_live_session(
    project_id: str, location: str, live_config_id: str
) -> stitcher_v1.types.LiveSession:
    """Creates a live session. Live sessions are ephemeral resources that expire
    after a few minutes.
    Args:
        project_id: The GCP project ID.
        location: The location in which to create the session.
        live_config_id: The user-defined live config ID.

    Returns:
        The live session resource.
    """

    client = VideoStitcherServiceClient()

    parent = f"projects/{project_id}/locations/{location}"
    live_config = (
        f"projects/{project_id}/locations/{location}/liveConfigs/{live_config_id}"
    )

    live_session = stitcher_v1.types.LiveSession(live_config=live_config)

    response = client.create_live_session(parent=parent, live_session=live_session)
    print(f"Live session: {response.name}")
    return response

Ruby

לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Ruby הוראות ההגדרה במאמר הפעלה מהירה של Video Stitcher API באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של Video Stitcher API Ruby API.

כדי לבצע אימות ב-Video Stitcher API, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.

require "google/cloud/video/stitcher"

##
# Create a live stream session. Live sessions are ephemeral resources
# that expire after a few minutes.
#
# @param project_id [String] Your Google Cloud project (e.g. `my-project`)
# @param location [String] The location (e.g. `us-central1`)
# @param live_config_id [String] Your live config name (e.g. `my-live-config`)
#
def create_live_session project_id:, location:, live_config_id:
  # Create a Video Stitcher client.
  client = Google::Cloud::Video::Stitcher.video_stitcher_service

  # Build the resource name of the parent.
  parent = client.location_path project: project_id, location: location

  # Build the resource name of the live config.
  live_config_name = client.live_config_path project: project_id,
                                             location: location,
                                             live_config: live_config_id

  # Set the session fields.
  new_live_session = {
    live_config: live_config_name
  }

  response = client.create_live_session parent: parent,
                                        live_session: new_live_session

  # Print the live session name.
  puts "Live session: #{response.name}"
end

ממשק Video Stitcher API יוצר מזהה סשן ייחודי לכל בקשה. התוקף של סשן יפוג אם לא תוגש בקשה ל-playUri ב-5 הדקות האחרונות.

אפשר להשתמש בערך STREAM_ID שמוחזר כדי לבדוק את הסשן הפעיל.

בדיקת סשנים פעילים שהופעלו על ידי Google Ad Manager

כדי לראות פרטים על תגי מודעות בסשנים, אפשר להשתמש בכלי לניהול שידור (SAM) ב-Ad Manager כדי לראות פרטים על בקשות להצגת מודעות. אפשר להשתמש ב-STREAM_ID כדי לנפות באגים בסשן של השידור. כדי למצוא את STREAM_ID של סשן בשידור חי, אפשר לעיין במאמר קבלת סשן.