YouTube API 教程
本文整理了一些 YouTube API 及相关说明和注意事项。确保内容的可用性,内容均摘自官网,如果为第三方内容会特别注明。
部分内容提炼了核心信息,便于有需要的人快速找到自己需要的内容部分。
如果访问的 developers.google.com 链接无法打开请将其中的
com
改为cn
。
前期准备
- 用 Google 账号访问 Google API 控制台、请求 API 密钥以及注册应用。
- 在 Google Developers Console创建一个项目并获取授权凭据,以便应用提交 API 请求。
- 创建项目后,请确保启用 YouTube 数据 API :
- 转到 API 控制台,选择您的项目。
- 访问“已启用的 API”页面。 在 API 列表中,确保 YouTube Data API v3 的状态为启用。
- 如果应用采用的 API 方法需要用户授权,参阅授权指南,了解如何采用 OAuth 2.0 授权。
- 选择客户端库,简化 API 执行过程。
- 熟悉 JSON(JavaScript 对象表示法)数据格式。了解详情参阅 json.org。
配额用量
- 所有 API 请求(含无效请求)都至少产生单点配额费用。
- 启用 YouTube Data API 的项目默认每天分配 10,000 个单位(units)的配额。默认配额可能会发生变化。
- 额外的配额需另外申请
- 常规消耗示例
- 创建、更新或删除资源的写入操作:50 个单位
- 一次搜索请求:100个单位
- 一次视频上传:1600个单位
- 配额费用:https://developers.google.com/youtube/v3/determine_quota_cost?hl=zh-cn
- API 控制台-配额使用情况:https://console.developers.google.com/iam-admin/quotas?hl=zh-cn
- API 控制台-可用配额:https://console.cloud.google.com/?hl=zh-cn
申请额外配额
- 必须先完成审核,证明项目符合 YouTube API 服务服务条款。让 YouTube 了解项目的预期用例,确保 API 服务不会受到滥用。YouTube 的开发者政策。
- 填写并提交 YouTube API 服务 - 审核和配额增加表单。API 服务团队会尽快与您联系。
- 如果在12 个月内完成了 API 合规性审核,还需要额外增加配额,请填写并提交已审核的开发者请求表单。
- 如果最近未通过 API 合规性审核,想对此决定提出申诉,请填写并提交申诉表单。
- YouTube API 团队会定期进行审核,以确保质量、改进我们的产品和服务,并确认您是否遵守 YouTube API 服务的服务条款。如果我们已联系您完成定期审核,请填写定期审核表单。
- 项目相关的控制权变更(例如,购买或出售、合并或其他形式的公司交易),开发者或任何代表开发者运营 API 客户端的相关方必须填写并提交控制变更表单。
API文档
注:播放器和订阅按钮整理了详细内容,数据、分析与报告、直播因为整理详细的接口方法就没有另外整理详细内容。
官方文档链接:
接口类型 | API | 说明 |
---|---|---|
数据 | YouTube Data API v3 v3 | 为您的应用添加 YouTube 功能,包括上传视频、创建和管理播放列表等。 |
数据分析 | YouTube Analytics API | 检索 YouTube 视频和频道的观看统计信息、热门程度指标等。 |
直播 | YouTube Live API v3 | 安排 “YouTube 直播”直播并管理直播视频流。 |
报告 | YouTube Reporting API | 安排包含 YouTube 分析数据的报告作业,并以 CSV 文件的形式下载生成的批量数据报告。 |
播放器 | YouTube Players | 在应用或者网页中播放 YouTube 视频 |
订阅按钮 | YouTube Subscribe Button | 让用户能够在YouTube之外一键订阅您的 YouTube 频道。 |
权利管理(资产ID) | Content ID API | 通过 YouTube 的权利管理系统,资产所有者和管理员可以向 YouTube 提供其资产的元数据、所有权数据和参考资料。系统允许所有者为其资产设置政策,并对与这些资产相匹配的 YouTube 内容提出版权主张。他们还可以将参考视频作为其资产的可公开观看的 YouTube 视频。 专供 YouTube 内容合作伙伴使用,并非所有开发者或所有 YouTube 用户都可以使用。 |
如果上面链接无法访问,可以尝试下面中国大陆专用链接:
- 数据: YouTube Data API v3 v3
- 数据分析: YouTube Analytics API
- 直播: YouTube Live API v3
- 报告: YouTube Reporting API
- 播放器: YouTube Players
- 订阅按钮: YouTube Subscribe Button
- 权利管理(资产ID): Content ID API
数据(含直播)
- 数据:
- 在应用中添加 YouTube 功能,包括上传视频、创建和管理播放列表等。
- https://developers.google.com/youtube/v3/docs?hl=zh-cn
- 直播:
- https://developers.google.com/youtube/v3/live/docs?hl=zh-cn
分析和报告
针对性查询(分析):https://developers.google.com/youtube/analytics/data_model?hl=zh-cn
批量报告:https://developers.google.com/youtube/reporting/v1/reports?hl=zh-cn
- 时间段说明
- 分析API:所有日期均指从太平洋时间零点(UTC-7 或 UTC-8)开始,到指定日、月和年的晚上 11:59(太平洋时间)结束的时间段。
通过 YouTube Analytics API 获取定位查询,通过 YouTube Reporting API 获取批量报告。
- 在一个 API 中可用的数据在另一个 API 中可能不可用。
- 例如,YouTube Analytics API 允许您每周或每月检索用户活动指标,但 YouTube Reporting API 需要您自行汇总这些数据。另一方面,YouTube Reporting API 支持内容所有者的资产报告,但是 YouTube Analytics API 中不会提供这些数据。
- 下表中「查询」对应的是 Analytics API,「批量」对应的是 Reporting API
报告类型 | |
---|---|
视频报告 | 支持频道(查询或批量)和内容所有者(查询或批量)。 视频报告提供与频道的视频或内容所有者的视频相关的所有用户活动的统计信息。例如,这些报告中包含您的视频获得的观看次数。在 YouTube Analytics API 中,一些内容所有者视频报告还包含估算收入和广告效果指标。 |
播放列表报告 | 支持频道(查询或批量)和内容所有者(查询或批量)。 播放列表报告会提供与播放列表中的视频观看次数特别相关的统计信息。YouTube Reporting API 支持针对播放列表生成观众黏度报告,但 YouTube Analytics API 不支持类似的报告。 |
广告效果报告 | 支持内容所有者(查询或批量)。 广告效果报告可为视频播放期间投放的广告提供基于展示次数的指标。这些指标统计的是每次广告展示,并且每次视频播放可产生多次展示。 |
估算的收入报告 | 支持内容所有者(批量)。 估算收入报告提供了来自 Google 出售的广告来源和非广告来源的视频的估算总收入。这些报告还包含一些广告效果指标。请注意,系统管理的报表包含实际收入。 |
资产报告 | 支持内容所有者(批量)。 资产报告可提供与内容所有者的资产相关联的视频的用户活动指标。如果内容所有者已声明某视频与内容所有者的一项资产匹配,那么该视频就会被纳入内容所有者的报告中。该视频可能是由内容所有者或其他 YouTube 用户上传的。 |
系统管理的报告 | 适用于有权访问 YouTube 创作者工作室的“报告”菜单中的相应报告的内容所有者。 系统管理的报告可提供资产和视频产生的实际收入数据。另有一份报告列出了已主张版权的视频以及与这些视频匹配的资产。请注意,目前并非所有的创作者工作室报告都在 API 中提供。 注意:YouTube 会自动为有权访问创作者工作室中相应报告的内容所有者生成由系统管理的报告。因此,获取这些报告的过程与此列表中其他类型的报告不同。如需了解详情,请参阅系统管理的报告的相关文档。 |
YouTube Analytics(分析)API 和报告 API 之间的主要差异:
功能 | YouTube Analytics API | YouTube Reporting API |
---|---|---|
数据检索流程 | 每个 API 请求都会指定要返回的维度和指标,以及要返回数据的时间段。 | 应用安排报告作业。对于每项任务,YouTube 都会生成可异步下载的每日报告。 |
日期范围 | 有些 API 报告会指明用户活动发生的日期。其中部分报告支持按月汇总用户活动指标的维度。 | 所有 API 报告都会指明用户活动发生的日期。使用该 API 的应用可实现定期汇总数据的功能。 |
过滤数据 | 您可以对报告进行过滤,以便仅包含维度具有特定值的行。该 API 还支持某些仅用作过滤条件的维度,例如“大洲”和“次大陆”。subContinent | 该 API 支持批量下载完整的数据集。它不支持对仅限过滤条件的维度进行过滤或返回数据。客户端应用存储下载的数据,并实现自己的功能来过滤数据。 |
排序 | 报告可以根据返回的指标值进行排序。某些报告仅支持有限数量的结果。例如,列出某个频道中观看次数最多的视频的报告最多会返回 200 行。 | 此 API 支持批量下载完整的数据集。客户端应用可以实现自己的功能,对下载的数据进行排序。 |
枚举 | API 报告包含文本值(例如“ANDROID”或“CHANNEL”),用于标识枚举的维度值。 | API 报告包含可映射到文本值的整数。 |
配额 | API 服务器评估每个查询以确定其配额费用。配额使用情况部分更详细地介绍了这种方法。 | 配额使用量不是问题,因为数据只会检索一次,然后在应用中过滤、排序和查询。 |
唯一身份报告 | 🚫无 | 与字幕相关的用户活动播放列表的观众黏度数据面向内容所有者的估算收入报告(提供两种不同的报告)面向内容所有者的资产报告(提供 11 种不同的报告) |
Unique dimensions | group (filter-only dimension) continent (filter-only dimension) subContinent (filter-only dimension) month isCurated==1 (filter-only dimension) viewsPerPlaylistStart averageTimeInPlaylist | annotation_id annotation_type asset_id card_id card_type live_or_on_demand subscribed_status subtitle_language |
Unique metrics | uniques relativeRetentionPerformance viewsPerPlaylistStart averageTimeInPlaylist | card_click_rate card_clicks card_impressions card_teaser_click_rate card_teaser_clicks card_teaser_impressions estimated_partner_adsense_revenue estimated_partner_doubleclick_revenue playlist_saves_added playlist_saves_removed |
- API 之间的命名差异
- 这两种 API 目前使用不同的命名惯例,YouTube Analytics(分析)API 名称使用驼峰式大小写形式,而 YouTube Reporting API 名称则使用以下划线分隔的名称。部分API单词上也存在差异!
- 以下表格非全部内容,比如报告中有的维度而分析中没有,下表就不会出现相关内容。
播放器
IFrame API(网页)
- 使用 IFrame 在网站嵌入 YouTube 视频,并使用 JavaScript 控制播放器。
- 技术:JavaScript、HTML
- API 文档链接:https://developers.google.com/youtube/iframe_api_reference?hl=zh-cn#Accessing_and_Modifying_DOM_Nodes
播放器参数:https://developers.google.com/youtube/player_parameters?hl=zh-cn
- 可实现功能:
- 队列函数:加载和播放视频、播放列表或其他视频列表
- 播放控制和播放器设置
- 播放状态:缓冲百分比、已播时长、播放状态(未开始、结束、暂停、缓冲、已插入视频)
- 播放质量
- 检索视频信息
- 检索播放列表信息
- 添加或移除事件监听器
- 访问和修改DOM节点
- 注:
- iOS禁止在浏览器中自动播放嵌入式媒体,播放必须由用户发起
iOS Player Helper(基于 IFrame 实现的开源库)
youtube-ios-player-helper
是一个开源库,可帮助您将 YouTube iframe 播放器嵌入到 iOS 应用中。该库在应用的 Objective-C 代码和 YouTube 播放器的 JavaScript 代码之间创建了一个WebView
并架起了一座桥梁- API 文档链接:https://developers.google.com/youtube/v3/guides/ios_youtube_helper?hl=zh-cn
- 可实现功能:
- 控制播放
- 处理播放回调(播放状态变化和播放错误)
- 限制
- 不支持在多个 YTPlayerView 实例中并发播放视频(API文档中有建议的最佳做法)
- 无法播放私享视频,可播放不公开列出的视频
废弃-Android Player API(改用 IFrame)
- 2023 年 5 月 1 日之后完全弃用。
工具和微件
YouTube Subscribe Button(网页订阅按钮)
可以在YouTube之外任意网页添加一键Subscribe
按钮。用户点击此按钮直接订阅您的YouTube频道,无需离开您的网站。
配置按钮:https://developers.google.com/youtube/youtube_subscribe_button?hl=zh-cn
- 使用条件
- 使用即表示同意 YouTube API Terms of Service及所有其他相关的 API 文档,包括但不限于获利准则和品牌指南。
- 不允许您采用 API 服务条款和 API 文档中未明确授权的任何方式来使用 YouTube 品牌
- 不能用来跟踪任何与用户行为或浏览活动有关的用户数据,包括但不限于是否点击了YouTube Subscribe Button。禁止项包括但不限于在用户点击 YouTube 按钮时禁止使用 Pixels、Cookie 或其他识别方法。
- 检索频道ID
- https://developers.google.com/youtube/subscribe/retrieve-channel-id?hl=zh-cn、
- 此表调用了 YouTube Data API 的 方法。默认情况下,表单会将参数值
**part**
和**mine**
分别设为**snippet**
和**true**
。
- 此表调用了 YouTube Data API 的 方法。默认情况下,表单会将参数值
- https://developers.google.com/youtube/subscribe/retrieve-channel-id?hl=zh-cn、
附录
相关开发资源
- 代码库
- 代码示例库:https://github.com/youtube/api-samples
- YouTube API 的代码示例,包括 YouTube 数据 API、YouTube Analytics API 和 YouTube Live Streaming API。该存储库包含特定于语言的目录,其中包含示例。
- 客户端库:https://developers.google.com/youtube/v3/libraries?hl=zh-cn
- 代码示例库:https://github.com/youtube/api-samples
- 资料与沟通
- 开发团队的 YouTube 频道:https://www.youtube.com/user/YouTubeDev?hl=zh-cn
- YouTube API 最新动态:https://blog.youtube/
- 发送错误报告:https://issuetracker.google.com/issues/new?component=186600&%3Btemplate=874803&hl=zh-cn
- 问题咨询:http://stackoverflow.com/questions/ask?tags=youtube-api
- Google API - 全局网域错误列表:https://developers.google.com/youtube/v3/docs/core_errors?hl=zh-cn
- YouTube Live Streaming API - 直播API错误列表:https://developers.google.com/youtube/v3/live/docs/errors?hl=zh-cn
开发者政策:https://developers.google.com/youtube/terms/developer-policies-guide?hl=zh-cn
- 申请
- 初次申请额外增加配额:https://support.google.com/youtube/contact/yt_api_form?hl=zh-cn
- 再次申请额外增加配额:https://support.google.com/youtube/contact/yt_api_audited_developer_requests_form?hl=zh-cn
- 合规性审核被拒申诉:https://support.google.com/youtube/contact/yt_api_appeals?hl=zh-cn
- 被通知定期审查:https://support.google.com/youtube/contact/yt_api_form?hl=zh-cn
- 项目管理权变更:https://support.google.com/youtube/contact/yt_api_change_of_control_form?hl=zh-cn
OAuth 2.0 流程推荐库
名词说明
私享视频:
- 1:自己设置,私享视频只对受邀观看者开放:https://support.google.com/youtube/answer/77272?hl=zh-Hans
- 2:视频违反政策被限制:https://support.google.com/youtube/answer/7300965?hl=zh-Hans
- 3:13-17 周岁创作者的默认视频隐私设置为“私享”,年满 18 周岁默认视频会设置“公开”,该设置可修改。
不公开列出:
- :https://support.google.com/youtube/answer/157177?hl=zh-Hans
视频隐私设置对应的功能权限
功能 | 私享 | 不公开列出 | 公开 |
---|---|---|---|
分享网址 | 不支持 | 支持 | 支持 |
添加至频道版块 | 不支持 | 支持 | 支持 |
在搜索结果、相关视频和推荐内容中显示 | 不支持 | 不支持 | 支持 |
在您的频道中发布 | 不支持 | 不支持 | 支持 |
在向订阅者推送的动态中显示 | 不支持 | 不支持 | 支持 |
发表评论 | 不支持 | 支持 | 支持 |
在公开播放列表中显示 | 不支持 | 支持 | 支持 |