快速入门

本页面介绍如何使用 Transcoder API 和 curl、Windows PowerShell 或客户端库的默认设置创建基本视频转码作业。

准备工作

  1. 登录您的 Google Cloud 帐号。如果您是 Google Cloud 新手,请创建一个帐号来评估我们的产品在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。
  2. 在 Google Cloud Console 的项目选择器页面上,选择或创建一个 Google Cloud 项目。

    转到“项目选择器”

  3. 确保您的 Cloud 项目已启用结算功能。 了解如何确认您的项目是否已启用结算功能

  4. 启用 Transcoder API。

    启用 API

  5. 创建服务帐号:

    1. 在 Cloud Console 中,转到创建服务帐号页面。

      转到“创建服务帐号”
    2. 选择一个项目。
    3. 服务帐号名称字段中,输入一个名称。 Cloud Console 会根据此名称填充服务帐号 ID 字段。

      服务帐号说明字段中,输入说明。例如,Service account for quickstart

    4. 点击创建
    5. 点击选择角色字段,然后点击 Transcoder > Transcoder Admin

    6. 点击继续
    7. 点击完成以完成服务帐号的创建过程。

      不要关闭浏览器窗口。您将在下一步骤中用到它。

  6. 创建服务帐号密钥:

    1. 在 Cloud Console 中,点击您创建的服务帐号的电子邮件地址。
    2. 点击密钥
    3. 依次点击添加密钥创建新密钥
    4. 点击创建。JSON 密钥文件将下载到您的计算机上。
    5. 点击关闭
  7. 将环境变量 GOOGLE_APPLICATION_CREDENTIALS 设置为包含您的服务帐号密钥的 JSON 文件的路径。 此变量仅适用于当前的 shell 会话,因此,如果您打开新的会话,请重新设置该变量。

  8. 安装并初始化 Cloud SDK
  9. 使用 gcloud 工具测试您的身份验证环境。检查以下命令是否输出无错误的文本字符串:
    gcloud auth application-default print-access-token

创建 Cloud Storage 存储分区

  1. 在 Cloud Console 中,转到 Cloud Storage 浏览器页面。

    转到浏览器

  2. 点击创建存储分区
  3. 创建存储分区页面上,输入您的存储分区信息。要转到下一步,请点击继续
    • 指定存储分区的名称中,输入唯一的存储分区名称。请勿在存储分区名称中添加敏感信息,因为存储分区命名空间是全局性的,公开可见。
    • 对于选择数据存储位置,执行以下操作:
      • 选择位置类型选项。
      • 选择位置选项。
    • 对于为数据选择一个默认存储类别,选择以下项: Standard
    • 对于选择如何控制对象的访问权限,请选择访问权限控制选项。
    • 对于高级设置(可选),请指定加密方法保留政策存储分区标签
  4. 点击创建
  5. 点击创建文件夹并输入名称,以创建一个用于保存已编码的视频输出的文件夹。

使用 Transcoder API 对视频进行转码

执行以下步骤时,本地机器上必须至少有时长为 5 秒的视频(示例视频)。请参阅支持的输入和输出格式列表

将视频上传到 Cloud Storage 存储分区

  1. 在 Cloud Console 中,转到“Cloud Storage 浏览器”页面。
    转到“Cloud Storage 浏览器”页面
  2. 点击存储分区的名称将其打开。
  3. 点击上传文件
  4. 选择要从本地机器上传的视频文件。

您的视频现已保存到 Cloud Storage 存储分区。

创建转码作业

默认情况下,Transcoder API 使用 H.264 编码以及 MP4、HLS 和 MPEG-DASH 包装对视频进行转码。对于每个输入视频,它以高清(1280x720 像素)和标清(640x360 像素)提供输出呈现方式。

要创建作业,请使用 projects.locations.jobs.create 方法。

REST 和命令行

