实现:视频

以下示例展示了如何使用 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