本页介绍了如何将重叠式广告插入转码后的视频。重叠式广告由输出视频上方插入的图片组成,可以在指定时间段内选择性地淡入或淡出。要插入重叠式广告,请在 JobConfig
模板中使用 overlays
数组。
请参阅支持的图片文件格式列表。
将图片上传到 Cloud Storage
如需开始操作,请执行以下操作,将重叠式广告图片上传到您的 Cloud Storage 存储分区:
- 在 Google Cloud 控制台中,前往 Cloud Storage 浏览器页面。
转到“Cloud Storage 浏览器”页面 - 点击存储分区的名称将其打开。
- 点击上传文件。
- 选择要从本地机器上传的图片文件。
创建重叠式广告
您可以创建两种重叠式广告:静态重叠式广告或动画重叠式广告。这两种类型的重叠式广告都使用静态图片。您可以显示或隐藏静态重叠式广告。动画重叠式广告支持图片的淡入和淡出动画。
您可以在单个输出视频中插入多个重叠式广告。
创建静态重叠式广告
在 image
对象中,使用 uri
字段指定 Cloud Storage 中的重叠式广告图片。在 resolution
对象中,设置 x 和 y 值(从 0 到 1.0)。如果值为 0,则系统会保持该尺寸的源图片分辨率;如果值为 1.0,则系统会缩放图片,使其与输出视频的尺寸相匹配。例如,使用值 x: 1
和 y:
0.5
将重叠式广告图片缩放到输出视频的完整宽度和一半高度。
在 animations
数组中,使用 x 和 y 坐标(从 0 到 1.0)创建一个 animationStatic
对象。这些坐标基于输出视频的分辨率。使用值 x: 0
和 y: 0
将叠加层的左上角放置在输出视频的左上角。使用 startTimeOffset
字段指定叠加层何时应出现在输出视频时间轴中。
要移除静态动画,请创建一个 animationEnd
对象。使用 startTimeOffset
字段指定动画应在输出视频时间轴的哪个时间点结束(即消失)。
您可以将此配置添加到作业模板中,也可以将其添加到临时作业配置中。
REST
在使用任何请求数据之前,请先进行以下替换:
PROJECT_ID
:IAM 设置中列出的 Google Cloud 项目 ID。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
STORAGE_BUCKET_NAME
:您创建的 Cloud Storage 存储分区的名称。STORAGE_INPUT_VIDEO
:您要对其进行转码的 Cloud Storage 存储分区中的视频的名称,例如my-vid.mp4
。此字段应考虑您在存储分区中创建的任何文件夹(例如input/my-vid.mp4
)。STORAGE_INPUT_OVERLAY
:您的 Cloud Storage 存储桶中用于重叠式广告的图片的名称,例如my-overlay.png
。此字段应考虑您在存储分区中创建的任何文件夹(例如input/my-overlay.png
)。STORAGE_OUTPUT_FOLDER
:您要在其中保存已编码视频输出的 Cloud Storage 文件夹名称。
如需发送您的请求,请展开以下选项之一:
您应该收到类似以下内容的 JSON 响应:
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION/jobs/JOB_ID", "config": { ... }, "state": "PENDING", "createTime": CREATE_TIME, "ttlAfterCompletionDays": 30 }
gcloud
- 创建一个定义作业字段的
request.json
文件。 对gcloud
命令进行以下替换:- STORAGE_BUCKET_NAME:您创建的 Cloud Storage 存储分区的名称。
- STORAGE_INPUT_VIDEO:您要对其进行转码的 Cloud Storage 存储分区中的视频的名称,例如
my-vid.mp4
。此字段应考虑您在存储分区中创建的任何文件夹(例如input/my-vid.mp4
)。 - STORAGE_INPUT_OVERLAY:
Cloud Storage 存储桶中用于叠加层的图片文件,例如
my-overlay.png
。此字段应考虑您在存储分区中创建的任何文件夹(例如input/my-overlay.png
)。 - 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
- STORAGE_OUTPUT_FOLDER:您要在其中保存已编码视频输出的 Cloud Storage 文件夹名称。
{ "config": { "inputs": [ { "key": "input0", "uri": "gs://STORAGE_BUCKET_NAME/STORAGE_INPUT_VIDEO" } ], "elementaryStreams": [ { "key": "video-stream0", "videoStream": { "h264": { "heightPixels": 360, "widthPixels": 640, "bitrateBps": 550000, "frameRate": 60 } } }, { "key": "audio-stream0", "audioStream": { "codec": "aac", "bitrateBps": 64000 } } ], "muxStreams": [ { "key": "sd", "container": "mp4", "elementaryStreams": [ "video-stream0", "audio-stream0" ] } ], "output": { "uri": "gs://STORAGE_BUCKET_NAME/STORAGE_OUTPUT_FOLDER/" }, "overlays": [ { "image": { "uri": "gs://STORAGE_BUCKET_NAME/STORAGE_INPUT_OVERLAY", "resolution": { "x": 1, "y": 0.5 }, "alpha": 1 }, "animations": [ { "animationStatic": { "xy": { "x": 0, "y": 0 }, "startTimeOffset": "0s" } }, { "animationEnd": { "startTimeOffset": "10s" } } ] } ] } }
- 运行以下命令:
您应该会看到类似于以下内容的响应:gcloud transcoder jobs create --location=LOCATION --file="request.json"
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION/jobs/JOB_ID", "config": { ... }, "state": "PENDING", "createTime": CREATE_TIME, "ttlAfterCompletionDays": 30 }
C#
在试用此示例之前,请按照 Transcoder API 快速入门:使用客户端库中的 C# 设置说明进行操作。 如需了解详情,请参阅 Transcoder API C# API 参考文档。
如需向 Transcoder API 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Go
在试用此示例之前,请按照 Transcoder API 快速入门:使用客户端库中的 Go 设置说明进行操作。 有关详情,请参阅 Transcoder API Go API 参考文档。
如需向 Transcoder API 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Java
在尝试此示例之前,请按照Java Transcoder API 快速入门:使用 客户端库。 有关详情,请参阅 Transcoder API Java API 参考文档。
如需向 Transcoder API 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Node.js
在试用此示例之前,请按照 Transcoder API 快速入门:使用客户端库中的 Node.js 设置说明进行操作。 有关详情,请参阅 Transcoder API Node.js API 参考文档。
如需向 Transcoder API 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
PHP
在试用此示例之前,请按照 Transcoder API 快速入门:使用客户端库中的 PHP 设置说明进行操作。 如需了解详情,请参阅 Transcoder API PHP API 参考文档。
如需向 Transcoder API 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Python
在尝试此示例之前,请按照Python Transcoder API 快速入门:使用 客户端库。 如需了解详情,请参阅 Transcoder API Python API 参考文档。
如需向 Transcoder API 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Ruby
在试用此示例之前,请按照 Transcoder API 快速入门:使用客户端库中的 Ruby 设置说明进行操作。 如需了解详情,请参阅 Transcoder API Ruby API 参考文档。
如需向 Transcoder API 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
在输出视频中,静态重叠式广告具有以下特征:
- 它显示在时间轴的开头,并且持续显示 10 秒。
- 它会缩放到输出视频的完整宽度和一半高度。
- 它位于输出视频的左上角。
如需了解此配置,请参阅示例输出视频。此视频使用示例重叠式广告图片。
创建动画重叠式广告
在 image
对象中,使用 uri
字段指定 Cloud Storage 中的重叠式广告图片。在 resolution
对象中,设置 x 和 y 值(从 0 到 1.0)。如果值为 0,则系统会保持该尺寸的源图片分辨率;如果值为 1.0,则系统会缩放图片,使其与输出视频的尺寸相匹配。例如,使用值 x: 0
和 y: 0
来保持重叠式广告图片的原始分辨率。
在 animations
数组中,创建一个 fadeType
为 FADE_IN
的 animationFade
对象。设置 x 和 y 坐标(从 0 到 1.0)。这些坐标基于输出视频的分辨率。使用值 x: 0.5
和 y: 0.5
将重叠式广告的左上角放置在输出视频的中心。使用 startTimeOffset
字段指定重叠式广告应在输出视频时间轴的哪个时间点开始显示。在 endTimeOffset
字段设置的时间内,重叠式广告应完全可见。
如需让重叠式广告淡出,请创建另一个 animationFade
对象。这一次,请将 fadeType
设置为 FADE_OUT
。像之前一样,输入位置坐标以及开始时间和结束时间。
您可以将此配置添加到作业模板中,也可以将其添加到临时作业配置中。
REST
在使用任何请求数据之前,请先进行以下替换:
PROJECT_ID
:IAM 设置中列出的 Google Cloud 项目 ID。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
STORAGE_BUCKET_NAME
:您创建的 Cloud Storage 存储分区的名称。STORAGE_INPUT_VIDEO
:您要对其进行转码的 Cloud Storage 存储分区中的视频的名称,例如my-vid.mp4
。此字段应考虑您在存储分区中创建的任何文件夹(例如input/my-vid.mp4
)。STORAGE_INPUT_OVERLAY
:您的 Cloud Storage 存储桶中用于重叠式广告的图片的名称,例如my-overlay.png
。此字段应考虑您在存储分区中创建的任何文件夹(例如input/my-overlay.png
)。STORAGE_OUTPUT_FOLDER
:您要在其中保存已编码视频输出的 Cloud Storage 文件夹名称。
如需发送您的请求,请展开以下选项之一:
您应该收到类似以下内容的 JSON 响应:
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION/jobs/JOB_ID", "config": { ... }, "state": "PENDING", "createTime": CREATE_TIME, "ttlAfterCompletionDays": 30 }
gcloud
- 创建一个定义作业字段的
request.json
文件。 对gcloud
命令进行以下替换:- STORAGE_BUCKET_NAME:您创建的 Cloud Storage 存储分区的名称。
- STORAGE_INPUT_VIDEO:您要对其进行转码的 Cloud Storage 存储分区中的视频的名称,例如
my-vid.mp4
。此字段应考虑您在存储分区中创建的任何文件夹(例如input/my-vid.mp4
)。 - STORAGE_INPUT_OVERLAY:
Cloud Storage 存储桶中用于叠加层的图片文件,例如
my-overlay.png
。此字段应考虑您在存储分区中创建的任何文件夹(例如input/my-overlay.png
)。 - 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
- STORAGE_OUTPUT_FOLDER:您要在其中保存已编码视频输出的 Cloud Storage 文件夹名称。
{ "config": { "inputs": [ { "key": "input0", "uri": "gs://STORAGE_BUCKET_NAME/STORAGE_INPUT_VIDEO" } ], "elementaryStreams": [ { "key": "video-stream0", "videoStream": { "h264": { "heightPixels": 360, "widthPixels": 640, "bitrateBps": 550000, "frameRate": 60 } } }, { "key": "audio-stream0", "audioStream": { "codec": "aac", "bitrateBps": 64000 } } ], "muxStreams": [ { "key": "sd", "container": "mp4", "elementaryStreams": [ "video-stream0", "audio-stream0" ] } ], "output": { "uri": "gs://STORAGE_BUCKET_NAME/STORAGE_OUTPUT_FOLDER/" }, "overlays": [ { "image": { "uri": "gs://STORAGE_BUCKET_NAME/STORAGE_INPUT_OVERLAY", "resolution": { "x": 0, "y": 0 }, "alpha": 1 }, "animations": [ { "animationFade": { "fadeType": "FADE_IN", "xy": { "x": 0.5, "y": 0.5 }, "startTimeOffset": "5s", "endTimeOffset": "10s" } }, { "animationFade": { "fadeType": "FADE_OUT", "xy": { "x": 0.5, "y": 0.5 }, "startTimeOffset": "12s", "endTimeOffset": "15s" } } ] } ] } }
- 运行以下命令:
您应该会看到如下所示的响应:gcloud transcoder jobs create --location=LOCATION --file="request.json"
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION/jobs/JOB_ID", "config": { ... }, "state": "PENDING", "createTime": CREATE_TIME, "ttlAfterCompletionDays": 30 }
C#
在试用此示例之前,请按照 Transcoder API 快速入门:使用客户端库中的 C# 设置说明进行操作。 有关详情,请参阅 Transcoder API C# API 参考文档。
如需向 Transcoder API 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Go
在试用此示例之前,请按照 Transcoder API 快速入门:使用客户端库中的 Go 设置说明进行操作。 有关详情,请参阅 Transcoder API Go API 参考文档。
如需向 Transcoder API 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Java
在尝试此示例之前,请按照Java Transcoder API 快速入门:使用 客户端库。 如需了解详情,请参阅 Transcoder API Java API 参考文档。
如需向 Transcoder API 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Node.js
在尝试此示例之前,请按照Node.js Transcoder API 快速入门:使用 客户端库。 有关详情,请参阅 Transcoder API Node.js API 参考文档。
如需向 Transcoder API 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
PHP
在尝试此示例之前,请按照PHP Transcoder API 快速入门:使用 客户端库。 有关详情,请参阅 Transcoder API PHP API 参考文档。
如需向 Transcoder API 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Python
在尝试此示例之前,请按照Python Transcoder API 快速入门:使用 客户端库。 如需了解详情,请参阅 Transcoder API Python API 参考文档。
如需向 Transcoder API 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Ruby
在试用此示例之前,请按照 Transcoder API 快速入门:使用客户端库中的 Ruby 设置说明进行操作。 如需了解详情,请参阅 Transcoder API Ruby API 参考文档。
如需向 Transcoder API 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
在生成的视频中,动画重叠式广告具有以下特征:
- 它会在输出视频的 5 秒标记处开始淡入。重叠式广告的 alpha 值从 0 开始,到 1.0 结束。重叠式广告的左上角会显示在输出视频的中心。重叠式广告会以重叠式广告图片的原始分辨率显示。
- 淡入后,重叠式广告会显示 2 秒钟。
- 它会在输出视频的 12 秒标记处开始淡出。重叠式广告的 alpha 值从 1.0 开始,到 0 结束。
- 动画会在显示 15 秒标记后消失。
如需了解此配置,请参阅示例输出视频。此视频使用示例重叠式广告图片。