该 API 现在支持将直播标记为“面向儿童的内容”,并且
liveBroadcast 资源现在包含一个属性,用于标识相应直播的“面向儿童的内容”状态。YouTube API 服务的《服务条款》和《开发者政策》也于 2020 年 1 月 10 日更新。如需了解详情,请参阅 YouTube Live Streaming API 服务的修订历史记录和 YouTube API 服务的服务条款。liveBroadcast 资源表示将在 YouTube 上使用直播视频进行直播的活动。
方法
该 API 支持对 liveBroadcasts 资源使用以下方法:
- list
- 返回与 API 请求参数匹配的 YouTube 直播列表。立即试用。
- insert
- 创建广播。 立即试用。
- update
- 更新广播。例如,您可以修改
liveBroadcast资源的contentDetails对象中定义的广播设置。立即试用。 - delete
- 删除广播。 立即试用。
- bind
- 将 YouTube 直播绑定到直播,或解除直播与直播之间的现有绑定。一个直播只能绑定到一个视频流,但一个视频流可以绑定到多个直播。 立即试用。
- transition
- 更改 YouTube 直播的状态,并启动与新状态关联的所有进程。例如,当您将直播的状态转换为
testing时,YouTube 会开始向该直播的监控数据流传输视频。在调用此方法之前,您应确认绑定到广播的串流的status.streamStatus属性的值为active。立即试用。 - cuepoint
- 将 cue 点插入直播中。该 cuepoint 可能会触发广告插播时间点。
资源表示法
以下 JSON 结构显示了 liveBroadcasts 资源的格式:
{
"kind": "youtube#liveBroadcast",
"etag": etag,
"id": string,
"snippet": {
"publishedAt": datetime,
"channelId": string,
"title": string,
"description": string,
"thumbnails": {
(key): {
"url": string,
"width": unsigned integer,
"height": unsigned integer
}
},
"scheduledStartTime": datetime,
"scheduledEndTime": datetime,
"actualStartTime": datetime,
"actualEndTime": datetime,
"isDefaultBroadcast": boolean,
"liveChatId": string
},
"status": {
"lifeCycleStatus": string,
"privacyStatus": string,
"recordingStatus": string,
"madeForKids": string,
"selfDeclaredMadeForKids": string,
},
"contentDetails": {
"boundStreamId": string,
"boundStreamLastUpdateTimeMs": datetime,
"monitorStream": {
"enableMonitorStream": boolean,
"broadcastStreamDelayMs": unsigned integer,
"embedHtml": string
},
"enableEmbed": boolean,
"enableDvr": boolean,
"recordFromStart": boolean,
"enableClosedCaptions": boolean,
"closedCaptionsType": string,
"projection": string,
"enableLowLatency": boolean,
"latencyPreference": boolean,
"enableAutoStart": boolean,
"enableAutoStop": boolean
},
"statistics": {
"totalChatCount": unsigned long
},
"monetizationDetails": {
"cuepointSchedule": {
"enabled": boolean,
"pauseAdsUntil": datetime,
"scheduleStrategy": string,
"repeatIntervalSecs": unsigned integer,
}
}
}
}属性
下表定义了此资源中显示的属性:
| 属性 | |
|---|---|
kind |
string用于标识 API 资源的类型。该值将为 youtube#liveBroadcast。 |
etag |
etag此资源的 ETag。 |
id |
string由 YouTube 分配的 ID,用于唯一标识直播。 |
snippet |
objectsnippet 对象包含有关活动的基本详细信息,包括标题、说明、开始时间和结束时间。 |
snippet.publishedAt |
datetime直播添加到 YouTube 直播时间表的日期和时间。该值采用 ISO 8601 ( YYYY-MM-DDThh:mm:ss.sZ) 格式指定。 |
snippet.channelId |
string此 ID 是 YouTube 用来唯一标识发布直播的频道的 ID。 |
snippet.title |
string广播的标题。请注意,直播仅代表一个 YouTube 视频。您可以通过修改直播资源或设置相应视频资源的 title 字段来设置此字段。 |
snippet.description |
string广播的说明。与 title 一样,您可以通过修改直播资源或设置相应视频资源的 description 字段来设置此字段。 |
snippet.thumbnails |
object与直播相关联的缩略图的映射。对于此对象中的每个嵌套对象,键是缩略图图片的名称,值是包含缩略图的其他信息的对象。 |
snippet.thumbnails.(key) |
object有效的键值包括:
|
snippet.thumbnails.(key).url |
string图片的网址。 |
snippet.thumbnails.(key).width |
unsigned integer图片的宽度。 |
snippet.thumbnails.(key).height |
unsigned integer图片的高度。 |
snippet.scheduledStartTime |
datetime直播的预定开始日期和时间。该值采用 ISO 8601 ( YYYY-MM-DDThh:mm:ss.sZ) 格式指定。创作者工作室支持在不安排开始时间的情况下创建直播。在这种情况下,每当频道所有者开始直播时,直播就会开始。对于这些广播,datetime 值对应于 Unix 纪年时间零,并且此值无法使用 API 或在创作者工作室中更改。 |
snippet.scheduledEndTime |
datetime直播的预定结束日期和时间。该值采用 ISO 8601 ( YYYY-MM-DDThh:mm:ss.sZ) 格式指定。如果 liveBroadcast 资源未为此属性指定值,则广播将安排无限期继续。同样,如果您未为此属性指定值,YouTube 会将直播视为无限期播放。 |
snippet.actualStartTime |
datetime直播的实际开始日期和时间。只有当广播的状态为 live 时,此信息才可用。该值采用 ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) 格式指定。 |
snippet.actualEndTime |
datetime直播实际结束的日期和时间。只有当广播的状态为 complete 时,此信息才可用。该值采用 ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) 格式指定。 |
snippet.isDefaultBroadcast |
boolean
此媒体资源将于 2020 年 9 月 1 日当天或之后弃用。届时,当频道启用直播功能后,YouTube 将停止创建默认直播和默认直播。如需了解详情,请参阅弃用公告。
此属性用于指明此广播是否为默认广播。默认直播的运作方式 为 YouTube 频道启用直播功能后,YouTube 会为该频道创建一个默认直播和一个默认广播。直播定义了频道所有者将直播视频发送到 YouTube 的方式,而广播则是观看者观看默认直播的方式。频道所有者可以使用 liveStreams.list 和 liveBroadcasts.list 方法来识别这些资源。当频道开始向其默认直播流传输视频时,该视频会显示在频道的默认直播中。直播结束后,YouTube 会将已完成的直播转换为 YouTube 视频,并为该视频分配 YouTube 视频 ID。 转换完成后,该视频会包含在频道上传的视频列表中。视频不会在直播结束后立即可用,延迟时间与直播的实际时长相关。 |
snippet.liveChatId |
string直播的 YouTube 实时聊天 ID。有了此 ID,您就可以使用 liveChatMessage 资源的方法检索、插入或删除聊天消息。您还可以添加或移除聊天管理员,禁止用户参与实时聊天,或移除现有禁令。 |
status |
objectstatus 对象包含有关事件状态的信息。 |
status.lifeCycleStatus |
string直播的状态。您可以使用 API 的 liveBroadcasts.transition 方法更新状态。此属性的有效值为:
|
status.privacyStatus |
string广播的隐私权状态。请注意,直播仅代表一个 YouTube 视频,因此其隐私设置与视频支持的隐私设置相同。此外,您还可以通过修改直播资源或设置相应视频资源的 privacyStatus 字段来设置此字段。此属性的有效值为:
|
status.recordingStatus |
string直播的录制状态。 此属性的有效值如下:
|
status.madeForKids |
boolean此值表示直播是否被指定为面向儿童。此属性值为只读。 |
status.selfDeclaredMadeForKids |
boolean在 liveBroadcasts.insert 请求中,此属性可让频道所有者将直播指定为面向儿童。在 liveBroadcasts.list 请求中,只有在频道所有者授权了 API 请求时,才会返回属性值。 |
contentDetails |
objectcontentDetails 对象包含与活动的视频内容相关的信息,例如内容能否在嵌入式视频播放器中显示,或者内容是否会归档,以便在活动结束后供观看。 |
contentDetails.boundStreamId |
string此值用于唯一标识绑定到广播的 live stream。 |
contentDetails.boundStreamLastUpdateTimeMs |
datetimeboundStreamId 引用的直播上次更新的日期和时间。 |
contentDetails.monitorStream |
objectmonitorStream 对象包含监控串流的相关信息,直播者可以在公开显示直播串流之前使用这些信息来查看事件内容。 |
contentDetails.monitorStream.enableMonitorStream |
boolean此值决定是否为广播启用监控流。如果启用了监控直播,YouTube 将通过一个仅供直播者使用的特殊直播来播放活动内容。直播者可以使用该直播流查看活动内容,还可以确定插入 cue 点的最佳时间。 如果您打算为直播设置 testing 阶段,或者希望为活动设置直播延迟时间,则需要将此值设置为 true。此外,如果此属性的值为 true,则您必须先将广播转换为 testing 状态,然后才能将其转换为 live 状态。(如果该属性的值为 false,则您的广播不能有 testing 阶段,因此您可以将广播直接转换为 live 状态。)update a broadcast 时,如果您的 API 请求在 part 参数值中包含 contentDetails 部分,则必须设置此属性。不过,在 insert a broadcast 中,该属性是可选的,默认值为 true。重要提示:广播处于 testing 或 live 状态后,此属性将无法更新。 |
contentDetails.monitorStream.broadcastStreamDelayMs |
unsigned integer如果您已将 enableMonitorStream 属性设置为 true,则此属性决定了直播延迟时间的长短。update a broadcast 时,如果您的 API 请求在 part 参数值中包含 contentDetails 部分,则必须设置此属性。不过,在 insert a broadcast 中,该属性是可选的,默认值为 0。此值表示直播没有直播延迟。注意:广播进入 testing 或 live 状态后,此属性将无法更新。 |
contentDetails.monitorStream.embedHtml |
string用于嵌入播放监控流的播放器的 HTML 代码。 |
contentDetails.enableEmbed |
boolean此设置用于指明直播视频是否可以在嵌入式播放器中播放。如果您选择归档视频(使用 enableArchive 属性),此设置也会应用于已归档的视频。update a broadcast 时,如果您的 API 请求在 part 参数值中包含 contentDetails 部分,则必须设置此属性。不过,在 insert a broadcast 中,该属性是可选的,默认值为 true。注意:广播进入 testing 或 live 状态后,此属性将无法更新。 |
contentDetails.enableDvr |
boolean此设置决定了观看者在观看视频时能否使用 DVR 控件。借助 DVR 控件,观看者可以通过暂停、快退或快进内容来控制视频播放体验。此属性的默认值为 true。update a broadcast 时,如果您的 API 请求在 part 参数值中包含 contentDetails 部分,则必须设置此属性。不过,在 insert a broadcast 中,该属性是可选的,默认值为 true。重要提示:如果您希望在直播结束后立即提供播放功能,则必须将此值设置为 true,同时将 enableArchive 属性的值设置为 true。此外,广播处于 testing 或 live 状态后,此属性将无法更新。 |
contentDetails.recordFromStart |
boolean此设置表示 YouTube 是否会在活动状态变为“直播”后自动开始录制直播。 此属性的默认值为 true,只有在允许广播频道停用直播录制功能时,才能将其设置为 false。如果您的频道无权停用录制功能,并且您尝试插入将 recordFromStart 属性设置为 false 的直播,API 将返回 Forbidden 错误。此外,如果您的频道没有此权限,并且您尝试更新直播以将 recordFromStart 属性设置为 false,API 将返回 modificationNotAllowed 错误。update a broadcast 时,如果您的 API 请求在 part 参数值中包含 contentDetails 部分,则必须设置此属性。不过,在 insert a broadcast 中,该属性是可选的,默认值为 true。重要提示:如果您希望在直播结束后立即开始播放,还必须将 enableDvr 属性的值设置为 true。如果您将此属性的值设为 true,但未将 enableDvr 属性设为 true,则归档的视频可能需要延迟大约一天才能播放。注意:广播进入 testing 或 live 状态后,此属性将无法更新。 |
contentDetails.enableClosedCaptions |
boolean此属性自 2015 年 12 月 17 日起已废弃。请改用 contentDetails.closedCaptionsType 属性。此设置指示是否为此直播启用了 HTTP POST 字幕。对于已在使用此属性的 API 客户端:
|
contentDetails.closedCaptionsType |
string注意:此属性替换了 contentDetails.enableClosedCaptions 属性。此属性用于指明您的直播是否启用了字幕,如果启用了,您提供的是哪种类型的字幕:
|
contentDetails.projection |
string此广播的投影格式。此属性的默认值为 rectangular。此属性的有效值包括:
|
contentDetails.enableLowLatency |
boolean指明是否应对此广播进行编码以实现低延迟流式传输。低延迟串流可以缩短视频在观看直播的用户面前显示所需的时间,但也可能会影响观看者观看串流时的分辨率。 |
contentDetails.latencyPreference |
string表示要为此广播使用哪种延迟时间设置。此属性可用于替代不支持 ultraLow 的 enableLowLatency。低延迟串流可以缩短观看直播的用户看到视频所需的时间,但也可能会影响播放流畅度。 超低延迟串流可以进一步缩短观看者看到视频所需的时间,让与观看者互动变得更容易,但超低延迟不支持字幕或高于 1080p 的分辨率。 此属性的有效值为:
|
contentDetails.enableAutoStart |
boolean指示当您在绑定的 live stream 上开始流式传输视频时,此广播是否应自动开始。 |
contentDetails.enableAutoStop |
boolean指示此直播是否应在频道所有者停止在绑定的视频串流中流式传输视频大约一分钟后自动停止。 |
statistics |
objectstatistics 对象包含与直播相关的统计信息。这些统计数据的值可能会在直播期间发生变化,并且只能在直播期间检索。 |
statistics.totalChatCount |
unsigned long与直播相关联的实时聊天消息总数。如果直播对用户可见、已启用实时聊天功能且至少包含一条消息,则系统会提供此属性及其值。请注意,在广播结束后,此属性将不会指定值。因此,此属性不会识别已完成的直播的归档视频的聊天消息数量。 |
monetizationDetails |
objectmonetizationDetails 对象包含有关直播创收详细信息的信息,例如广告自动化程序是否处于开启状态,或插入插播广告是否延迟。 |
monetizationDetails.cuepointSchedule |
objectcuepointSchedule 对象用于指定直播的广告自动化设置。 |
monetizationDetails.cuepointSchedule.enabled |
boolean此值用于确定是否在直播中自动插入广告。如果此值为 true,YouTube 会自动在直播中插入中贴片广告。投放广告的时间表将由 monetizationDetails.cuepointSchedule 对象中的其他字段的值决定。
|
monetizationDetails.cuepointSchedule.pauseAdsUntil |
datetime此值指定 YouTube 在指定日期和时间之前不应在直播中插入中贴片广告。该值采用 ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) 格式指定。此值必须设置为未来的日期时间,才能暂停广告;此字段值也可以设置为近期的日期时间,以便在时间过后解除广告暂停状态。 |
monetizationDetails.cuepointSchedule.scheduleStrategy |
string此值用于指定 YouTube 应遵循的预定 cue 点策略。有效值包括:
|
monetizationDetails.cuepointSchedule.repeatIntervalSecs |
unsigned integer此值用于指定直播期间自动广告插入之间的间隔(以秒为单位)。例如,如果该值为 300,则 YouTube 可以每隔 5 分钟插入一个中贴片广告 cuepoint。请注意,此值指定了连续 cue 点开始之间的时间。也就是说,间隔时间不是从一个 cue 点结束到下一个 cue 点开始测量。 |