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

使用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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:23:24