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

Laravel 9集成Google API PHP客户端上传YouTube视频报错排查

Laravel 9 + Google API PHP客户端 YouTube上传问题排查与解决

第一个错误:分块大小不符合要求

错误提示明确指出,YouTube可恢复上传的分块(最后一块除外)必须≥262144字节(即256KB),你的代码生成的块仅16098字节,完全不满足要求。解决步骤:

  • 初始化MediaFileUpload时指定标准分块大小:
$chunkSizeBytes = 262144; // 256KB
$media = new Google\Service\YouTube\MediaFileUpload(
    $client,
    $insertRequest,
    'video/mp4', // 精确MIME类型
    null,
    true, // 开启可恢复上传
    $chunkSizeBytes
);
  • 确保分块读取逻辑严格按照设定的字节数读取,例如用fread($fileHandle, $chunkSizeBytes)替代小尺寸读取。

第二个错误:Multipart上传失败(HTTP 200但未创建视频)

问题集中在三个核心点:

  1. 文件路径错误:url('storage/images/rain.mp4')生成的是HTTP链接,file_get_contents远程读取本地文件会引发权限或性能问题,必须改用本地磁盘路径:
// 示例:storage/app/public下的文件路径
$filePath = storage_path('app/public/images/rain.mp4');
  1. MIME类型不精确:video/*属于泛型类型,YouTube要求精确匹配视频格式,比如MP4文件需指定video/mp4。
  2. Multipart上传参数用法错误:正确的multipart上传应通过MediaFileUpload处理文件内容,而非直接将内容塞入data参数。示例代码:
$video = new Google\Service\YouTube\Video();
$video->setSnippet($yourSnippetConfig);
$video->setStatus($yourStatusConfig);

$media = new Google\Http\MediaFileUpload(
    $client,
    $youtube->videos->insert("status,snippet", $video),
    'video/mp4',
    file_get_contents($filePath),
    false, // 关闭可恢复上传,启用multipart
    false
);

$uploadStatus = $media->upload();

额外注意事项

  • 确认OAuth授权已申请https://www.googleapis.com/auth/youtube.upload权限,无此权限无法完成上传。
  • 调整PHP配置:根据视频大小修改php.ini中的upload_max_filesize、post_max_size、max_execution_time参数,避免超时或内存不足。
  • 大文件优先使用可恢复上传(resumable),小文件再考虑multipart上传,两种上传类型的初始化逻辑需严格区分。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 03:50:21