本页面列出了 YouTube Live Streaming API 变更和文档更新。
2026 年 10 月 12 日
此更新包含以下更改:
-
liveChatMessage资源的snippet.giftEventDetails属性已更正为snippet.giftDetails,以准确反映 API 响应。
2026 年 8 月 18 日
此更新包含以下更改:
-
liveBroadcasts.update方法的文档已更新,其中包含与变现相关的新错误:preconditionFailed (412)(原因:videoNotEligibleForAdsMonetization)和backendError (503)(原因:backendError)。
2026 年 8 月 17 日
此更新包含以下更改:
-
liveBroadcast资源的新snippet.categoryId属性可让您设置、更新和检索与直播相关联的视频类别。
2026 年 7 月 20 日
此更新包含以下更改:
-
现在,您可以将
monetizationDetails.cuepointSchedule.pauseAdsUntil属性设置为过去的日期时间或空值,以解除暂停状态广告。
2026 年 7 月 9 日
此更新包含以下更改:
-
liveChatBans.insert的文档现在指定snippet.type属性必须为permanent或temporary。liveChatMessage.insert的文档准确反映了questionText是metadata的直接属性,而options是一个对象数组,每个对象都包含一个optionText字段。
2026 年 6 月 1 日
此更新包含以下更改:
-
借助
liveBroadcast资源的contentDetails.availabilityConfig属性,您可以为直播指定地理位置限制,以便管理直播活动在不同地区的可用性。
2026 年 3 月 26 日
此更新包含以下更改:
-
snippet.type属性现在支持新值giftEvent。 -
liveChatMessage资源的新snippet.giftEventDetails属性及其子属性包含有关礼物活动的信息。
2026 年 1 月 12 日
该 API 现在支持为直播启用中贴片广告和自动插入中贴片广告。
只要直播符合中贴片广告条件,直播所有者就可以选择为直播启用中贴片广告。所有者还可以随时为直播关闭中贴片广告。
如果直播启用了中贴片广告,则直播所有者可以选择启用自动中贴片广告插入功能。他们还可以随时为直播关闭自动广告。
直播所有者启用自动广告后,可以选择以下选项之一:
- 让 YouTube 优化中贴片广告的插入。此选项支持三种模式:
- 低:收入潜力较低,观看者受到的干扰较少
- 中:收入潜力中等,平衡了观看者的体验
- 高:收入潜力较高,观看者受到的干扰较多
- 手动配置中贴片广告插入策略和间隔。在这种情况下,所有者必须设置两个参数:
- 广告提示点的调度策略。您可以同时为所有观看者插入提示点,也可以让不同观看者的提示点时间各不相同。后一种策略使 YouTube 能够以更高的频率安排提示点,从而让观看者在符合条件时收到提示点。
- 中贴片广告插播时间点之间的间隔时长。
文档反映了为支持此功能而进行的以下 API 更改:
liveBroadcast资源的monetizationDetails对象包含用于启用中贴片广告和自动广告配置的字段。update方法可用于启用或停用中贴片广告。该方法还可用于为直播设置自动广告。该文档中列出了在更新直播的创收和自动广告设置时可能会出现的几种新错误。
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.titlestatus.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.enableContentEncryptioncontentDetails.enableDvrcontentDetails.enableEmbedcontentDetails.recordFromStartcontentDetails.startWithSlate
如果从请求中省略这些字段,它们将保持不变。
-
移除了有关过时
liveBroadcast字段的文档:contentDetails.enableContentEncryptioncontentDetails.startWithSlate
2022 年 4 月 1 日
此更新包含以下更改:
-
snippet.type属性现在支持两个新值:membershipGiftingEventgiftMembershipReceivedEvent
-
liveChatMessage资源的新snippet.membershipGiftingDetails属性及其子属性包含有关会员赠送事件的信息。同样,新的snippet.giftMembershipReceivedDetails属性及其子属性包含有关“收到会员资格赠礼”事件的信息。
2021 年 9 月 15 日
此更新包含以下更改:
-
snippet.type属性现在支持两个新值:newSponsorEventmemberMilestoneChatEvent
-
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 提取服务器的视频添加叠加层来实现自己的插播广告。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 响应中。 -
madeForKids属性可让任何 API 用户检索广播的“面向儿童”状态。例如,状态可能根据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 widget 提供动态的高质量代码示例。如需查看示例,请参阅
liveBroadcasts.list方法的文档。现在,介绍 API 方法的页面上有两个新元素:-
借助 APIs Explorer widget,您可以选择授权范围、输入示例参数和属性值,然后发送实际 API 请求并查看实际 API 响应。该 widget 还提供全屏视图,其中显示完整的代码示例,这些示例会动态更新,以使用您输入的范围和值。
-
常见用例部分介绍了相应方法的一个或多个常见用例。例如,您可以调用
liveBroadcasts.list方法来检索有关特定广播的数据,或检索有关当前用户的广播的数据。您可以使用该部分中的链接,在 APIs Explorer 中填充适合您的使用情形的示例值,或者打开已填充这些值的全屏 APIs Explorer。这些变更旨在让您更轻松地查看直接适用于您尝试在自己的应用中实现的用例的代码示例。
目前支持 Java、JavaScript、PHP、Python 和 curl 的代码示例。
-
-
代码示例页面也采用了新界面,提供上述所有相同功能。借助该工具,您可以探索不同方法的应用场景、将值加载到 APIs Explorer 中,以及打开全屏 APIs 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.updateliveBroadcasts.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 现在支持分辨率为 1440p、每秒帧数为 30 或 60 的直播。
此外,
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.bindliveBroadcasts.bind方法会返回403(Forbidden) 错误,表示用户在给定时间范围内发送的请求过多。错误原因为userRequestsExceedRateLimit。liveBroadcasts.insert和liveBroadcasts.update方法已支持相同的错误。liveStreams.insertliveStreams.insert方法支持四个新的400(Bad Request) 错误,这些错误可识别请求尝试插入的liveStream资源中的无效属性值。以下列表指出了错误原因及其关联的属性:
invalidFormat:cdn.formatinvalidFrameRate:cdn.frameRateinvalidIngestionType:cdn.ingestionTypeinvalidResolution:cdn.resolution
liveStreams.insertliveStreams.insert方法支持两个新的400(Bad Request) 错误,每个错误都表示请求尝试插入的liveStream资源中不存在必需的值。以下列表列出了错误原因以及与这些原因相关联的属性:
frameRateRequired:cdn.frameRateresolutionRequired: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.formatcdn.frameRatecdn.ingestionTypecdn.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 帮助中心。sponsorssponsor资源用于标识 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.updateHTTP 响应代码 forbidden (403)原因 closedCaptionsTypeModificationNotAllowed说明 只有在直播处于 created或ready状态时,才能修改contentDetails.closedCaptionsType值。liveBroadcasts.updateHTTP 响应代码 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.updateHTTP 响应代码 forbidden (403)原因 liveStreamModificationNotAllowed说明 该 API 不允许您将可重复使用的直播更改为不可重复使用的直播,反之亦然。如需了解详情,请参阅了解广播和直播
-
2015 年 5 月 21 日
此更新包含以下更改:
-
YouTube 现在支持以 60 每秒帧数 (fps) 的帧速率进行实时视频直播,这意味着游戏和其他快节奏视频的播放效果会更加流畅。当您在 YouTube 上以 60fps 的帧速率开始直播时,YouTube 也会在尚不支持高帧速率观看的设备上以 30fps 的帧速率提供直播。
liveStream资源的cdn.format属性支持此功能的两个新值:720p_hfr和1080p_hfr。如需详细了解此功能,请参阅 YouTube 创作者博客。
2014 年 8 月 21 日
此更新包含以下更改:
-
liveBroadcasts.control方法的walltime参数的定义已更新,指出属性值采用 ISO 8601 格式 (YYYY-MM-DDThh:mm:ss.sssZ) 指定。 -
该 API 现在支持以下错误:
错误类型 错误详情 说明 insufficientPermissionsliveStreamingNotEnabled如果授权 API 请求的用户未获准在 YouTube 上直播视频,则 liveBroadcast和liveStream资源的所有方法都会返回此错误。如需详细了解用户无法直播实时视频的原因,请访问 https://www.youtube.com/features 查看用户频道设置。rateLimitExceededuserRequestsExceedRateLimitliveBroadcasts.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 现在支持以下错误:
错误类型 错误详情 说明 insufficientPermissionslivePermissionBlocked如果授权请求的用户无法在 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属性指定了应插入广告插入点的时间。如果请求尝试插入一个为该属性和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 支持以下新错误:
错误类型 错误详情 说明 invalidValueconflictingTimeFields如果您的请求为 offsetTimeMs和walltime参数指定了值,liveBroadcasts.control方法会返回此错误。请求可以省略这两个参数,也可以为其中一个参数指定值。invalidValueinvalidWalltime如果 walltime参数的值无效,liveBroadcasts.control方法会返回此错误。forbiddenenableClosedCaptionsModificationNotAllowed如果您尝试更新 contentDetails.enableClosedCaptions值,但广播的状态不是created或ready,liveBroadcasts.update方法会返回此错误。invalidValueconflictingTimeFields如果您的请求为 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。