您可以使用 YouTube Live Streaming API 在 YouTube 上创建、更新和管理直播活动。使用此 API,您可以安排活动(直播)时间,并将其与代表实际直播内容的视频流关联在一起。
Live Streaming API 实际上由 YouTube Data API 和 YouTube Content ID API 的组件组成。Data API 可让 YouTube 用户管理自己的 YouTube 账号,而 YouTube Content ID API 则可让 YouTube 用户与 YouTube 的权利管理系统进行互动。不过,组成 Live Streaming API 的所有资源都仅用于创建和管理直播活动。
本文档适用于希望编写应用程序以在 YouTube 上进行现场直播的开发者。介绍了 YouTube 的基本概念和 API 本身。此外,它还概述了 API 支持的不同函数。
核心概念
- 广播 广播表示活动正在进行时,可在 YouTube 上观看。系统还可以录制直播并将其保存为 YouTube 视频,以便用户在直播后观看。 溪流 数据流用于标识向 YouTube 传送的音频/视频内容。每次广播都与一个视频流相关联。 广告插入点 广告插入点表示可插入到直播中的广告插播时间点。
API 用例
以下列表推荐了在应用中使用该 API 的几种方法:
testing
live
前期准备
- 您需要 Google 账号才能访问 Google API Console、请求 API 密钥和注册应用。 通过 Google 注册您的应用以提交 API 请求。 注册应用后,选择 YouTube Data API 作为应用使用的一项服务: 转到 API Console,然后选择您刚刚注册的项目。 访问“已启用的 API”页面。 在 API 列表中,确保 YouTube Data API v3 和 YouTube Content ID API(如果您是 YouTube 内容合作伙伴)的状态为启用。 熟悉 JavaScript 对象表示法 (JSON) 数据格式的核心概念。JSON 是一种与语言无关的常见数据格式,可通过简单的文本方式来表示任意数据结构。如需了解详情,请参阅 json.org。
为 API 请求授权
如上所述,Live Streaming API 使用的功能在技术上是 YouTube Data API 或 YouTube Content ID API 的一部分。您可以使用 Content ID API 向 YouTube 提供与您的资产有关的元数据、所有权信息和政策信息。(直播视频就是资产的一个示例)。您还可以使用该 API 声明视频版权并为视频设置广告政策。
本部分介绍了对 Content ID API 的请求的授权要求,这些要求不同于授权其他 Live Streaming API 请求的要求。
- 调用 Data API 该 API 请求必须获得播放 YouTube 频道的 Google 账号的授权。 调用 Content ID API 该 API 请求必须获得 Google 账号的授权,该 Google 账号必须与拥有播出的 YouTube 频道的内容所有者相关联。
资源和资源类型
liveBroadcast
liveStream
cuepoint
liveBroadcast
liveBroadcast
liveBroadcast
liveBroadcast
video
liveStream
liveStream
liveBroadcast
liveBroadcast
liveStream
cuepoint
liveBroadcasts.cuepoint
video
liveBroadcast
video
videoAdvertisingOptions
asset
asset
claim
policy
支持的操作
下表显示了该 API 支持的不同方法:
list
GET
insert
POST
update
PUT
bind
liveBroadcast
liveStream
transition
liveBroadcast
testing
delete
DELETE
list
支持的操作 list insert update bind transition cuepoint delete liveBroadcast liveStream部分资源
该 API 允许且实际上要求检索部分资源,以便应用避免传输、解析和存储不需要的数据。此方法还可确保 API 更高效地使用网络、CPU 和内存资源。
part
liveStream
snippet
cdn
status
part
- 它可以防止 API 服务器花时间检索应用未使用的元数据字段,从而缩短延迟时间。 通过减少(或消除)应用可能检索的不必要数据量,减少带宽使用量。
随着时间的推移,随着资源越来越多,这些优势只会越来越大,因为您的应用将不会请求它不支持的新引入的属性。
技巧和最佳做法
声明内容版权
如果您想要在直播期间展示广告,则需要在直播开始前声明对直播视频的所有权。要对内容声明版权,您必须是参与Content ID计划的 YouTube 内容合作伙伴。
声明直播视频所有权的流程不同于声明视频的常规流程。在对实时视频声明版权时,您需要在视频实际存在之前创建声明。该 API 支持此功能,而且直播的生命周期文档介绍了可以帮助您创建声明的 YouTube Content ID API 调用。
预览和测试您的内容
收到您的入站视频流后,YouTube 就可以在两个不同的出站视频流中播放该视频:
testing
public
private
unlisted
YouTube 建议你为直播启用监控视频流,以便你测试自己的内容。您应该根据自己希望控制广告插入点时间(而不是与观众互动或提供事件的实时报道)来延迟直播。
在直播期间投放中贴片广告
在直播期间,您可以插入广告插入点,以指明广告插播时间点应在以下时间后开始播放: 尽快或在指定的时间进行。广告插播时间点让 YouTube 可以投放 中贴片广告
广告插播时间点具有以下特征:
cuepoint
durationSecs
下面的步骤顺序反映了在直播期间插入广告插播时间点的最佳做法:
设置时间偏移值
插入广告插入点时,您可以指定应该立即插入,也可以指定 应插入直播的特定时间点。具体选项取决于 你的视频的直播出现延迟。
walltimeMs
liveBroadcasts.cuepoint
insertionOffsetTimeMs
0
walltimeMs
liveBroadcasts.cuepoint
walltimeMs
testing
live
cuepoint
insertionOffsetTimeMs
计算时间偏移值
getCurrentTime
偏移时间的可能值可通过以下范围计算得出:
[(elapsed_time - broadcast_delay + Δ), (elapsed_time - Δ)]
Δ
live
[(485,000), (535,000)]
这些时间以毫秒为单位指定,并使用以下值计算得出:
elapsed_time=540000
liveBroadcasts.cuepoint
broadcast_delay=60000
Δ=5000
问题排查和错误处理
以下指南介绍了如何解决可能出现的具体问题。对于列表 有关每种 API 方法可能返回的错误的详细信息,请参阅 YouTube Live Streaming API - 错误。
liveBroadcasts.transition
ready
testing
testStarting
testing
testStarting
liveStarting
liveBroadcasts.delete
liveBroadcasts.transition
status.streamStatus
active