实现:视频

以下示例展示了如何使用 YouTube Data API (v3) 执行与视频相关的功能。

检索频道的已上传视频

此示例用于检索上传到特定频道的视频。此示例包含两个步骤:

此示例展示了如何检索 YouTube 上最热门的视频列表,这些视频是使用一种算法选择的,该算法会结合许多不同的信号来确定总体受欢迎程度。

如需检索最热门视频列表,请调用 videos.list 方法并将 chart 参数的值设置为 mostPopularmostPopular 排行榜包含热门音乐、电影和游戏视频。

然后,您可以选择性地设置以下参数:

  • regionCode:指示 API 返回指定地区的视频列表。此参数值是 ISO 3166-1 alpha-2 国家/地区代码。您可以使用 i18nRegions.list 方法检索 YouTube 支持的区域代码列表。
  • videoCategoryId:用于标识应检索最热门视频的视频类别。您可以使用 videoCategories.list 方法检索 YouTube 支持的类别 ID 列表。

例如,以下请求会检索西班牙最热门的体育视频:

https://developers.google.com/apis-explorer/#p/youtube/v3/youtube.videos.list?
        part=snippet
        &chart=mostPopular
        &regionCode=es
        &videoCategoryId=17
  

上传视频

由于 API Explorer 不支持上传文件的功能,因此此说明未链接到可执行的示例。以下资源将帮助您修改应用,使其能够使用 v3 API 上传视频:

  • API 的 videos.insert 方法的文档包含多个代码示例,说明了如何使用不同的编程语言上传视频。

  • 可续传上传指南介绍了应用使用可续传上传流程上传视频时所用的 HTTP 请求序列。本指南主要面向无法使用 Google API 客户端库的开发者,其中一些客户端库可以为断点续传提供原生支持。

  • 上传视频的 JavaScript 示例使用 CORS(跨源资源共享)来演示如何通过网页上传视频文件。v3 API 使用的 CORS 上传库自然支持断点续传。此外,该示例还演示了如何通过检索 video 资源的 processingDetails 部分来检查已上传视频的状态,以及如何处理已上传视频的状态变化。

查看已上传视频的状态

此示例展示了如何检查已上传视频的状态。上传的视频会立即显示在已通过身份验证的用户的上传视频 Feed 中。不过,在视频处理完毕之前,它不会在 YouTube 上显示。

  • 第 1 步:上传视频

    调用 videos.insert 方法以上传视频。如果请求成功,API 响应将包含一个 video 资源,用于标识上传视频的唯一视频 ID。

  • 第 2 步:查看视频的状态

    调用 videos.list 方法以检查视频的状态。将 id 参数的值设置为在第 1 步中获得的视频 ID。将 part 参数的值设置为 processingDetails

    如果请求成功处理,API 响应将包含 video 资源。检查 processingDetails.processingStatus 属性的值,以确定 YouTube 是否仍在处理视频。当 YouTube 完成视频处理后,该属性的值将更改为 processing 以外的其他值,例如 succeededfailed

    请求正文是一个 video 资源,其中的 id 属性用于指定您要删除的视频的视频 ID。在此示例中,资源还包含一个 recordingDetails 对象。

    以下请求会检查视频的状态。如需在 APIs Explorer 中完成请求,您需要设置 id 属性的值。

    https://developers.google.com/apis-explorer/#p/youtube/v3/youtube.videos.list?
            part=snippet,processingDetails
            &id=VIDEO_ID

注意:您的应用可以轮询 API,以定期检查新上传视频的状态。视频处理完毕后,您的应用可以根据视频的状态创建公告或继续执行其他操作。

更新视频

