实现:视频

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

检索频道上传的视频

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

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

如需检索最热门视频列表,请调用 videos.list 方法并将 chart 参数的值设置为 mostPopular。检索此列表时,您还可以设置以下任一参数或两个参数:

  • regionCode:指示 API 返回指定区域的视频列表。
  • videoCategoryId:用于标识应检索哪个视频类别的最热门视频。

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

https://developers.google.com/apis-explorer/#p/youtube/v3/youtube.search.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 对象。如需测试查询,您需要将有效的视频 ID 替换为 videoId 属性值。请注意,提交此要求实际上会举报该视频。

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