如何向Gemini AI API 1.5 Pro上传大视频并复用进行推理?
Gemini 1.5 Pro 大视频单次上传多次推理方案
核心实现逻辑
Gemini 1.5 Pro支持通过**Google Cloud Storage (GCS)**存储视频,后续推理直接引用GCS文件URI即可,无需重复上传,和GPT-4o的image_url复用逻辑一致。只需将视频上传至GCS一次,所有后续推理请求都可以通过该URI调用视频资源。
前置准备
- 已创建Google Cloud项目并启用Gemini API(支持Gemini REST API或Vertex AI两种调用方式)
- 将700MB以内、时长1小时内的视频上传至GCS,可选择设置文件权限为公开可读(简易场景),或通过服务账号授予API读取权限(企业级安全场景)
API端点与必填参数
1. Gemini REST API(快速测试场景)
- 端点:
https://generativelanguage.googleapis.com/v1/models/gemini-1.5-pro-latest:generateContent?key=YOUR_API_KEY - 必填参数:
key:个人Gemini API密钥- 请求体
contents数组中,parts需包含file_data字段,其中file_uri为GCS路径(格式:gs://bucket-name/video-file.mp4),mime_type设为video/mp4 - 可选
generationConfig配置推理参数(如温度、最大输出token数)
2. Vertex AI API(企业级场景)
- 端点:
https://REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/publishers/google/models/gemini-1.5-pro:predict - 必填参数:
- 通过OAuth2服务账号密钥完成身份认证
- 请求体
instances中的content需包含GCS URI引用的视频资源 - 可选
parameters配置推理参数
代码示例
Python(Gemini REST API)
import requests API_KEY = "你的Gemini API密钥" GCS_VIDEO_URI = "gs://你的存储桶名称/目标视频文件.mp4" ENDPOINT = f"https://generativelanguage.googleapis.com/v1/models/gemini-1.5-pro-latest:generateContent?key={API_KEY}" # 第一次推理:视频内容总结 prompt_1 = "请分点总结这个视频的核心内容" payload_1 = { "contents": [ { "parts": [ {"text": prompt_1}, {"file_data": {"file_uri": GCS_VIDEO_URI, "mime_type": "video/mp4"}} ] } ], "generationConfig": { "temperature": 0.2, "maxOutputTokens": 1024 } } response_1 = requests.post(ENDPOINT, json=payload_1) print("第一次推理结果:", response_1.json()) # 第二次推理:无需重新上传,直接复用URI prompt_2 = "提取视频中出现的所有人物姓名及对应角色" payload_2 = { "contents": [ { "parts": [ {"text": prompt_2}, {"file_data": {"file_uri": GCS_VIDEO_URI, "mime_type": "video/mp4"}} ] } ] } response_2 = requests.post(ENDPOINT, json=payload_2) print("第二次推理结果:", response_2.json())
Python(Vertex AI SDK)
from vertexai.generative_models import GenerativeModel, Part # 初始化模型 model = GenerativeModel("gemini-1.5-pro") # 引用GCS中的视频资源 video_part = Part.from_uri("gs://你的存储桶名称/目标视频文件.mp4", mime_type="video/mp4") # 第一次推理:分析关键事件时间线 response_1 = model.generate_content([video_part, "请梳理视频中的关键事件时间线"]) print("第一次推理结果:", response_1.text) # 第二次推理:提取产品展示片段 response_2 = model.generate_content([video_part, "找出视频中所有产品展示片段,描述每个片段的核心内容"]) print("第二次推理结果:", response_2.text)
最佳实践
- 权限安全:优先使用服务账号授权GCS文件访问权限,避免设置公开可读
- 视频优化:若视频时长接近1小时限制,可裁剪无关片段,减少推理资源消耗
- 会话复用:多轮对话式推理可使用
chat接口,在会话中保持视频引用,无需重复传入URI - 错误处理:添加重试机制,处理API调用超时、权限验证失败等异常情况
内容的提问来源于stack exchange,提问作者RukshanJS
相关产品推荐
相关产品推荐

