You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过无依赖库的HTTPS请求从URL上传YouTube视频?

YouTube Data API 无库HTTPS上传视频方案

核心结论

可以完全不依赖第三方库,仅通过原生HTTPS请求实现视频上传。YouTube的视频文件不是通过元数据里的URL字段传递,而是作为multipart/form-data请求体的二进制部分发送——和你接触的Facebook上传逻辑有差异(Facebook支持file_url参数直接拉取远程文件,但YouTube不支持这种方式,必须主动把文件内容包含在请求中)。

直接上传(适用于100MB以内小文件)

这是最简便的方式,通过一次POST请求完成元数据提交和文件上传:

请求地址

POST https://www.googleapis.com/upload/youtube/v3/videos?uploadType=media&part=snippet,status

请求头

  • Authorization: Bearer YOUR_OAUTH2_ACCESS_TOKEN(必须包含youtube.upload权限)
  • Content-Type: multipart/form-data; boundary=YOUR_BOUNDARY(自定义边界字符串,比如----VideoUploadBoundary123)

请求体结构

用自定义边界分隔两部分内容:元数据JSON和视频文件二进制流:

----VideoUploadBoundary123
Content-Type: application/json; charset=UTF-8

{
  "snippet": {
    "title": "Summer vacation in California",
    "description": "Had fun surfing in Santa Cruz",
    "tags": ["surfing", "Santa Cruz"],
    "categoryId": "22"
  },
  "status": {
    "privacyStatus": "public" // 可选值:public/unlisted/private
  }
}

----VideoUploadBoundary123
Content-Type: video/mp4 // 替换为你的视频实际MIME类型

[直接放入视频文件的二进制内容]

----VideoUploadBoundary123--

无库实现示例(用curl命令)

curl -X POST \
  -H "Authorization: Bearer YOUR_OAUTH2_ACCESS_TOKEN" \
  -H "Content-Type: multipart/form-data; boundary=----VideoUploadBoundary123" \
  --data-binary $'----VideoUploadBoundary123\r\nContent-Type: application/json; charset=UTF-8\r\n\r\n{"snippet":{"title":"Summer vacation in California","description":"Had fun surfing in Santa Cruz","tags":["surfing","Santa Cruz"],"categoryId":"22"},"status":{"privacyStatus":"public"}}\r\n\r\n----VideoUploadBoundary123\r\nContent-Type: video/mp4\r\n\r\n' \
  --data-binary @/home/path/to/file.mp4 \
  --data-binary $'\r\n\r\n----VideoUploadBoundary123--' \
  "https://www.googleapis.com/upload/youtube/v3/videos?uploadType=media&part=snippet,status"

大文件分块上传(适用于100MB以上/256GB以内文件)

如果视频超过100MB,建议用可恢复分块上传,步骤如下:

  1. 发送初始化请求获取上传会话URL:
    POST https://www.googleapis.com/upload/youtube/v3/videos?uploadType=resumable&part=snippet,status
    
    请求头包含Authorization和Content-Type: application/json,请求体为元数据JSON,返回的Location头就是会话URL。
  2. 用会话URL分块发送视频内容,每块大小建议5MB-10MB,请求头需包含Content-Range指定当前块的字节范围。

关键注意事项

  • 必须使用带https://www.googleapis.com/auth/youtube.upload权限的OAuth 2.0令牌,API密钥仅支持只读操作,无法用于上传。
  • 视频MIME类型必须是video/*或application/octet-stream。
  • 最大文件大小限制为256GB。
  • YouTube不支持直接传入远程文件URL,必须将文件内容包含在请求体中。

内容的提问来源于stack exchange,提问作者David

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 05:01:11