在使用下面的请求数据之前,请先进行以下替换:

  • PROJECT_IDIAM 设置中列出的 Google Cloud 项目 ID。
  • LOCATION:运行作业的位置。请使用以下列表中的某个位置:
    • us-central1
    • us-west1
    • us-east1
    • southamerica-east1
    • asia-east1
    • europe-west1
  • GCS_BUCKET_NAME:您创建的 Cloud Storage 存储分区的名称。
  • GCS_INPUT_VIDEO:您要对其进行转码的 Cloud Storage 存储分区中的视频的名称,例如 my-vid.mp4。此字段应考虑您在存储分区中创建的任何文件夹(例如 input/my-vid.mp4)。
  • GCS_OUTPUT_FOLDER:您要在其中保存已编码视频输出的 Cloud Storage 文件夹名称。

请求 JSON 正文:

{
  "inputUri": "gs://GCS_BUCKET_NAME/GCS_INPUT_VIDEO",
  "outputUri": "gs://GCS_BUCKET_NAME/GCS_OUTPUT_FOLDER/"
}

如需发送您的请求,请展开以下选项之一:

您应该收到类似以下内容的 JSON 响应:

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION/jobs/JOB_ID",
  "config": {
   ...
  },
  "createTime": CREATE_TIME,
  "ttlAfterCompletionDays": 30
}

gcloud

  1. gcloud 命令进行以下替换:
    • GCS_BUCKET_NAME:您创建的 Cloud Storage 存储分区的名称。
    • GCS_INPUT_VIDEO:您要对其进行转码的 Cloud Storage 存储分区中的视频的名称,例如 my-vid.mp4。此字段应考虑您在存储分区中创建的任何文件夹(例如 input/my-vid.mp4)。
    • LOCATION:运行作业的位置。请使用以下列表中的某个位置:
      • us-central1
      • us-west1
      • us-east1
      • southamerica-east1
      • asia-east1
      • europe-west1
    • GCS_OUTPUT_FOLDER:您要在其中保存已编码视频输出的 Cloud Storage 文件夹名称。
  2. 运行以下命令:
    gcloud beta transcoder jobs create \
        --input-uri="gs://GCS_BUCKET_NAME/GCS_INPUT_VIDEO" \
        --location=LOCATION \
        --output-uri="gs://GCS_BUCKET_NAME/GCS_OUTPUT_FOLDER/"
    您应该会看到如下所示的响应:
    {
      "name": "projects/PROJECT_NUMBER/locations/LOCATION/jobs/JOB_ID",
      "config": {
       ...
      },
      "createTime": CREATE_TIME,
      "ttlAfterCompletionDays": 30
    }
    

Go

在试用此示例之前,请按照《Transcoder API 快速入门:使用客户端库》中的 Go 设置说明进行操作。如需了解详情,请参阅 Transcoder API Go API 参考文档

import (
	"context"
	"fmt"
	"io"

	transcoder "cloud.google.com/go/video/transcoder/apiv1beta1"
	transcoderpb "google.golang.org/genproto/googleapis/cloud/video/transcoder/v1beta1"
)

// createJobFromPreset creates a job based on a given preset template. See
// https://cloud.google.com/transcoder/docs/how-to/jobs#create_jobs_presets
// for more information.
func createJobFromPreset(w io.Writer, projectID string, location string, inputURI string, outputURI string, preset string) error {
	// projectID := "my-project-id"
	// location := "us-central1"
	// inputURI := "gs://my-bucket/my-video-file"
	// outputURI := "gs://my-bucket/my-output-folder/"
	// preset := "preset/web-hd"
	ctx := context.Background()
	client, err := transcoder.NewClient(ctx)
	if err != nil {
		return fmt.Errorf("NewClient: %v", err)
	}
	defer client.Close()

	req := &transcoderpb.CreateJobRequest{
		Parent: fmt.Sprintf("projects/%s/locations/%s", projectID, location),
		Job: &transcoderpb.Job{
			InputUri:  inputURI,
			OutputUri: outputURI,
			JobConfig: &transcoderpb.Job_TemplateId{
				TemplateId: preset,
			},
		},
	}
	// Creates the job, Jobs take a variable amount of time to run.
	// You can query for the job state.
	response, err := client.CreateJob(ctx, req)
	if err != nil {
		return fmt.Errorf("createJobFromPreset: %v", err)
	}

	fmt.Fprintf(w, "Job: %v", response.GetName())
	return nil
}

