本页介绍了如何创建可选广告并将其插入直播。可选广告是指可以随时替换主直播内容的内容(例如,如果您在输入流方面遇到技术问题或隐藏输入流中的敏感内容)。
设置您的 Google Cloud 项目和身份验证
如果您尚未创建 Google Cloud 项目和凭据,请参阅准备工作。将视频上传到 Cloud Storage 存储桶
- 在 Google Cloud 控制台中,前往“Cloud Storage 浏览器”页面。
转到“Cloud Storage 浏览器”页面 - 点击存储桶的名称将其打开。
- 点击上传文件。
- 选择要从本地计算机上传的视频文件。您可以使用一个 60 秒的示例视频。
您的视频现已保存到 Cloud Storage 存储桶。
创建资产
素材资源是可与 Live Stream API 搭配使用的视频或图片。素材资源用于创建插入可选广告渠道事件。您应该在打算将资源用于可选广告之前创建资源,因为 API 需要一些时间来处理资源。如果资源在从可选广告事件执行时间起两秒后仍未准备就绪,则系统会在资源准备就绪之前显示黑屏。
如需创建资产,请使用 projects.locations.assets.create
方法。以下示例展示了如何创建视频素材资源。
REST
在使用任何请求数据之前,请先进行以下替换:
PROJECT_NUMBER
:您的 Google Cloud 项目编号;位于 IAM 设置页面上的项目编号字段中LOCATION
:创建资产的位置;请使用支持的区域之一显示位置信息us-central1
us-east1
us-east4
us-west1
us-west2
northamerica-northeast1
southamerica-east1
asia-east1
asia-east2
asia-northeast1
asia-southeast1
australia-southeast1
europe-west1
europe-west2
europe-west3
europe-west4
ASSET_ID
:要创建的新资产的用户定义的标识符。此值必须为 1-63 个字符,以[a-z0-9]
开头和结尾,可在字符之间包含短划线 (-)。例如my-asset
。ASSET_URI
:要在 Cloud Storage 存储桶中使用的视频的 URI,例如gs://my-bucket/my-video.mp4
(请参阅支持的媒体格式)
如需发送您的请求,请展开以下选项之一:
您应该收到类似以下内容的 JSON 响应:
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.video.livestream.v1.OperationMetadata", "createTime": CREATE_TIME, "target": "projects/PROJECT_NUMBER/locations/LOCATION/assets/ASSET_ID", "verb": "create", "requestedCancellation": false, "apiVersion": "v1" }, "done": false }
C#
如需了解如何安装和使用 Live Stream API 客户端库,请参阅 Live Stream API 客户端库。 如需了解详情,请参阅 Live Stream API C# API 参考文档。
如需向 Live Stream API 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
Go
如需了解如何安装和使用 Live Stream API 客户端库,请参阅 Live Stream API 客户端库。 如需了解详情,请参阅 Live Stream API Go API 参考文档。
如需向 Live Stream API 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
Java
如需了解如何安装和使用 Live Stream API 客户端库,请参阅 Live Stream API 客户端库。 如需了解详情,请参阅 Live Stream API Java API 参考文档。
如需向 Live Stream API 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
Node.js
如需了解如何安装和使用 Live Stream API 客户端库,请参阅 Live Stream API 客户端库。 如需了解详情,请参阅 Live Stream API Node.js API 参考文档。
如需向 Live Stream API 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
PHP
如需了解如何安装和使用 Live Stream API 客户端库,请参阅 Live Stream API 客户端库。 如需了解详情,请参阅 Live Stream API PHP API 参考文档。
如需向 Live Stream API 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
Python
如需了解如何安装和使用 Live Stream API 客户端库,请参阅 Live Stream API 客户端库。 如需了解详情,请参阅 Live Stream API Python API 参考文档。
如需向 Live Stream API 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
Ruby
如需了解如何安装和使用 Live Stream API 客户端库,请参阅 Live Stream API 客户端库。 如需了解详情,请参阅 Live Stream API Ruby API 参考文档。
如需向 Live Stream API 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
创建输入端点
如需创建输入端点,请使用 projects.locations.inputs.create
方法。
REST
在使用任何请求数据之前,请先进行以下替换:
PROJECT_NUMBER
:您的 Google Cloud 项目编号;位于 IAM 设置页面上的项目编号字段中LOCATION
:要在其中创建输入端点的位置;请使用支持的区域之一显示位置信息us-central1
us-east1
us-east4
us-west1
us-west2
northamerica-northeast1
southamerica-east1
asia-east1
asia-east2
asia-northeast1
asia-southeast1
australia-southeast1
europe-west1
europe-west2
europe-west3
europe-west4
INPUT_ID
:用户定义的新输入端点标识符,要创建的新输入端点(您将输入流发送到此端点)。此值必须为 1-63 个字符,以[a-z0-9]
开头和结尾,可在字符之间包含短划线 (-)。例如my-input
。
如需发送您的请求,请展开以下选项之一:
您应该收到类似以下内容的 JSON 响应:
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.video.livestream.v1.OperationMetadata", "createTime": CREATE_TIME, "target": "projects/PROJECT_NUMBER/locations/LOCATION/inputs/INPUT_ID", "verb": "create", "requestedCancellation": false, "apiVersion": "v1" }, "done": false }
C#
如需了解如何安装和使用 Live Stream API 客户端库,请参阅 Live Stream API 客户端库。 如需了解详情,请参阅 Live Stream API C# API 参考文档。
如需向 Live Stream API 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
Go
如需了解如何安装和使用 Live Stream API 客户端库,请参阅 Live Stream API 客户端库。 如需了解详情,请参阅 Live Stream API Go API 参考文档。
如需向 Live Stream API 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
Java
如需了解如何安装和使用 Live Stream API 客户端库,请参阅 Live Stream API 客户端库。 如需了解详情,请参阅 Live Stream API Java API 参考文档。
如需向 Live Stream API 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
Node.js
如需了解如何安装和使用 Live Stream API 客户端库,请参阅 Live Stream API 客户端库。 如需了解详情,请参阅 Live Stream API Node.js API 参考文档。
如需向 Live Stream API 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
PHP
如需了解如何安装和使用 Live Stream API 客户端库,请参阅 Live Stream API 客户端库。 如需了解详情,请参阅 Live Stream API PHP API 参考文档。
如需向 Live Stream API 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
Python
如需了解如何安装和使用 Live Stream API 客户端库,请参阅 Live Stream API 客户端库。 如需了解详情,请参阅 Live Stream API Python API 参考文档。
如需向 Live Stream API 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
Ruby
如需了解如何安装和使用 Live Stream API 客户端库,请参阅 Live Stream API 客户端库。 如需了解详情,请参阅 Live Stream API Ruby API 参考文档。
如需向 Live Stream API 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
获取输入端点详情
如需获取输入端点的详细信息,请使用 projects.locations.inputs.get
方法。
REST
在使用任何请求数据之前,请先进行以下替换:
PROJECT_NUMBER
:您的 Google Cloud 项目编号;位于 IAM 设置页面上的项目编号字段中LOCATION
:输入端点所在的位置;请使用支持的区域之一显示位置信息us-central1
us-east1
us-east4
us-west1
us-west2
northamerica-northeast1
southamerica-east1
asia-east1
asia-east2
asia-northeast1
asia-southeast1
australia-southeast1
europe-west1
europe-west2
europe-west3
europe-west4
INPUT_ID
:用户定义的输入端点标识符
如需发送您的请求,请展开以下选项之一:
您应该收到类似以下内容的 JSON 响应:
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION/inputs/INPUT_ID", "createTime": CREATE_TIME, "updateTime": UPDATE_TIME, "type": "RTMP_PUSH", "uri": INPUT_STREAM_URI, # For example, "rtmp://1.2.3.4/live/b8ebdd94-c8d9-4d88-a16e-b963c43a953b", "tier": "HD" }
C#
如需了解如何安装和使用 Live Stream API 客户端库,请参阅 Live Stream API 客户端库。 如需了解详情,请参阅 Live Stream API C# API 参考文档。
如需向 Live Stream API 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
Go
如需了解如何安装和使用 Live Stream API 客户端库,请参阅 Live Stream API 客户端库。 如需了解详情,请参阅 Live Stream API Go API 参考文档。
如需向 Live Stream API 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
Java
如需了解如何安装和使用 Live Stream API 客户端库,请参阅 Live Stream API 客户端库。 如需了解详情,请参阅 Live Stream API Java API 参考文档。
如需向 Live Stream API 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
Node.js
如需了解如何安装和使用 Live Stream API 客户端库,请参阅 Live Stream API 客户端库。 如需了解详情,请参阅 Live Stream API Node.js API 参考文档。
如需向 Live Stream API 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
PHP
如需了解如何安装和使用 Live Stream API 客户端库,请参阅 Live Stream API 客户端库。 如需了解详情,请参阅 Live Stream API PHP API 参考文档。
如需向 Live Stream API 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
Python
如需了解如何安装和使用 Live Stream API 客户端库,请参阅 Live Stream API 客户端库。 如需了解详情,请参阅 Live Stream API Python API 参考文档。
如需向 Live Stream API 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
Ruby
如需了解如何安装和使用 Live Stream API 客户端库,请参阅 Live Stream API 客户端库。 如需了解详情,请参阅 Live Stream API Ruby API 参考文档。
如需向 Live Stream API 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
找到 uri
字段并复制返回的 INPUT_STREAM_URI,以便稍后在发送输入流部分使用。
创建频道
如需创建渠道,请使用 projects.locations.channels.create
方法。以下示例创建了一个可生成 HLS 直播的频道。直播活动由单个高清 (1280x720) 呈现内容组成。
REST
在使用任何请求数据之前,请先进行以下替换:
PROJECT_NUMBER
:您的 Google Cloud 项目编号;位于 IAM 设置页面上的项目编号字段中LOCATION
:要在其中创建频道的位置;请使用支持的区域之一显示位置信息us-central1
us-east1
us-east4
us-west1
us-west2
northamerica-northeast1
southamerica-east1
asia-east1
asia-east2
asia-northeast1
asia-southeast1
australia-southeast1
europe-west1
europe-west2
europe-west3
europe-west4
CHANNEL_ID
:用户定义的频道标识符;此值必须为 1-63 个字符,以[a-z0-9]
开头和结尾,并且可以在字符之间包含短划线 (-)INPUT_ID
:用户定义的输入端点标识符BUCKET_NAME
:您为了保存直播清单和片段文件而创建的 Cloud Storage 存储桶的名称
如需发送您的请求,请展开以下选项之一:
您应该收到类似以下内容的 JSON 响应:
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.video.livestream.v1.OperationMetadata", "createTime": CREATE_TIME, "target": "projects/PROJECT_NUMBER/locations/LOCATION/channels/CHANNEL_ID", "verb": "create", "requestedCancellation": false, "apiVersion": "v1" }, "done": false }
C#
如需了解如何安装和使用 Live Stream API 客户端库,请参阅 Live Stream API 客户端库。 如需了解详情,请参阅 Live Stream API C# API 参考文档。
如需向 Live Stream API 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
Go
如需了解如何安装和使用 Live Stream API 客户端库,请参阅 Live Stream API 客户端库。 如需了解详情,请参阅 Live Stream API Go API 参考文档。
如需向 Live Stream API 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
Java
如需了解如何安装和使用 Live Stream API 客户端库,请参阅 Live Stream API 客户端库。 如需了解详情,请参阅 Live Stream API Java API 参考文档。
如需向 Live Stream API 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
Node.js
如需了解如何安装和使用 Live Stream API 客户端库,请参阅 Live Stream API 客户端库。 如需了解详情,请参阅 Live Stream API Node.js API 参考文档。
如需向 Live Stream API 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
PHP
如需了解如何安装和使用 Live Stream API 客户端库,请参阅 Live Stream API 客户端库。 如需了解详情,请参阅 Live Stream API PHP API 参考文档。
如需向 Live Stream API 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
Python
如需了解如何安装和使用 Live Stream API 客户端库,请参阅 Live Stream API 客户端库。 如需了解详情,请参阅 Live Stream API Python API 参考文档。
如需向 Live Stream API 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
Ruby
如需了解如何安装和使用 Live Stream API 客户端库,请参阅 Live Stream API 客户端库。 如需了解详情,请参阅 Live Stream API Ruby API 参考文档。
如需向 Live Stream API 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
创建频道
如需启动某个渠道,请使用 projects.locations.channels.start
方法。
REST
在使用任何请求数据之前,请先进行以下替换:
PROJECT_NUMBER
:您的 Google Cloud 项目编号;位于 IAM 设置页面上的项目编号字段中LOCATION
:您的频道所在的位置;请使用支持的区域之一显示位置信息us-central1
us-east1
us-east4
us-west1
us-west2
northamerica-northeast1
southamerica-east1
asia-east1
asia-east2
asia-northeast1
asia-southeast1
australia-southeast1
europe-west1
europe-west2
europe-west3
europe-west4
CHANNEL_ID
:用户定义的频道标识符
如需发送您的请求,请展开以下选项之一:
您应该收到类似以下内容的 JSON 响应:
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.video.livestream.v1.OperationMetadata", "createTime": CREATE_TIME, "target": "projects/PROJECT_NUMBER/locations/LOCATION/channels/CHANNEL_ID", "verb": "start", "requestedCancellation": false, "apiVersion": "v1" }, "done": false }
C#
如需了解如何安装和使用 Live Stream API 客户端库,请参阅 Live Stream API 客户端库。 如需了解详情,请参阅 Live Stream API C# API 参考文档。
如需向 Live Stream API 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
Go
如需了解如何安装和使用 Live Stream API 客户端库,请参阅 Live Stream API 客户端库。 如需了解详情,请参阅 Live Stream API Go API 参考文档。
如需向 Live Stream API 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
Java
如需了解如何安装和使用 Live Stream API 客户端库,请参阅 Live Stream API 客户端库。 如需了解详情,请参阅 Live Stream API Java API 参考文档。
如需向 Live Stream API 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
Node.js
如需了解如何安装和使用 Live Stream API 客户端库,请参阅 Live Stream API 客户端库。 如需了解详情,请参阅 Live Stream API Node.js API 参考文档。
如需向 Live Stream API 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
PHP
如需了解如何安装和使用 Live Stream API 客户端库,请参阅 Live Stream API 客户端库。 如需了解详情,请参阅 Live Stream API PHP API 参考文档。
如需向 Live Stream API 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
Python
如需了解如何安装和使用 Live Stream API 客户端库,请参阅 Live Stream API 客户端库。 如需了解详情,请参阅 Live Stream API Python API 参考文档。
如需向 Live Stream API 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
Ruby
如需了解如何安装和使用 Live Stream API 客户端库,请参阅 Live Stream API 客户端库。 如需了解详情,请参阅 Live Stream API Ruby API 参考文档。
如需向 Live Stream API 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
发送输入流
如果您使用 ffmpeg
发送测试流,请打开一个新的终端窗口。使用获取输入端点详细信息部分中的 INPUT_STREAM_URI 运行以下命令:
ffmpeg -re -f lavfi -i "testsrc=size=1280x720 [out0]; sine=frequency=500 [out1]" \
-acodec aac -vcodec h264 -f flv INPUT_STREAM_URI
观看直播
如需在 Shaka Player 中播放生成的媒体文件,请完成以下步骤:
- 请将 Cloud Storage 存储桶设为可公开读取。
- 如需在 Cloud Storage 存储桶上启用跨域资源共享 (CORS),请执行以下操作:
- 创建一个包含以下代码的 JSON 文件:
[ { "origin": ["https://shaka-player-demo.appspot.com/"], "responseHeader": ["Content-Type", "Range"], "method": ["GET", "HEAD"], "maxAgeSeconds": 3600 } ]
-
将 JSON_FILE_NAME 替换为您在上一步中创建的 JSON 文件的名称,然后运行以下命令:
gsutil cors set JSON_FILE_NAME.json gs://BUCKET_NAME
- 创建一个包含以下代码的 JSON 文件:
- 在 Cloud Storage 存储桶中,找到生成的文件。在该文件的公开访问权限列中,点击复制网址。
- 导航到在线直播播放器 Shaka Player。
- 点击顶部导航栏中的自定义内容。
- 点击 + 按钮。
将文件的公开网址粘贴到清单网址框中。
在名称框中输入一个名称。
点击保存。
点击播放。
您应该会看到作为直播呈现的测试流。
创建频道活动
如需创建渠道事件,请使用 projects.locations.channels.events.create
方法。以下示例会将可选广告作为频道事件插入到直播中。
如果可选广告素材资源尚未准备就绪(事件执行开始后两秒),则系统会显示黑屏,直到可选广告素材资源准备就绪。
REST
在使用任何请求数据之前,请先进行以下替换:
PROJECT_NUMBER
:您的 Google Cloud 项目编号;位于 IAM 设置页面上的项目编号字段中LOCATION
:您的频道所在的位置;请使用支持的区域之一显示位置信息us-central1
us-east1
us-east4
us-west1
us-west2
northamerica-northeast1
southamerica-east1
asia-east1
asia-east2
asia-northeast1
asia-southeast1
australia-southeast1
europe-west1
europe-west2
europe-west3
europe-west4
CHANNEL_ID
:用户定义的频道标识符EVENT_ID
:用户定义的事件标识符ASSET_ID
:用户定义的可选广告资产标识符
如需发送您的请求,请展开以下选项之一:
您应该收到类似以下内容的 JSON 响应:
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION/channels/CHANNEL_ID/events/EVENT_ID", "createTime": CREATE_TIME, "updateTime": UPDATE_TIME, "slate": { "duration": "60s", "asset": "projects/PROJECT_NUMBER/locations/LOCATION/assets/ASSET_ID" }, "executeNow": "true", "state": "PENDING" }
请检查直播活动,看看是否已插入可选广告。您还可以检查该事件是否已将 state
设置为 SUCCEEDED
(请参阅获取渠道事件详情)。
如需创建长时间运行的可选广告,请从 slate
对象中移除 duration
字段。如需移除长时间运行的可选广告,请创建“返回节目频道”事件。