本页面列出了 YouTube Live Streaming API 变更和文档更新。订阅此变更日志。
2025 年 7 月 14 日
更新了 liveChatMessages.streamList
方法的说明,以提供有关 streamList API 用法的指南。
2023 年 10 月 9 日
如需参考,您可以在此 CSV 文件中找到哪些贴纸 ID 对应于哪些超级贴纸。
liveChatMessage
资源的 snippet.superStickerDetails.superStickerMetadata.stickerId
属性和 superChatEvent
资源的 snippet.superStickerMetadata.stickerId
属性的定义均已更新,以反映此信息。
2023 年 9 月 15 日
该 API 现在支持一种将广告插入直播的新方式。除了 liveCuepoints
之外(可让您手动在直播中插入广告插播时间点),YouTube 现在还支持一项功能,可自动以固定间隔在直播中插入中贴片广告插播时间点。
如果广播所有者启用自动广告,则可以查看广告行为的以下方面:
- 中贴片广告插播时间点之间的间隔时长。
- 广告提示点的调度策略。您可以同时为所有观看者插入提示点,也可以让提示点的时间因观看者而异。后一种策略使 YouTube 能够以更高的频率安排提示点,从而让观看者在符合条件时收到提示点。
- 不展示中贴片广告的时段;对于此功能,广播所有者指定中贴片广告的插入暂停时间,直到特定时间为止。
文档反映了以下 API 变更,以支持此功能:
liveBroadcast
资源现在包含monetizationDetails
对象。该对象的字段用于指明是否为广播启用了自动插播广告,并指定用于安排插播点的其他信息。liveBroadcast.list
方法的part
参数支持值monetizationDetails
。update
方法可用于暂停在直播中插入中贴片广告一段时间。该文档现在还列出了在更新直播的创收详细信息时可能会出现的几个错误。
2023 年 8 月 1 日
此更新包含以下更改:
-
liveBroadcasts.update
方法不再要求为以下字段指定值:snippet.title
status.privacyStatus
如果从请求中省略这些字段,则这些字段将保持不变。
2022 年 11 月 1 日
-
借助新的
liveBroadcasts.cuepoint
方法,在 YouTube 上进行直播的任何频道所有者都可以在直播中插入提示点,从而触发广告插播。此方法取代了liveCuepoints.insert
方法,后者仅允许 YouTube 内容合作伙伴在直播中插入提示点。我们已更新多篇指南,以反映此新方法的可用性。
-
注意:这是一则弃用公告。
liveCuepoints.insert
方法现已弃用。对liveCuepoints.insert
方法的支持将于 2023 年 5 月 1 日或之后移除。API 用户应更新其应用,改用liveBroadcasts.cuepoint
方法。 -
移除了
liveBroadcasts.control
方法的文档。我们已于 2020 年 9 月发布了该方法的弃用通知。
2022 年 10 月 1 日
此更新包含以下更改:
-
liveBroadcasts.update
方法不再要求为以下字段指定值:contentDetails.enableContentEncryption
contentDetails.enableDvr
contentDetails.enableEmbed
contentDetails.recordFromStart
contentDetails.startWithSlate
如果从请求中省略这些字段,则这些字段将保持不变。
-
移除了有关过时
liveBroadcast
字段的文档:contentDetails.enableContentEncryption
contentDetails.startWithSlate
2022 年 4 月 1 日
此更新包含以下更改:
-
snippet.type
属性现在支持两个新值:membershipGiftingEvent
giftMembershipReceivedEvent
-
liveChatMessage
资源的新snippet.membershipGiftingDetails
属性及其子属性包含有关会员赠送活动的信息。同样,新的snippet.giftMembershipReceivedDetails
属性及其子属性包含有关“收到赠送的会员资格”事件的信息。
2021 年 9 月 15 日
此更新包含以下更改:
-
snippet.type
属性现在支持两个新值:newSponsorEvent
memberMilestoneChatEvent
-
liveChatMessage
资源的新snippet.memberMilestoneChatDetails
属性及其子属性包含有关会员里程碑留言活动的信息。同样,新的snippet.newSponsorDetails
属性及其子项包含有关“新赞助者”事件的信息。
2020 年 12 月 1 日
该 API 的 liveBroadcasts.transition
方法支持新的 403
(Forbidden
) 错误,该错误表示用户在给定的时间范围内发送了过多的请求。错误原因是 userRequestsExceedRateLimit
。
2020 年 9 月 21 日
-
更新了
liveBroadcast
资源的status.madeForKids
属性的定义,以明确该属性为只读属性。这并不表示 API 功能发生了变化。如需将直播标记为面向儿童的内容,请在调用
liveBroadcasts.insert
方法创建直播时,将status.selfDeclaredMadeForKids
属性设置为true
。 -
注意:此变更包括弃用公告和对之前弃用公告的更新。
liveBroadcasts.control
方法将于 2020 年 10 月 1 日或之后弃用。在该日期之后,对该方法的所有调用都将返回禁止 (403) 错误,并且该方法稍后将被完全移除。 客户仍可通过向发送到 YouTube 提取服务器的视频添加叠加层来实现自己的 slating。2020 年 4 月 16 日发布的弃用公告中原定于 2020 年 9 月 1 日的弃用日期已延后,现在将在 2020 年 10 月 1 日或之后进行。因此,该弃用公告中包含的功能和
liveBroadcasts.control
方法将同时被弃用。
2020 年 7 月 17 日
注意:这是对之前弃用公告的更新。
liveStream
资源的 cdn.format
字段已于 2016 年 4 月弃用,自 2020 年 8 月 17 日起将不再受支持。自该日期起,仍使用该字段的请求将失败。
如果您的代码仍在使用 cdn.format
字段,则必须更新该字段,以使用 cdn.frameRate
和 cdn.resolution
属性分别指定帧速率和分辨率。
2020 年 7 月 6 日
我们对通过 HLS 传送 YouTube 直播内容指南进行了一些更新:
- 媒体片段的建议时长已更新为 1 到 4 秒。
- 新增了一个部分,介绍了如何从 YouTube 创作者工作室获取 HLS 推流网址。
-
有关如何设置
file
参数值的说明已移至新的完成 HLS 提取网址部分。无论 HLS 提取网址是从 YouTube API 还是 YouTube 创作者工作室获取的,这些说明都适用。
此外,新的提取协议比较列出了 YouTube 支持的提取协议、每种协议支持的编解码器,以及有关每种协议的适用使用情形的其他信息。
2020 年 4 月 16 日
此更新包含一项新媒体资源和一项弃用公告:
-
liveBroadcast
资源现在支持contentDetails.enableAutoStop
属性。该属性用于指示广播是否应在频道所有者停止在绑定视频流上播放视频后约一分钟自动停止。我们更新了直播的生命周期文档,以说明如果您将
contentDetails.enableAutoStart
或contentDetails.enableAutoStop
属性设置为true
,创建和管理 YouTube 直播活动的逐步流程会发生哪些变化。 -
注意:这是一则弃用公告。这些变更将于 2020 年 9 月 1 日或之后生效。以下将变更的实际生效日期称为“弃用日期”。
此更新说明了一项可能造成重大变更的更改。它会影响使用频道的默认
liveStream
和liveBroadcast
资源在 YouTube 上直播内容的 API 客户端应用。具体而言,与永久性直播和数据流相关联的直播 ID 和数据流 ID 将无法再用于启动新的直播。如果符合以下任何条件,您的应用将受到影响:
- 它会检查
liveBroadcast
资源的isDefaultBroadcast
属性的值。此属性在弃用日期之后将不会返回。 - 它会检查
liveStream
资源的isDefaultStream
属性的值。此属性在弃用日期之后将不会返回。 - 它会调用
liveBroadcasts.list
方法,并将broadcastType
参数值设置为persistent
或all
。此参数将作为这些更改的一部分被弃用。自弃用日期起:- 如果
broadcastType
参数值为persistent
,则liveBroadcasts.list
方法不会返回任何结果。 - 如果
broadcastType
参数值为all
,则liveBroadcasts.list
方法不会返回在该时间之前存在的持久性广播。
- 如果
背景信息:在过去几年中,当频道启用直播功能时,YouTube 会自动为该频道创建默认直播和默认广播。默认直播无限期存在,没有关联的开始时间或结束时间,并且无法删除。同样,默认广播被视为持久。它一直存在,并且不与特定事件绑定。
自弃用日期起:
- YouTube 将不再创建默认直播和广播。API 客户端需要能够创建和管理
liveBroadcast
和liveStream
资源,并将这些资源绑定在一起,而不是依赖默认资源。 - 如果频道的默认广播和默认直播在弃用生效时处于有效直播状态,也就是说频道正在使用它们进行直播,那么正在进行的直播不会受到影响。不过,在该直播结束后,频道将无法再次使用默认直播和默认视频流。
- 如果频道的默认广播和默认直播未处于有效直播状态,那么在弃用生效后,YouTube 将忽略使用这些资源广播视频的尝试。
如果您的应用受到影响,请参阅以下文档,这些文档将帮助您更新应用,以便应用在此变更后仍能按预期运行:
- 它会检查
2020 年 3 月 31 日
注意:这是一则弃用公告。
sponsor
资源和 sponsors.list
方法已被弃用,取而代之的是 member
资源和 members.list
方法。
自 2020 年 9 月 30 日起,sponsors.list
方法将不再受支持。
API 客户端应更新对 sponsors.list
方法的调用,改用 members.list
方法。如需详细了解新资源,请参阅 YouTube Data API 修订历史记录。
2020 年 3 月 11 日
通过 HLS 传送 YouTube 直播内容指南的提取端点部分已更新,以明确说明编码器在形成主提取网址和备用提取网址时应使用哪个流程来完成 file=
参数值。
2020 年 2 月 4 日
我们更新了通过 HLS 传送 YouTube 直播内容指南,指出 DELETE
请求是可选的,并且 YouTube 的 HLS 端点会忽略这些请求。出于性能方面的考虑,YouTube 建议客户端不要发送 DELETE
请求。
2020 年 1 月 10 日
该 API 现在支持识别面向儿童的内容,YouTube 将其称为“面向儿童的内容”。如需详细了解“面向儿童的内容”,请访问 YouTube 帮助中心。
-
liveBroadcast
资源支持两个新属性,以便内容创作者和观看者识别“面向儿童”的内容:-
内容创作者可以通过
selfDeclaredMadeForKids
属性指定直播是否属于面向儿童的内容。您可以在通过liveBroadcasts.insert
方法创建广播时设置此属性。请注意,只有在频道所有者授权 API 请求的情况下,此属性才会包含在包含liveBroadcast
资源的 API 响应中。 -
任何 API 用户都可以通过
madeForKids
属性检索广播的“面向儿童”状态。例如,状态可能根据selfDeclaredMadeForKids
属性的值来确定。如需详细了解如何为频道、视频或直播设置观众群,请访问 YouTube 帮助中心。
-
内容创作者可以通过
-
在 YouTube Data API 中,
channel
资源还支持新的selfDeclaredMadeForKids
和madeForKids
属性。
我们还更新了 YouTube API 服务的《服务条款》和《开发者政策》。如需了解详情,请参阅 YouTube API 服务条款 - 修订历史记录。YouTube API 服务条款和开发者政策的变更将于 2020 年 1 月 10 日(太平洋时间)生效。
2019 年 8 月 20 日
通过 HLS 传送 YouTube 直播内容指南的要求部分已更新,包含两项更改:
- 该文档说明,最佳实践是在每个媒体播放列表中同时包含已确认的细分和未确认的细分。这样一来,如果服务器端丢失了媒体播放列表,系统就不太可能会跳过某个片段。例如,您可以在每个媒体播放列表中添加最多两个已确认的细分和最多五个未确认的细分。
- 现在,必须为每个媒体片段发送媒体播放列表。这样一来,如果媒体播放列表丢失,服务器便可快速恢复。此做法之前被列为建议。
2019 年 6 月 28 日
YouTube 现在支持 HLS 提取。因此,liveStream
资源的 ingestionType
属性支持新值 hls
,用于标识使用 HLS 提取到 YouTube 的直播。
新的通过 HLS 传送 YouTube 直播内容指南提供了相关准则,指导您如何使用 HLS 将直播内容从编码器传输到 YouTube。本指南旨在帮助编码器供应商在其产品中添加 HLS 交付支持。
2019 年 4 月 4 日
此更新包含以下更改:
-
我们更新了 API 参考文档,以便更好地说明每种方法的常见用例,并通过 API Explorer 微件提供动态、高质量的代码示例。如需查看示例,请参阅
liveBroadcasts.list
方法的文档。现在,描述 API 方法的页面上新增了两个元素:-
借助 API Explorer 微件,您可以选择授权范围、输入示例参数和属性值,然后发送实际的 API 请求并查看实际的 API 响应。该微件还提供全屏视图,其中显示完整的代码示例,这些示例会动态更新,以使用您输入的范围和值。
-
常见用例部分介绍了相应页面上所介绍方法的一个或多个常见用例。例如,您可以调用
liveBroadcasts.list
方法来检索有关特定广播的数据,或检索有关当前用户的广播的数据。您可以使用该部分中的链接,在 API 探索器中填充适合您的使用情形的示例值,或者打开已填充这些值的全屏 API 探索器。这些更改旨在让您更轻松地找到直接适用于您尝试在自己的应用中实现的用例的代码示例。
目前,代码示例支持 Java、JavaScript、PHP、Python 和 curl。
-
-
代码示例页面也采用了新的界面,提供上述所有相同的功能。借助该工具,您可以探索不同方法的使用情形,将值加载到 API Explorer 中,并打开全屏 API Explorer 以获取 Java、JavaScript、PHP 和 Python 代码示例。
随着此项更改的实施,之前列出了适用于 Java、PHP 和 Python 的可用代码示例的页面已被移除。
2019 年 2 月 25 日
liveChatMessage
和 superChatEvent
资源的文档已更新,以反映这两个资源现在都可以包含有关超级贴纸的信息。超级贴纸是一种显示图片的超级留言。与其他超级留言一样,超级贴纸消息也是粉丝在 YouTube 直播期间购买的。
- 在
liveChatMessage
资源中,snippet.type
属性现在设置为superStickerEvent
,以表明该资源包含有关超级贴纸的信息。在这种情况下,资源还会包含snippet.superStickerDetails
对象,其中包含有关超级贴纸的其他信息。 - 在
superChatEvent
资源中,布尔值snippet.isSuperStickerEvent
表示超级留言是否也是超级贴纸。如果是,则snippet.superStickerMetadata
对象包含有关超级贴纸的其他详细信息。
2018 年 4 月 5 日
更新了 superChatEvents.list
方法的说明,以反映 API 响应不再包含 fanFundingEvents
(已于 2017 年初弃用)。
2017 年 4 月 3 日
我们添加了新的 Java 代码示例,展示了如何列出、插入和删除实时聊天消息。这些示例会调用以下方法:
2017 年 2 月 13 日
此更新包含以下更改:
-
对现有资源和方法的更新
-
liveCuepoints.insert
方法已更新,以反映onBehalfOfContentOwner
参数目前是必需参数。此外,我们还更新了该方法的说明,指出对该方法的调用必须由与 YouTube 内容所有者相关联的账号授权。
-
2017 年 2 月 9 日
此更新包含以下更改:
-
对现有资源和方法的更新
-
superChatEvents.list
方法的新hl
参数可让您指定snippet.displayString
属性值应根据特定语言的惯例进行格式设置。相应地,该属性的定义也已更新。参数值必须是
i18nLanguages.list
方法返回的列表中的语言代码。默认值为en
,表示默认行为是按照英语中的使用方式来设置显示字符串的格式。例如,默认情况下,字符串的格式为$1.00
,而不是$1,00
。
-
2017 年 2 月 1 日
此更新包含以下更改:
-
新资源和方法
-
新的
superChatEvent
资源表示粉丝在 YouTube 直播期间购买的超级留言消息。在 YouTube 直播聊天中,超级留言功能以两种方式让您的消息更引人注目:- 超级留言以某种颜色突出显示。
- 超级留言会在置顶栏中固定展示一段时间。
超级留言的颜色、在置顶栏中固定展示的时间以及最长留言长度均取决于购买金额。如需详细了解超级聊天,请访问 YouTube 帮助中心。
该 API 支持一种方法,用于列出频道在过去 30 天内的直播中的超级留言事件。该方法还会返回频道上次直播的粉丝赞助活动 (
fanFundingEvents
) 的相关数据。
-
-
对现有资源和方法的更新
-
snippet.type
属性现在支持superChatEvent
值,该值表示相应资源描述的是超级聊天。此外,
liveChatMessage
资源的新snippet.superChatDetails
属性及其子属性包含有关超级留言活动的信息。 -
liveStream
资源的cdn.resolution
属性现在支持值2160p
。
-
-
新增和更新的错误
-
该 API 支持以下新错误:
错误详情 liveBroadcasts.insert
、liveBroadcasts.update
liveBroadcasts.insert
和liveBroadcasts.update
方法会返回400
(Bad Request
) 错误,以指示要插入或更新的liveBroadcast
资源包含contentDetails.enableEmbed
属性或contentDetails.projection
属性的无效值。这两个新错误的错误原因分别为invalidEmbedSetting
和invalidProjection
。
-
2017 年 1 月 12 日
注意:这是一则弃用公告。
随着新超级留言功能的发布,YouTube 已弃用粉丝赞助功能,并将于 2017 年 2 月 28 日停用粉丝赞助 API。截至该日期:
liveChatMessages.list
方法将不再返回snippet.type
为fanFundingEvent
的消息。同样,liveChatMessage
资源将不再包含snippet.fanFundingEventDetails
对象。fanFundingEvents.list
方法将不再返回数据。
2016 年 8 月 11 日
此更新包含以下更改:
-
新发布的 YouTube API 服务条款(以下简称“更新后的条款”)已在 YouTube 工程和开发者博客中详细讨论,对当前的服务条款进行了多项更新。除了将于 2017 年 2 月 10 日生效的更新后的条款之外,此更新还包含多份支持性文档,用于帮助说明开发者必须遵守的政策。
如需查看所有新文档,请参阅更新后的条款的版本历史记录。此外,未来对更新后的条款或相关支持文档所做的更改也会在该修订历史记录中说明。您可以通过相应文档中的链接订阅 RSS Feed,以获取该修订历史记录中的更改。
2016 年 5 月 20 日
YouTube 现在支持 DASH 提取。因此,liveStream
资源的 ingestionType
属性支持新值 dash
,以标识使用 DASH 摄取到 YouTube 的视频流。
新的通过 DASH 传送 YouTube 直播内容指南提供了相关准则,指导您如何使用 DASH 传送格式通过编码器在 YouTube 上直播数据。旨在帮助编码器供应商为其产品添加 DASH 交付支持。
2016 年 4 月 18 日
此更新包含以下更改:
-
对现有资源和方法的更新
liveStream
资源更新-
YouTube 现在支持以 30 或 60 帧/秒的帧速率播放分辨率为 1440p 的直播。
此外,
liveStream
资源还包含用于指定入站视频数据帧速率和分辨率的新属性:属性 cdn.frameRate
入站视频数据的帧速率。有效值为 30fps
和60fps
。cdn.resolution
入站视频数据的分辨率。有效属性值包括: 1440p
、1080p
、720p
、480p
、360p
和240p
。 -
随着
liveStream
资源的cdn.frameRate
和cdn.resolution
属性的推出,该资源的cdn.format
现已弃用。cdn.format
属性以单个值指定分辨率和帧速率。建议您改用新支持的字段。在此期间,
cdn.format
会继续运行。此外,只要您为cdn.format
属性或cdn.frameRate
和cdn.resolution
属性指定值,插入直播的请求目前就会成功。如果您为这三个属性都提供值,但这些值不一致,API 可能会返回错误。请注意,虽然
cdn.format
属性已弃用,但现在支持两个新值:1440p
和1440p_hfr
,以反映 API 对 30 或 60 帧/秒的 1440p 流的支持。
-
liveBroadcast
资源更新-
liveBroadcast
资源包含以下新属性:属性 contentDetails.boundStreamLastUpdateTimeMs
广播的 contentDetails.boundStreamId
属性所引用的直播上次更新的日期和时间。contentDetails.projection
广播的投影格式。该属性的默认值为 rectangular
。该属性的有效值为360
和rectangular
。 -
更新了
liveBroadcast
资源的statistics.totalChatCount
属性的定义,指出只有当广播至少包含一条聊天消息时,该属性值才会显示。
-
liveChatMessage
资源更新-
snippet.type
属性支持两个新值:messageDeletedEvent
和userBannedEvent
,分别对应于以下项目符号中所述的新属性。我们还更新了snippet.authorChannelId
属性的定义,以说明该属性值对于这些新消息类型有何标识作用。 -
liveChatMessage
资源包含以下新属性:属性 snippet.messageDeletedDetails
此对象包含有关聊天版主删除的消息的信息。仅当 snippet.type
属性值为messageDeletedEvent
时,该对象才会存在。snippet.userBannedDetails
此对象包含有关已被禁止参与聊天会话的用户的相关信息。该对象还包含有关禁令本身的信息,即禁令是永久性还是临时性。如果封禁是临时性的,则对象的某个属性会指定封禁时长。
只有当snippet.type
属性值为userBannedEvent
时,此对象才会存在。
-
-
新增和更新的错误
-
该 API 支持以下新错误:
错误详情 liveBroadcasts.bind
liveBroadcasts.bind
方法会返回403
(Forbidden
) 错误,以表明用户在给定的时间范围内发送了过多的请求。错误原因是userRequestsExceedRateLimit
。liveBroadcasts.insert
和liveBroadcasts.update
方法已支持相同的错误。liveStreams.insert
liveStreams.insert
方法支持四种新的400
(Bad Request
) 错误,用于标识请求尝试插入的liveStream
资源中的无效属性值。以下列表列出了错误原因以及与这些原因相关联的属性:
invalidFormat
:cdn.format
invalidFrameRate
:cdn.frameRate
invalidIngestionType
:cdn.ingestionType
invalidResolution
:cdn.resolution
liveStreams.insert
liveStreams.insert
方法支持两种新的400
(Bad Request
) 错误,每种错误都表示请求尝试插入的liveStream
资源中缺少必需的值。以下列表列出了错误原因以及与这些原因相关联的属性:
frameRateRequired
:cdn.frameRate
resolutionRequired
:cdn.resolution
liveStream
资源时,必须为cdn.format
属性或cdn.frameRate
和cdn.resolution
属性指定值。
- 如果您未为这三个属性中的任何一个指定值,该 API 会返回
formatRequired
错误。 - 如果您为
cdn.resolution
指定了值,但未为cdn.frameRate
指定值,则该 API 会返回frameRateRequired
错误。 - 如果您为
cdn.frameRate
指定了值,但未为cdn.resolution
指定值,则该 API 会返回resolutionRequired
错误。
liveStreams.update
如果请求尝试修改以下任何不可变属性的值, liveStreams.update
方法会返回403
(Forbidden
) 错误:cdn.format
cdn.frameRate
cdn.ingestionType
cdn.resolution
reason
为liveStreamModificationNotAllowed
。
-
2015 年 12 月 18 日
根据欧盟 (EU) 法律规定,您必须向欧盟境内的最终用户披露相关信息并征求他们的意见。因此,对于欧盟境内的最终用户,您必须遵守《欧盟地区用户意见征求政策》。我们已在 YouTube API 服务条款中添加了有关此要求的通知。
2015 年 12 月 17 日
此更新包含以下更改:
-
新资源和方法
-
该 API 支持多个新资源,以支持直播的聊天功能。YouTube 支持在直播期间使用实时聊天功能,这些资源及其方法支持检索聊天消息以及聊天管理功能。
资源 liveChatMessage
此资源表示 YouTube 实时聊天中的一条消息。YouTube 支持多种类型的消息,包括文字消息和粉丝赞助活动。某些消息类型用于标识聊天中的特定阶段,例如会员专属时段的开始或聊天的结束。该 API 支持列出、插入和删除实时聊天消息的方法。 liveChatModerators
此资源用于标识聊天版主。主持人可以执行一些管理功能,例如禁止用户参与聊天或移除消息。该 API 支持列出、插入和删除实时聊天管理员的方法。 liveChatBans
此资源用于标识被禁止在特定实时聊天中发布消息的用户。禁令可以是暂时性的,也可以是永久性的。该 API 支持用于插入和删除实时聊天禁令的方法。 fanFundingEvents
此资源表示 YouTube 频道上的粉丝赞助活动。通过粉丝赞助功能,观看者可以自愿向 YouTube 创作者提供一次性资金支持。
该 API 的fanFundingEvents.list
方法可列出频道的粉丝赞助活动。通过频道自有直播的实时聊天发起的粉丝赞助活动也会触发一条fanFundingEvent
消息,显示在直播的实时聊天中。
如需详细了解粉丝赞助,请访问 YouTube 帮助中心。sponsors
sponsor
资源用于标识 YouTube 频道的赞助商。赞助商每月向频道支付费用。赞助商在频道实时聊天中发布的消息旁边会显示徽章,并且赞助商还可以参与仅面向频道赞助商的实时聊天(如果有)。
API 的sponsors.list
方法可列出频道的赞助商。当用户在频道直播期间注册成为该频道的赞助者时,该 API 还会向直播的实时聊天添加一条newSponsorEvent
消息。
如需详细了解赞助功能,请访问 YouTube 帮助中心。
-
-
对现有资源和方法的更新
-
liveBroadcast
资源包含以下新属性:属性 snippet.liveChatId
广播的 YouTube 实时聊天的 ID。有了此 ID,您就可以使用 liveChatMessage
资源的方法来检索、插入或删除聊天消息。您还可以添加或移除聊天管理员、禁止用户参与实时聊天,或移除现有禁令。contentDetails.closedCaptionsType
注意:此属性会替换 contentDetails.enableClosedCaptions
属性。
此属性用于指明您的广播是否启用了字幕,如果启用了,您提供的是哪种类型的字幕:closedCaptionsDisabled
:直播已停用字幕。closedCaptionsHttpPost
:您将通过 HTTP POST 将字幕发送到与您的直播相关联的提取网址。closedCaptionsEmbedded
:字幕将使用 EIA-608 和/或 CEA-708 格式在视频流中进行编码。
contentDetails.enableClosedCaptions
此属性已于 2015 年 12 月 17 日起弃用。请改用 contentDetails.closedCaptionsType
属性。对于已在使用此属性的 API 客户端:- 将属性值设置为
true
等同于将contentDetails.closedCaptionsType
属性设置为closedCaptionsHttpPost
。 - 将属性值设置为
false
等同于将contentDetails.closedCaptionsType
属性设置为closedCaptionsDisabled
。
-
liveBroadcasts.list
方法的新broadcastType
参数可让您过滤 API 响应,以仅包含活动广播、持久广播或所有广播。持久广播是指始终存在且不与特定事件相关联的广播。具体来说,频道的默认广播是一种持续广播,可通过 YouTube 创作者工作室中的直播信息中心访问。频道中的其他直播是活动直播。
-
-
liveStream
资源的status.healthStatus.configurationIssues[].type
字段会报告以下新的健康状况错误:错误 audioTooManyChannels
音频的声道数量超过了两个,但系统仅支持 1 个(单声道)或 2 个(立体声)声道。请更正音频的声道数量。 frameRateHigh
当前帧速率过高。请将帧速率设为 fps 或更低。%(framerate)s
-
更正了之前文档更新的发布日期。
-
新增和更新的错误
-
除了为上述新资源定义的错误之外,该 API 还支持以下新错误:
错误详情 liveBroadcasts.update
HTTP 响应代码 forbidden (403)
原因 closedCaptionsTypeModificationNotAllowed
说明 只有当广播处于 created
或ready
状态时,才能修改contentDetails.closedCaptionsType
值。liveBroadcasts.update
HTTP 响应代码 invalidValue (400)
原因 invalidEnableClosedCaptions
说明 在 liveBroadcast 资源中, contentDetails.enableClosedCaptions
属性的值与contentDetails.closedCaptionType
设置的值不兼容。修改资源,使其仅包含这两个属性中的一个,然后重新提交请求。
-
2015 年 8 月 19 日
此更新包含以下更改:
-
新资源和方法
-
注意:
liveChat
资源及其方法的文档属于机密信息,仅面向部分 YouTube 合作伙伴显示。新的
liveChat
资源包含在 YouTube 直播期间发布的评论。该 API 支持针对此资源的两种方法:方法 liveChats.list
列出广播的实时聊天消息。 liveChats.insert
创建新聊天消息。 只有在直播期间才能检索和发布实时聊天消息。
-
-
对现有资源和方法的更新
-
liveStream
资源包含以下新属性:属性 snippet.isDefaultStream
指明相应直播是否为频道的默认直播。频道的默认直播会无限期存在,没有关联的开始时间或结束时间,并且无法删除。如需详细了解默认数据流的工作原理,请参阅相应媒体资源的定义。 status.healthStatus
此对象包含可用于识别、诊断和解决流式传输问题的信息。该对象包含多个子属性,可帮助您评估直播视频流的健康状况。
具体来说,status.healthStatus.configurationIssues[]
对象会列出影响视频流的问题。新文档直播流资源的配置问题列出了 API 报告的所有问题。contentDetails.isReusable
指示流是否可重用,这意味着它可以绑定到多个广播。如果广播在不同时间进行,广播公司通常会重复使用同一直播流进行多次不同的广播。 -
liveBroadcast
资源包含以下新属性:属性 snippet.isDefaultBroadcast
指示相应广播是否为频道的默认广播。当 YouTube 频道启用直播功能后,YouTube 会为该频道创建一个默认直播流和默认直播。直播流定义了频道所有者如何将直播视频发送到 YouTube,而广播则定义了观看者如何观看默认直播流。如需详细了解默认广播的工作方式,请参阅相应属性的定义。 contentDetails.enableLowLatency
指明是否应为此广播编码以实现低延迟流式传输。低延迟直播可以缩短观看直播的用户看到视频所需的时间,但也会影响直播观看者的分辨率。 statistics.totalChatCount
与广播相关联的实时聊天消息总数。如果广播对用户可见且已启用实时聊天功能,则会显示相应属性及其值。请注意,广播结束后,此属性将不指定值。因此,此属性不会标识已完成直播的归档视频的聊天消息数量。
-
-
新增和更新的错误
-
除了为新的
liveChat
资源定义的错误之外,该 API 还支持以下新错误:错误详情 liveStreams.update
HTTP 响应代码 forbidden (403)
原因 liveStreamModificationNotAllowed
说明 该 API 不允许您将可重用流更改为不可重用流,反之亦然。如需了解详情,请参阅了解广播和直播
-
2015 年 5 月 21 日
此更新包含以下更改:
-
YouTube 现在支持以 60 帧/秒 (fps) 的帧速率进行视频直播,这意味着游戏和其他快节奏视频的播放会更加流畅。当您在 YouTube 上以 60 帧/秒的帧速率开始直播时,YouTube 也会在尚不支持高帧速率观看的设备上以 30 帧/秒的帧速率提供该直播。
liveStream
资源的cdn.format
属性为此功能新增了两个值:720p_hfr
和1080p_hfr
。如需详细了解此功能,请参阅 YouTube 创作者博客。
2014 年 8 月 21 日
此更新包含以下更改:
-
更新了
liveBroadcasts.control
方法的walltime
参数的定义,以说明属性值采用 ISO 8601 格式 (YYYY-MM-DDThh:mm:ss.sssZ
) 指定。 -
该 API 现在支持以下错误:
错误类型 错误详情 说明 insufficientPermissions
liveStreamingNotEnabled
如果授权 API 请求的用户未获准在 YouTube 上直播视频,则 liveBroadcast
和liveStream
资源的所有方法都会返回此错误。用户可以在频道设置 (https://www.youtube.com/features) 中查看详细信息,了解自己无法直播视频的原因。rateLimitExceeded
userRequestsExceedRateLimit
liveBroadcasts.insert
和liveStreams.insert
方法都会返回此错误,以表明用户在给定的时间范围内发送了过多的请求。
2014 年 5 月 2 日
此更新包含以下更改:
-
更新了
liveStream
资源和liveBroadcasts.bind
方法的说明,指出一个广播只能绑定到一个视频流,但一个视频流可以绑定到多个广播。此变更仅是对文档的更正;底层 API 功能未发生变化。 -
更新了
liveBroadcast
资源的contentDetails.monitorStream.enableMonitorStream
属性,以说明如果该属性的值为true
,则您必须先将广播过渡到testing
状态,然后才能将其过渡到live
状态。(如果该属性的值为false
,则广播不能具有testing
阶段,因此您可以将广播直接过渡到live
状态。 -
liveCuepoint
资源的settings.offsetTimeMs
属性已更新,现在会说明如果您的广播没有监视器流,则不应为该属性指定值。 -
liveBroadcast
和liveStream
资源的所有方法现在都支持onBehalfOfContentOwner
和onBehalfOfContentOwnerChannel
参数。借助这些参数,您可以使用相同的授权凭据来完成与同一内容所有者关联的不同渠道的 API 请求。 -
liveCuepoints.insert
方法的文档已更新,其中指出您可以在调用该方法时为settings.walltime
属性设置值。 -
错误文档现在针对每种错误类型指定了 HTTP 响应代码。
-
该 API 现在支持以下错误:
错误类型 错误详情 说明 insufficientPermissions
livePermissionBlocked
如果授权请求的用户无法在 YouTube 上直播视频, liveBroadcasts.insert
、liveBroadcasts.transition
和liveStreams.insert
方法会返回此错误。用户可以在频道设置 (https://www.youtube.com/features) 中查看详细信息,了解自己无法直播视频的原因。 -
更新了
liveBroadcasts.insert
方法的invalidScheduledStartTime
错误,明确指出预定的开始时间必须足够接近当前日期,以便能够可靠地安排在该时间开始广播。
2013 年 12 月 13 日
此更新包含以下更改:
-
liveBroadcast
资源的新status.recordingStatus
属性用于标识广播的当前状态。 -
liveBroadcast
资源的新contentDetails.enableClosedCaptions
属性用于指明是否可以为广播提取字幕。您可以在插入或更新广播时设置该属性值,但一旦广播处于testing
或live
状态,就无法再更新该属性值。如果您将此属性设置为true
,则与广播绑定的liveStream
资源将指定用于广播字幕的提取网址。 -
liveBroadcast
资源的snippet.scheduledEndTime
属性现在支持安排无限期持续的广播。在此变更生效后,liveBroadcasts.insert
和liveBroadcasts.update
请求中不再需要此属性。
如果您检索到的liveBroadcast
资源未为此属性指定值,则广播将安排为无限期继续。同样,如果您调用liveBroadcasts.insert
或liveBroadcasts.update
方法,但未为此属性指定值,则系统会安排广播无限期地继续。 -
liveBroadcast
资源的contentDetails.recordFromStart
属性(默认值已为true
)现在只能设置为false
,前提是广播频道允许为直播停用录制功能。如果您的频道没有停用录制的权限,并且您尝试插入
recordFromStart
属性设置为false
的广播,则 API 会返回Forbidden
错误。此外,如果您的频道没有该权限,并且您尝试更新广播以将recordFromStart
属性设置为false
,则 API 将返回modificationNotAllowed
错误。 -
liveBroadcast
资源不再包含enableArchive
属性,该属性曾在contentDetails.enableDvr
和contentDetails.enableEmbed
属性的说明中提及。 -
liveBroadcast
资源的status.lifeCycleStatus
属性的有效值列表已更新,其中包含对每种状态的说明。 -
liveCuepoint
资源的新settings.walltime
属性指定了应插入 CuePoint 的日期和时间。如果请求尝试插入一个为该属性和settings.offsetTimeMs
属性指定值的 CuePoint,则 API 会返回错误。 -
liveStream
资源中的新contentDetails
对象包含有关数据流的信息。目前,该对象的唯一属性是contentDetails.closedCaptionsIngestionUrl
,用于指定与视频流相关联的字幕的提取网址。 -
liveStream
资源的status.streamStatus
属性的有效值列表已更新,其中包含对每种状态的说明。 -
liveBroadcasts.control
方法的新walltime
参数可让您指定平板电脑配置更改发生的时间和日期。如果请求同时为该参数和offsetTimeMs
参数指定了值,则 API 会返回错误。 -
在对
liveBroadcasts.list
请求的 API 响应中,kind
属性的值已从youtube#liveBroadcastList
更改为youtube#liveBroadcastListResponse
。 -
在对
liveStreams.list
请求的 API 响应中,kind
属性的值已从youtube#liveStreamList
更改为youtube#liveStreamListResponse
。 -
eventId
属性已从liveBroadcastListResponse
和liveStreamListResponse
中弃用。 -
该 API 支持以下新错误:
错误类型 错误详情 说明 invalidValue
conflictingTimeFields
如果您的请求为 offsetTimeMs
和walltime
参数指定了值,liveBroadcasts.control
方法会返回此错误。请求可以同时省略这两个参数,也可以为其中一个参数指定值。invalidValue
invalidWalltime
如果 walltime
参数的值无效,liveBroadcasts.control
方法会返回此错误。forbidden
enableClosedCaptionsModificationNotAllowed
如果您尝试更新 contentDetails.enableClosedCaptions
值,但广播的状态不是created
或ready
,liveBroadcasts.update
方法会返回此错误。invalidValue
conflictingTimeFields
如果您的请求为 settings.offsetTimeMs
和settings.walltime
属性指定了值,liveCuepoints.insert
方法会返回此错误。请求可以同时省略这两个属性,也可以为这两个属性中的一个指定值。此外,
liveStreams.update
方法不再支持与liveStreams.insert
方法支持的cdnRequired
错误类似的错误。
2013 年 5 月 10 日
此更新包含以下更改:
-
YouTube 不再标识实验性 API 功能和服务。现在,我们提供了一份符合弃用政策的 YouTube API 列表。
2013 年 5 月 2 日
此更新包含以下更改:
-
借助新的
liveBroadcasts.control
方法,您可以切换已在进行中的广播的广播流中显示的插播广告的显示设置。如果您的广播流存在延迟,您还可以使用此方法指定请求的插播时间偏移量。 -
以下属性的定义已更新,以说明如果您更新
liveBroadcast
资源的contentDetails
部分,则必须设置相应属性值: -
liveStream
资源的status.streamStatus
不再支持值deleted
作为可能的流状态。 -
我们修订了 API 针对许多错误消息返回的信息,以便更好地说明特定错误发生的原因。该 API 还支持多种新错误。
2013 年 3 月 27 日
此更新包含以下更改:
-
liveBroadcast
资源中的以下属性已发生变化:startWithSlateCuepoint
属性已重命名为startWithSlate
。enableArchive
属性已重命名为recordFromStart
。slateSettings
对象已被弃用,并已从文档中移除。与slateSettings
对象或其属性相关的错误消息也已移除。最后,我们移除了入门指南的“显示平板电脑”部分。
-
该 API 不再支持使用
liveCuepoints.insert
方法插入插播广告。我们已经更新了下列文档,以体现这一更改:-
liveCuepoint
资源的settings.cueType
属性不再支持slate
作为属性值。(唯一支持的值是ad
。 -
liveCuepoint
资源的settings.eventState
属性已被弃用,并已从文档中移除。
2013 年 3 月 18 日
此更新包含以下更改:
-
所有 API 的错误消息都已更新,可更清楚地说明可能出现的错误,并在可能的情况下提供有关如何修正这些错误的指导。
-
该 API 现在可能会返回几个新错误。下表列出了错误以及可能会返回相应错误的 API 方法:
liveBroadcasts.insert
- 广播的预定结束时间必须晚于预定开始时间。liveBroadcasts.insert
- 广播指定了无效的隐私权状态。liveBroadcasts.update
- 资源不包含或未设置contentDetails.enableArchive
属性的值。liveBroadcasts.update
- 资源不包含或未设置contentDetails.enableContentEncryption
属性的值。liveBroadcasts.update
- 资源不包含或未设置contentDetails.enableDvr
属性的值。liveStreams.insert
- 代码段标题的长度必须介于 1 到 128 个字符之间。liveStreams.update
- 资源不包含或未设置snippet.title
属性的值。
-
liveStream
资源文档已更新,以反映多播和 WebM 不是之前所说的受支持的提取方法。相应地更新了cdn.format
属性的格式列表,并从资源文档中移除了cdn.multicastIngestionInfo
对象及其子属性。此外,还从支持的cdn.ingestionType
值列表中移除了http
。