Java

在试用此示例之前,请按照《Transcoder API 快速入门:使用客户端库》中的 Java 设置说明进行操作。如需了解详情,请参阅 Transcoder API Java API 参考文档


import com.google.cloud.video.transcoder.v1beta1.CreateJobRequest;
import com.google.cloud.video.transcoder.v1beta1.Job;
import com.google.cloud.video.transcoder.v1beta1.LocationName;
import com.google.cloud.video.transcoder.v1beta1.TranscoderServiceClient;
import java.io.IOException;

public class CreateJobFromPreset {

  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 inputUri = "gs://my-bucket/my-video-file";
    String outputUri = "gs://my-bucket/my-output-folder/";
    String preset = "preset/web-hd";

    createJobFromPreset(projectId, location, inputUri, outputUri, preset);
  }

  // Creates a job from a preset.
  public static void createJobFromPreset(
      String projectId, String location, String inputUri, String outputUri, String preset)
      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 (TranscoderServiceClient transcoderServiceClient = TranscoderServiceClient.create()) {

      var createJobRequest =
          CreateJobRequest.newBuilder()
              .setJob(
                  Job.newBuilder()
                      .setInputUri(inputUri)
                      .setOutputUri(outputUri)
                      .setTemplateId(preset)
                      .build())
              .setParent(LocationName.of(projectId, location).toString())
              .build();

      // Send the job creation request and process the response.
      Job job = transcoderServiceClient.createJob(createJobRequest);
      System.out.println("Job: " + job.getName());
    }
  }
}

Node.js

在尝试此示例之前,请按照《Transcoder API 快速入门:使用客户端库》中的 Node.js 设置说明进行操作。如需了解详情,请参阅 Transcoder API Node.js API 参考文档

/**
 * TODO(developer): Uncomment these variables before running the sample.
 */
// projectId = 'my-project-id';
// location = 'us-central1';
// inputUri = 'gs://my-bucket/my-video-file';
// outputUri = 'gs://my-bucket/my-output-folder/';
// preset = 'preset/web-hd';

// Imports the Transcoder library
const {TranscoderServiceClient} = require('@google-cloud/video-transcoder');

// Instantiates a client
const transcoderServiceClient = new TranscoderServiceClient();

async function createJobFromPreset() {
  // Construct request
  const request = {
    parent: transcoderServiceClient.locationPath(projectId, location),
    job: {
      inputUri: inputUri,
      outputUri: outputUri,
      templateId: preset,
    },
  };

  // Run request
  const [response] = await transcoderServiceClient.createJob(request);
  console.log(`Job: ${response.name}`);
}

createJobFromPreset();

Python

在试用此示例之前,请按照《Transcoder API 快速入门:使用客户端库》中的 Python 设置说明进行操作。如需了解详情,请参阅 Transcoder API Python API 参考文档


import argparse

from google.cloud.video import transcoder_v1beta1
from google.cloud.video.transcoder_v1beta1.services.transcoder_service import (
    TranscoderServiceClient,
)

def create_job_from_preset(project_id, location, input_uri, output_uri, preset):
    """Creates a job based on a job preset.

    Args:
        project_id: The GCP project ID.
        location: The location to start the job in.
        input_uri: Uri of the video in the Cloud Storage bucket.
        output_uri: Uri of the video output folder in the Cloud Storage bucket.
        preset: The preset template."""

    client = TranscoderServiceClient()

    parent = f"projects/{project_id}/locations/{location}"
    job = transcoder_v1beta1.types.Job()
    job.input_uri = input_uri
    job.output_uri = output_uri
    job.template_id = preset

    response = client.create_job(parent=parent, job=job)
    print(f"Job: {response.name}")
    return response

复制返回的 JOB_ID。您需要该 ID 才能获得作业的状态。

检查转码作业的状态

如需检查作业的状态,请使用 projects.locations.jobs.get 方法。

REST 和命令行