此示例展示了如何更新视频以添加有关视频录制时间和地点的信息。该示例包含以下步骤:

  • 第 1 步:检索视频 ID

    按照上述步骤检索当前已通过身份验证的用户的频道所上传的视频。该列表可用于显示视频列表,其中每个视频的 ID 都是一个键。

    注意:还有许多其他方法可以获取视频 ID,例如检索搜索结果或列出播放列表中的项目。不过,由于视频只能由其所有者更新,因此检索授权 API 请求的用户拥有的视频列表很可能是此流程的第一步。

  • 第 2 步:更新视频

    调用 videos.update 方法以更新特定视频。将 part 参数的值设置为 recordingDetails。(参数值取决于要更新哪个视频的元数据字段。)

    请求正文是一个 video 资源,其中的 id 属性用于指定您要更新的视频的视频 ID。在此示例中,资源还包含一个 recordingDetails 对象。

    以下示例资源表明,相应视频是在 2013 年 10 月 30 日于波士顿录制的:

    {
      "id": "VIDEO_ID",
      "recordingDetails": {
        "location": {
          "latitude": "42.3464",
          "longitude": "-71.0975"
        }
        "recordingDate": "2013-10-30T23:15:00.000Z"
      }
    }

    如需在 APIs Explorer 中完成请求,您需要设置 id 属性的值。

    https://developers.google.com/apis-explorer/#p/youtube/v3/youtube.videos.update?
            part=snippet

上传自定义缩略图并将其设置为视频的缩略图

您可以使用 v3 API 的 thumbnails.set 方法上传自定义缩略图并将其设置为视频的缩略图。在您的请求中,videoId 参数的值用于标识将使用哪个视频的缩略图。

此查询无法使用 API Explorer 进行测试,因为 API Explorer 不支持上传媒体文件的功能,而此方法需要此功能。

相关代码示例:PHPPython

删除视频

此示例展示了如何删除视频。该示例包含以下步骤:

举报滥用视频

此示例展示了如何举报包含滥用内容的视频。该示例包含以下步骤:

  • 第 1 步:检索用于说明举报视频原因的 ID

    videoAbuseReportReasons.list 方法发送授权请求,以检索用于标记视频的有效原因列表。下面的示例 videoAbuseReportReason 资源包含用于标记包含垃圾内容或误导性内容的视频的信息。

    {
      "kind": "youtube#videoAbuseReportReason",
      "etag": "\"tbWC5XrSXxe1WOAx6MK9z4hHSU8/Or2VqBIilpHU7j__oPzUFCvGVBw\"",
      "id": "S",
      "snippet": {
        "label": "Spam or misleading",
        "secondaryReasons": [
          {
            "id": "27",
            "label": "Spam or mass advertising"
          },
          {
            "id": "28",
            "label": "Misleading thumbnail"
          },
          {
            "id": "29",
            "label": "Malware or phishing"
          },
          {
            "id": "30",
            "label": "Pharmaceutical drugs for sale"
          },
          {
            "id": "31",
            "label": "Other misleading info"
          }
        ]
      }
    }

    如资源中所示,此原因与次要原因列表相关联。当您因视频包含垃圾内容而标记该视频时,需要提供原因 ID,强烈建议您同时提供次要原因。

  • 第 2 步:举报视频中的滥用内容

    videos.reportAbuse 方法发送授权请求,以实际举报视频。请求正文是一个 JSON 对象,用于标识被标记的视频以及标记原因。如第 1 步中所述,对于某些类型的原因,系统支持并强烈建议您提供次要原因。

    JSON 对象的 videoId 属性用于标识要标记的视频。

    以下 JSON 对象示例标记了一个视频,表明其包含垃圾内容或误导性内容,更具体地说,是使用了误导性缩略图。如上面的 JSON 对象示例所示,“垃圾内容或误导性内容”的 ID 为 S误导性缩略图的 ID 为 28

    {
      "videoId": "VIDEO_ID",
      "reasonId": "S",
      "secondaryReasonId": "28",
      "comments": "Testing the video flagging feature.",
      "language": "en"
    }

    必须使用 OAuth 2.0 授权 videos.reportAbuse 请求。点击以下链接可在 API Explorer 中加载上述 JSON 对象。如需测试查询,您需要将 videoId 属性值替换为有效的视频 ID。请注意,提交此请求实际上会标记相应视频。

    https://developers.google.com/apis-explorer/#p/youtube/v3/youtube.videos.reportAbuse