实现:视频

以下示例展示了如何使用 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 响应中将包含用于标识所上传视频的唯一视频 ID 的 video 资源。

  • 第 2 步:查看视频状态

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

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

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

    下面的请求用于检查视频的状态。如需在 API 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"
      }
    }

    如需在 API 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

    按照上述步骤,为当前已通过身份验证的用户的频道检索上传的视频。该列表可用于显示视频列表,并将每个视频的 ID 用作键。

    注意:还有许多其他方法可用于获取视频 ID,例如检索搜索结果或列出播放列表中的内容。不过,由于视频只能归所有者删除,因此检索视频可能是向用户授权 API 请求的视频列表的第一步。

  • 第 2 步:删除视频

    调用 videos.delete 方法可删除特定视频。在该请求中,id 参数用于指定您要删除的视频的视频 ID。必须使用 OAuth 2.0 向请求授权。如果您在 API Explorer 中测试此查询,则需要将有效视频 ID 替换为 id 参数值。

    https://developers.google.com/apis-explorer/#p/youtube/v3/youtube.videos.delete?
            id=VIDEO_ID
    

举报滥用的视频

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

  • 第 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"
    }

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

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