使用YouTube API上传视频:MP4文件路径位置及400错误排查
YouTube视频上传接口问题解答
核心问题说明
你不能在snippet字段里填写本地MP4文件路径——YouTube的videos.insert接口不支持通过JSON请求体传递视频文件,这也是你收到400错误的主要原因之一。
正确的上传方式
视频上传需要使用multipart/form-data格式的POST请求,请求包含两部分核心内容:
- 二进制的视频文件本身(作为表单的
file字段,需读取本地文件的二进制数据流上传,而非填写路径字符串) - 描述视频元数据的JSON内容(即你当前编写的
snippet和status结构,作为表单的独立字段)
错误细节修正
除了文件上传方式错误,你的请求还有一处格式问题:
tags字段要求是字符串数组,每个标签需单独作为数组元素,而非将所有标签合并在一个字符串中:
错误写法:
正确写法:"tags": ["музыка, song, classic"]"tags": ["музыка", "song", "classic"]
示例请求结构(伪代码)
POST https://youtube.googleapis.com/youtube/v3/videos?part=snippet,status&access_token=[你的令牌]&key=[你的API密钥] Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW ------WebKitFormBoundary7MA4YWxkTrZu0gW Content-Disposition: form-data; name="file"; filename="你的视频文件.mp4" Content-Type: video/mp4 [本地MP4文件的二进制内容] ------WebKitFormBoundary7MA4YWxkTrZu0gW Content-Disposition: form-data; name="snippet" { "categoryId": "22", "description": "Description of uploaded video.", "title": "Test video upload.", "tags": ["музыка", "song", "classic"], "defaultLanguage": "ru", "thumbnails": { "default": { "url": "url of jpg image" } } } ------WebKitFormBoundary7MA4YWxkTrZu0gW Content-Disposition: form-data; name="status" { "privacyStatus": "private", "license": "youtube" } ------WebKitFormBoundary7MA4YWxkTrZu0gW--
400错误的原因总结
- 未通过
multipart/form-data格式传递视频文件,仅发送了元数据JSON tags字段格式不符合接口要求
内容的提问来源于stack exchange,提问作者Mikhail Eliseev
相关产品推荐
相关产品推荐

