使用PHP调用Google Video Intelligence获取YouTube视频标签时遇参数无效错误
问题:调用Google Video Intelligence获取YouTube视频标签时触发INVALID_ARGUMENT错误
我尝试用PHP调用Google Video Intelligence服务提取YouTube视频的标签,代码如下:
require __DIR__ . '/vendor/autoload.php'; use Google\Cloud\VideoIntelligence\V1\VideoIntelligenceServiceClient; use Google\Cloud\VideoIntelligence\V1\Feature; use Google\Client; $youTubeUrl = "***"; $videoIntelligenceServiceClient = new VideoIntelligenceServiceClient([ 'credentials' => json_decode(file_get_contents('creds.json'), true) ]); $features = [ Feature::LABEL_DETECTION, ]; $operationResponse = $videoIntelligenceServiceClient->annotateVideo([ 'inputUri' => $youTubeUrl, 'features' => $features ]); $operationResponse->pollUntilComplete(); if ($operationResponse->operationSucceeded()) { $results = $operationResponse->getResult(); foreach ($results->getAnnotationResults() as $result) { var_dump($result); } }
运行后返回错误:
Fatal error: Uncaught Google\ApiCore\ApiException: { "message": "Request contains an invalid argument.", "code": 3, "status": "INVALID_ARGUMENT", "details": [] }
原因及解决方法
YouTube播放URL不被支持:Google Video Intelligence的
inputUri参数仅接受两种有效输入:- Google Cloud Storage(GCS)路径,格式为
gs://bucket-name/your-video-file.mp4 - 可直接访问的HTTP/HTTPS视频文件链接(需能直接返回视频二进制内容,而非网页)
YouTube的标准播放URL(如https://www.youtube.com/watch?v=xxx)是网页链接,不是视频文件的直接地址,服务无法解析,这是触发该错误的核心原因。
解决:先下载YouTube视频到本地,上传至GCS后使用GCS路径;或获取视频的直接可访问HTTP链接(需确保链接无防盗链限制)。
- Google Cloud Storage(GCS)路径,格式为
权限配置错误:若使用GCS路径,需确保
creds.json对应的服务账号拥有storage.objects.get权限,且存储桶/文件的访问权限设置正确;若使用HTTP链接,需确认链接能公开访问。
解决:检查GCS存储桶的IAM权限,给服务账号添加对应权限;测试HTTP链接是否能直接在浏览器下载视频文件。视频格式不兼容:Video Intelligence仅支持特定视频格式(如MP4、MOV、AVI等),若视频格式不在支持列表中,也会返回参数无效错误。
解决:确认视频格式符合官方要求,必要时转换格式后再上传。
内容的提问来源于stack exchange,提问作者Allan
相关产品推荐
相关产品推荐