在使用下面的请求数据之前,请先进行以下替换:

  • JOB_ID:您创建的作业的 ID。
  • PROJECT_ID:您的 Google Cloud 项目 ID。
  • LOCATION:您的作业的位置。请使用以下列表中的某个位置:
    • us-central1
    • us-west1
    • us-east1
    • southamerica-east1
    • asia-east1
    • europe-west1
  • 根据您发送的请求,请展开以下选项之一:

    您应该收到类似以下内容的 JSON 响应:

    {
      "name": "projects/PROJECT_NUMBER/locations/LOCATION/jobs/JOB_ID",
      "config": {
        "inputs": [
          {
            "key": "input0",
            "uri": "gs://GCS_BUCKET_NAME/GCS_INPUT_VIDEO"
          }
        ],
        "editList": [
          {
            "key": "atom0",
            "inputs": [
              "input0"
            ],
            "startTimeOffset": "0s"
          }
        ],
        "elementaryStreams": [
          {
            "videoStream": {
              "codec": "h264",
              "profile": "high",
              "preset": "veryfast",
              "heightPixels": 360,
              "widthPixels": 640,
              "pixelFormat": "yuv420p",
              "bitrateBps": 550000,
              "rateControlMode": "vbr",
              "crfLevel": 21,
              "vbvSizeBits": 550000,
              "vbvFullnessBits": 495000,
              "gopDuration": "3s",
              "entropyCoder": "cabac",
              "frameRate": 60
            },
            "key": "video-stream0"
          },
          {
            "videoStream": {
              "codec": "h264",
              "profile": "high",
              "preset": "veryfast",
              "heightPixels": 720,
              "widthPixels": 1280,
              "pixelFormat": "yuv420p",
              "bitrateBps": 2500000,
              "rateControlMode": "vbr",
              "crfLevel": 21,
              "vbvSizeBits": 2500000,
              "vbvFullnessBits": 2250000,
              "gopDuration": "3s",
              "entropyCoder": "cabac",
              "frameRate": 60
            },
            "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"
            ]
          }
        ],
        "output": {
          "uri": "gs://GCS_BUCKET_NAME/GCS_OUTPUT_FOLDER/"
        }
      },
      "state": "SUCCEEDED"
      "createTime": CREATE_TIME,
      "startTime": START_TIME,
      "endTime": END_TIME,
      "ttlAfterCompletionDays": 30
    }
    

    gcloud

    1. gcloud 命令进行以下替换:
      • JOB_ID:您创建的作业的 ID。
      • LOCATION:您的作业的位置。请使用以下列表中的某个位置:
        • us-central1
        • us-west1
        • us-east1
        • southamerica-east1
        • asia-east1
        • europe-west1
    2. 运行以下命令:
      gcloud beta transcoder jobs describe JOB_ID --location=LOCATION
      您应该会看到如下所示的响应:
      {
        "name": "projects/PROJECT_NUMBER/locations/LOCATION/jobs/JOB_ID",
        "config": {
          "inputs": [
            {
              "key": "input0",
              "uri": "gs://GCS_BUCKET_NAME/GCS_INPUT_VIDEO"
            }
          ],
          "editList": [
            {
              "key": "atom0",
              "inputs": [
                "input0"
              ],
              "startTimeOffset": "0s"
            }
          ],
          "elementaryStreams": [
            {
              "videoStream": {
                "codec": "h264",
                "profile": "high",
                "preset": "veryfast",
                "heightPixels": 360,
                "widthPixels": 640,
                "pixelFormat": "yuv420p",
                "bitrateBps": 550000,
                "rateControlMode": "vbr",
                "crfLevel": 21,
                "vbvSizeBits": 550000,
                "vbvFullnessBits": 495000,
                "gopDuration": "3s",
                "entropyCoder": "cabac",
                "frameRate": 60
              },
              "key": "video-stream0"
            },
            {
              "videoStream": {
                "codec": "h264",
                "profile": "high",
                "preset": "veryfast",
                "heightPixels": 720,
                "widthPixels": 1280,
                "pixelFormat": "yuv420p",
                "bitrateBps": 2500000,
                "rateControlMode": "vbr",
                "crfLevel": 21,
                "vbvSizeBits": 2500000,
                "vbvFullnessBits": 2250000,
                "gopDuration": "3s",
                "entropyCoder": "cabac",
                "frameRate": 60
              },
              "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"
              ]
            }
          ],
          "output": {
            "uri": "gs://GCS_BUCKET_NAME/GCS_OUTPUT_FOLDER/"
          }
        },
        "state": "SUCCEEDED"
        "createTime": CREATE_TIME,
        "startTime": START_TIME,
        "endTime": END_TIME,
        "ttlAfterCompletionDays": 30
      }
      

    Go

    在试用此示例之前,请按照《Transcoder API 快速入门:使用客户端库》中的 Go 设置说明进行操作。如需了解详情,请参阅 Transcoder API Go API 参考文档

    import (
    	"context"
    	"fmt"
    	"io"
    
    	transcoder "cloud.google.com/go/video/transcoder/apiv1beta1"
    	transcoderpb "google.golang.org/genproto/googleapis/cloud/video/transcoder/v1beta1"
    )
    
    // getJob gets a previously-created job. See https://cloud.google.com/transcoder/docs/how-to/jobs#check_job_status
    // for more information.
    func getJob(w io.Writer, projectID string, location string, jobID string) error {
    	// projectID := "my-project-id"
    	// location := "us-central1"
    	// jobID := "my-job-id"
    	ctx := context.Background()
    	client, err := transcoder.NewClient(ctx)
    	if err != nil {
    		return fmt.Errorf("NewClient: %v", err)
    	}
    	defer client.Close()
    
    	req := &transcoderpb.GetJobRequest{
    		Name: fmt.Sprintf("projects/%s/locations/%s/jobs/%s", projectID, location, jobID),
    	}
    
    	response, err := client.GetJob(ctx, req)
    	if err != nil {
    		return fmt.Errorf("GetJob: %v", err)
    	}
    
    	fmt.Fprintf(w, "Job: %v", response)
    	return nil
    }
    

    Java

    在试用此示例之前,请按照《Transcoder API 快速入门:使用客户端库》中的 Java 设置说明进行操作。如需了解详情,请参阅 Transcoder API Java API 参考文档

    
    import com.google.cloud.video.transcoder.v1beta1.GetJobRequest;
    import com.google.cloud.video.transcoder.v1beta1.Job;
    import com.google.cloud.video.transcoder.v1beta1.JobName;
    import com.google.cloud.video.transcoder.v1beta1.TranscoderServiceClient;
    import java.io.IOException;
    
    public class GetJob {
    
      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 jobId = "my-job-id";
    
        getJob(projectId, location, jobId);
      }
    
      // Gets a job.
      public static void getJob(String projectId, String location, String jobId) 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 (TranscoderServiceClient transcoderServiceClient = TranscoderServiceClient.create()) {
          JobName jobName =
              JobName.newBuilder().setProject(projectId).setLocation(location).setJob(jobId).build();
          var getJobRequest = GetJobRequest.newBuilder().setName(jobName.toString()).build();
    
          // Send the get job request and process the response.
          Job job = transcoderServiceClient.getJob(getJobRequest);
          System.out.println("Job: " + job.getName());
        }
      }
    }

    Node.js

    在尝试此示例之前,请按照《Transcoder API 快速入门:使用客户端库》中的 Node.js 设置说明进行操作。如需了解详情,请参阅 Transcoder API Node.js API 参考文档

    /**
     * TODO(developer): Uncomment these variables before running the sample.
     */
    // projectId = 'my-project-id';
    // location = 'us-central1';
    // jobId = 'my-job-id';
    
    // Imports the Transcoder library
    const {TranscoderServiceClient} = require('@google-cloud/video-transcoder');
    
    // Instantiates a client
    const transcoderServiceClient = new TranscoderServiceClient();
    
    async function getJob() {
      // Construct request
      const request = {
        name: transcoderServiceClient.jobPath(projectId, location, jobId),
      };
      const [response] = await transcoderServiceClient.getJob(request);
      console.log(`Job: ${response.name}`);
    }
    
    getJob();

    Python

    在试用此示例之前,请按照《Transcoder API 快速入门:使用客户端库》中的 Python 设置说明进行操作。如需了解详情,请参阅 Transcoder API Python API 参考文档

    
    import argparse
    
    from google.cloud.video.transcoder_v1beta1.services.transcoder_service import (
        TranscoderServiceClient,
    )
    
    def get_job(project_id, location, job_id):
        """Gets a job.
    
        Args:
            project_id: The GCP project ID.
            location: The location this job is in.
            job_id: The job ID."""
    
        client = TranscoderServiceClient()
    
        name = f"projects/{project_id}/locations/{location}/jobs/{job_id}"
        response = client.get_job(name=name)
        print(f"Job: {response.name}")
        return response
    
    

    如果 stateSUCCEEDED,则表示作业已完成,并且您的视频输出现在可在 Cloud Storage 存储分区的已编码文件列表中找到。

    播放视频

    如需在 Shaka Player 中播放生成的媒体文件,请完成以下步骤:

    1. 请将 Cloud Storage 存储分区设为可公开读取
    2. 如需在 Cloud Storage 存储分区上启用跨域资源共享 (CORS),请执行以下操作:
      1. 创建一个包含以下代码的 JSON 文件:
        [
          {
            "origin": ["https://shaka-player-demo.appspot.com/"],
            "responseHeader": ["Content-Type", "Range"],
            "method": ["GET", "HEAD"],
            "maxAgeSeconds": 3600
          }
        ]
      2. JSON_FILE_NAME 替换为您在上一步中创建的 JSON 文件的名称,然后运行以下命令:
        gsutil cors set JSON_FILE_NAME.json gs://GCS_BUCKET_NAME
    3. 选择存储分区中生成的某个 MP4 文件。
    4. 在文件旁边(在公开访问权限列中),点击复制网址
    5. 导航到在线直播播放器 Shaka Player
    6. 点击顶部导航栏中的自定义内容
    7. 点击 + 按钮。
    8. 将文件的公开网址粘贴到清单网址框中。

    9. 名称框中输入一个名称。

    10. (可选)在 Icon 网址 框中输入与图标图片关联的网址。

    11. 点击保存

    12. 点击播放

    清理

    为避免系统因本快速入门中使用的资源向您的 Google Cloud 帐号收取费用,请按照以下步骤操作。

    1. 在 Google Cloud Console 中,转到“Cloud Storage 浏览器”页面。

      转到“Cloud Storage 浏览器”页面

    2. 选中所创建存储分区旁边的复选框。

    3. 点击删除

    4. 在显示的弹出式窗口中,点击删除以永久删除存储分区及其内容。

    您还应在作业完成后删除作业。

    REST 和命令行

    在使用下面的请求数据之前,请先进行以下替换:

  • JOB_ID:您创建的作业的 ID。
  • PROJECT_ID:您的 Google Cloud 项目 ID。
  • LOCATION:您的作业的位置。请使用以下列表中的某个位置:
    • us-central1
    • us-west1
    • us-east1
    • southamerica-east1
    • asia-east1
    • europe-west1
  • 根据您发送的请求,请展开以下选项之一:

    您应该收到类似以下内容的 JSON 响应:

    {}
    

    gcloud

    1. gcloud 命令进行以下替换:
      • JOB_ID:您创建的作业的 ID。
      • LOCATION:您的作业的位置。请使用以下列表中的某个位置:
        • us-central1
        • us-west1
        • us-east1
        • southamerica-east1
        • asia-east1
        • europe-west1
    2. 运行以下命令:
      gcloud beta transcoder jobs delete JOB_ID --location=LOCATION
      您应该会看到如下所示的响应:
      Deleted job [projects/PROJECT_ID/locations/LOCATION/jobs/JOB_ID].
      

    Go

    在试用此示例之前,请按照《Transcoder API 快速入门:使用客户端库》中的 Go 设置说明进行操作。如需了解详情,请参阅 Transcoder API Go API 参考文档

    import (
    	"context"
    	"fmt"
    	"io"
    
    	transcoder "cloud.google.com/go/video/transcoder/apiv1beta1"
    	transcoderpb "google.golang.org/genproto/googleapis/cloud/video/transcoder/v1beta1"
    )
    
    // deleteJob deletes a previously-created job. See
    // https://cloud.google.com/transcoder/docs/how-to/jobs#delete_jobs for more
    // information.
    func deleteJob(w io.Writer, projectID string, location string, jobID string) error {
    	// projectID := "my-project-id"
    	// location := "us-central1"
    	// jobID := "my-job-id"
    	ctx := context.Background()
    	client, err := transcoder.NewClient(ctx)
    	if err != nil {
    		return fmt.Errorf("NewClient: %v", err)
    	}
    	defer client.Close()
    
    	req := &transcoderpb.DeleteJobRequest{
    		Name: fmt.Sprintf("projects/%s/locations/%s/jobs/%s", projectID, location, jobID),
    	}
    
    	err = client.DeleteJob(ctx, req)
    	if err != nil {
    		return fmt.Errorf("DeleteJob: %v", err)
    	}
    
    	fmt.Fprintf(w, "Deleted job")
    	return nil
    }
    

    Java

    在试用此示例之前,请按照《Transcoder API 快速入门:使用客户端库》中的 Java 设置说明进行操作。如需了解详情,请参阅 Transcoder API Java API 参考文档

    
    import com.google.cloud.video.transcoder.v1beta1.DeleteJobRequest;
    import com.google.cloud.video.transcoder.v1beta1.JobName;
    import com.google.cloud.video.transcoder.v1beta1.TranscoderServiceClient;
    import java.io.IOException;
    
    public class DeleteJob {
    
      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 jobId = "my-job-id";
    
        deleteJob(projectId, location, jobId);
      }
    
      // Deletes a job.
      public static void deleteJob(String projectId, String location, String jobId) 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 (TranscoderServiceClient transcoderServiceClient = TranscoderServiceClient.create()) {
          JobName jobName =
              JobName.newBuilder().setProject(projectId).setLocation(location).setJob(jobId).build();
          var deleteJobRequest = DeleteJobRequest.newBuilder().setName(jobName.toString()).build();
    
          // Send the delete job request and process the response.
          transcoderServiceClient.deleteJob(deleteJobRequest);
          System.out.println("Deleted job");
        }
      }
    }

    Node.js

    在尝试此示例之前,请按照《Transcoder API 快速入门:使用客户端库》中的 Node.js 设置说明进行操作。如需了解详情,请参阅 Transcoder API Node.js API 参考文档

    /**
     * TODO(developer): Uncomment these variables before running the sample.
     */
    // projectId = 'my-project-id';
    // location = 'us-central1';
    // jobId = 'my-job-id';
    
    // Imports the Transcoder library
    const {TranscoderServiceClient} = require('@google-cloud/video-transcoder');
    
    // Instantiates a client
    const transcoderServiceClient = new TranscoderServiceClient();
    
    async function deleteJob() {
      // Construct request
      const request = {
        name: transcoderServiceClient.jobPath(projectId, location, jobId),
      };
      await transcoderServiceClient.deleteJob(request);
      console.log('Deleted job');
    }
    
    deleteJob();

    Python

    在试用此示例之前,请按照《Transcoder API 快速入门:使用客户端库》中的 Python 设置说明进行操作。如需了解详情,请参阅 Transcoder API Python API 参考文档

    
    import argparse
    
    from google.cloud.video.transcoder_v1beta1.services.transcoder_service import (
        TranscoderServiceClient,
    )
    
    def delete_job(project_id, location, job_id):
        """Gets a job.
    
        Args:
            project_id: The GCP project ID.
            location: The location this job is in.
            job_id: The job ID."""
    
        client = TranscoderServiceClient()
    
        name = f"projects/{project_id}/locations/{location}/jobs/{job_id}"
        response = client.delete_job(name=name)
        print("Deleted job")
        return response
    
    

    后续步骤