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

使用Google API v3上传YouTube视频遇400错误:不支持application/json类型

解决YouTube API v3视频上传400错误(媒体类型不支持)

使用Google API v3向YouTube上传视频,昨日起突然出现400错误,但代码和服务器均未做任何改动。排查时发现google/apiclient包的src/Http/MediaFileUpload.php文件中设置了content-type为application/json; charset=UTF-8,怀疑是问题根源,寻求解决办法。

环境详情

  • 操作系统:Linux
  • PHP版本:8.1.8
  • 包名称及版本:google/apiclient: ^2.13.2
  • Laravel版本:^9.0

错误信息

{
  "error": {
    "code": 400,
    "message": "Media type 'application/json; charset=UTF-8' is not supported. ",
    "errors": [
      {
        "message": "Media type 'application/json; charset=UTF-8' is not supported. ",
        "domain": "global",
        "reason": "badRequest"
      }
    ],
    "status": "INVALID_ARGUMENT"
  }
}

代码示例

$chunkSizeBytes = 15 * 1024 * 1024;
$client->setDefer(true);
$insertRequest = $youtube->videos->insert("status,snippet,recordingDetails", $video , [
    'notifySubscribers' => true
]);
$media = new MediaFileUpload(
    $client,
    $insertRequest,
    'video/'.File::extension($videoPath),
    null,
    false,
    $chunkSizeBytes
);
$media->setFileSize(File::size($videoPath));

$status = false;
$handle = fopen($videoPath, "rb");
while (!$status && !feof($handle)) {
    $chunk = fread($handle, $chunkSizeBytes);
    $status = $media->nextChunk($chunk);
}
fclose($handle);

$client->setDefer(false);

解决办法

1. 确保媒体类型参数正确

实例化MediaFileUpload时,第三个参数依赖File::extension($videoPath)生成MIME类型,要确保该方法返回的是有效视频后缀(如mp4、mov)。可以直接手动指定正确的MIME类型测试,比如替换为'video/mp4'。

2. 强制覆盖Content-Type请求头

如果默认的Content-Type被错误设置,可在实例化MediaFileUpload后手动强制指定正确的媒体类型:

$media = new MediaFileUpload(
    $client,
    $insertRequest,
    'video/mp4',
    null,
    false,
    $chunkSizeBytes
);
// 强制覆盖请求头
$media->getRequest()->setHeader('Content-Type', 'video/mp4');

3. 排查依赖包隐性更新

检查composer.lock文件,确认google/apiclient及其子依赖是否有意外版本变更。若有,可在composer.json中锁定到之前正常工作的版本:

"google/apiclient": "2.13.2"

执行composer update google/apiclient完成版本回退。

4. 验证视频文件有效性

确认视频文件未损坏,且符合YouTube支持的格式与编码要求。可使用ffmpeg工具检查视频信息:

ffmpeg -i your-video.mp4

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 06:47:17