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

Mas*_*son 6 http youtube-api youtube-data-api

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

Jos*_*hin 6

使用 Youtube API 上传视频是使用 Google 称为“可恢复上传协议”的协议来完成的。Google 在其 API(即 Drive、Youtube 等)中使用此协议,建议在以下场景中使用

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

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

以下是一组简化的步骤:

  1. POST通过向API 端点发送请求来创建可恢复上传会话insert
  2. Location从上述请求的标头中读取可恢复会话 URI 。
  3. 通过将二进制视频数据作为正文的 PUT 请求发送到可恢复会话 URI 来上传视频。

  • 不仅是连接不良,而且对于大文件也是如此。另一种选择是分段上传,他们似乎没有在 Youtube API 文档部分记录它。他们的 Drive API 文档中提供了如何完成此操作的示例。https://developers.google.com/drive/api/v3/manage-uploads#multipart。您可以在他们的 Ruby Client SDK https://github.com/googleapis/google-api-ruby-client 中找到此实现 (2认同)