使用Ruby调用YouTube API上传视频遇媒体类型错误求助
解决YouTube API上传视频时的
badContent MIME类型错误 看起来你遇到的问题是代码里实际传递的MIME类型和文件本身的类型不匹配导致的——虽然你的test.mp4确实是video/mp4,但API收到的却是application/mp4,这就触发了错误提示。下面是几个针对性的解决方案:
1. 手动指定正确的MIME类型
官方代码可能默认用了自动检测或者错误的MIME类型设置,你需要在创建上传媒体对象时明确指定video/mp4,而不是依赖自动检测(有时候自动检测会出问题)。
找到代码中创建UploadIO的部分,把原来可能错误的写法:
media = Google::Apis::Core::UploadIO.new('test.mp4', 'application/mp4')
改成:
media = Google::Apis::Core::UploadIO.new('test.mp4', 'video/mp4')
2. 确认API调用的content_type参数
如果你的代码里调用insert_video时指定了content_type,也要确保它和MIME类型一致:
response = youtube.insert_video( 'snippet,status', video_object, upload_source: media, content_type: 'video/mp4' # 这里要和UploadIO的类型匹配 )
3. 备选方案:使用application/octet-stream
既然YouTube API明确说明支持application/octet-stream,你也可以尝试用这个类型来上传,绕开MIME类型检测的问题:
media = Google::Apis::Core::UploadIO.new('test.mp4', 'application/octet-stream')
同时把insert_video里的content_type也改成这个值。
排查小技巧
在上传前打印出你实际使用的MIME类型,确认是不是真的传成了application/mp4:
media = Google::Apis::Core::UploadIO.new('test.mp4', 'video/mp4') puts "Current MIME type: #{media.content_type}" # 应该输出video/mp4
这样就能确保传递给API的类型是符合要求的,解决这个错误啦。
内容的提问来源于stack exchange,提问作者Mateu
相关产品推荐
相关产品推荐

