如何通过 HTTP 请求将视频上传到 YouTube?

How do I upload a video to YouTube via an HTTP request?

几个小时以来,我一直在努力解决这个问题。咨询 official documentation 它说我需要向 https://www.googleapis.com/upload/youtube/v3/videos 发出 post 请求,内容类型 header 设置为 video/*application/octet-stream (我已经使用了后者)。事实证明,如果我只是 post 一个视频文件的缓冲区到那个 url 它就会起作用。但是文档还说我可以指定关于视频的一大堆选项(标题、描述、标签等)。但是,它说要将该信息附加到请求 body!我对如何在同一个请求中发送视频字节和选项感到困惑。也许这不应该是同一个请求,但他们没有提到任何关于使用 multiple 的事情。

使用 Youtube API 上传视频是使用 Google 称为“可恢复上传协议”的协议完成的。 Google 在其 API 中使用此协议(即云端硬盘、Youtube 等),并在以下情况下推荐使用此协议

  • 正在上传大文件
  • 网络连接不可靠。

有关如何在 Youtube API 中使用“可恢复上传协议”的完整详细信息,请访问 https://developers.google.com/youtube/v3/guides/using_resumable_upload_protocol

以下是一组简化的步骤:

  1. 通过向 insert API 端点发送 POST 请求来创建可续传上传 session。
  2. 从上述请求的 Location header 中读取可恢复的 session URI。
  3. 通过将带有二进制视频数据的 PUT 请求作为 body 发送到可恢复的 session URI 来上传视频。