选择模型
视频输入只有 Gemini 模型支持,GPT-6、GPT-5.6 等 OpenAI 模型不接受视频。以下模型都在default 分组按量计费:
准备密钥和 SDK
在令牌管理创建 API Key,计费模式选择按量优先(推荐)或按量计费,然后写入环境变量。Python 示例使用 Google Gen AI SDK:/upload/v1beta/files),SDK 的 client.files.upload() 不可用。本地视频按下文用 inlineData 放进请求,已有公网地址的视频用 fileData 传链接。
快速开始:上传本地视频
以下示例读取当前目录中的input.mp4,让模型按时间顺序描述画面并转写语音:
- Python SDK
- cURL
candidates[].content.parts 的 text 中,SDK 用 response.text 读取。
使用内联视频时注意:
mimeType写文件的实际类型,MP4 为video/mp4;data只放 Base64 字符串,不带data:前缀。- Base64 编码后请求体约为原文件的 4/3,视频越大上传越久,超时时间要留足。
- 大文件或已经托管在公网的视频,改用视频链接可以省去上传。
client,本地视频统一为 input.mp4。
案例:按时间戳拆分章节
在提示词里写明时间格式和每章要包含的字段,模型会结合画面切换和语音内容划分章节:案例:输出结构化 JSON
要把结果写入数据库或字幕系统,在config 中指定 response_mime_type 和 response_schema,模型会返回符合结构的 JSON,SDK 用 response.parsed 得到对象:
generationConfig:
案例:只分析其中一段
用videoMetadata 的 startOffset 和 endOffset 截取片段,模型只处理这一段,用量按片段时长计算。长视频里只关心某几分钟时,这比上传整段更省:
videoMetadata 与 inlineData 或 fileData 写在同一个 part 里:
分析视频链接
视频已有公网地址时,用fileData 传链接,由服务端下载,省去 Base64 上传。以下示例分析一个公开 YouTube 视频的前 60 秒:
- Python SDK
- cURL
- 可以是公开的 YouTube 视频,也可以是 MP4 直链。
- 必须无需登录、Cookie 或签名即可下载,服务端拉取失败时返回 400
Cannot fetch content from the provided URL。 - 私有存储中的视频,先生成可公开访问的临时链接,或下载后用
inlineData上传。
案例:一次对比多个视频
在同一条消息里依次放入多个视频 part,并在提示词中说明顺序:控制抽帧率和用量
模型默认每秒抽取 1 帧画面,音轨完整处理。用videoMetadata.fps 可以调整抽帧率:
- 画面变化慢的视频,例如讲座、录屏,设为
0.5等更低的值,画面 token 大约按比例减少。 - 动作快、需要捕捉短暂画面的视频,设为
2等更高的值,画面 token 大约按比例增加。 - 音频 token 不受
fps影响。
fps 可以与 startOffset、endOffset 写在同一个 videoMetadata 中。
流式输出
长视频的回答较长时,可以边生成边显示。SDK 用generate_content_stream,REST 把方法换成 streamGenerateContent 并加上 ?alt=sse:
is not a valid FinishReason 警告,不影响输出内容。
用 OpenAI SDK 调用
已经基于 OpenAI SDK 开发的应用,可以在 Chat Completions 中用video_url 内容块传视频,只接受 Base64 data URL:
- 需要
pip install openai,model只能用 Gemini 模型。 video_url里传公网链接,或用file内容块传视频,视频会被忽略,模型可能在没看到视频的情况下作答。- 不支持视频链接、片段截取和
fps;需要这些功能时使用原生接口。 - 响应
usage中的video_tokens大于 0,说明视频已被读取。
读取用量与计费
原生接口的usageMetadata.promptTokensDetails 分别列出画面与音轨的 token:
fps,或换用单价更低的模型。每次请求的实际费用以调用日志为准。
错误处理
常见问题
可以直接上传完整 MP4 吗?
可以。把整个 MP4 编码为 Base64 放进inlineData,模型会同时理解画面时序和音轨,不需要预先抽帧转图片。视频已有公网地址时,用 fileData 传链接更省上传时间。
哪些模型支持视频理解?
以下模型都支持:gemini-3.8-flash、gemini-3.7-flashgemini-3.5-flash-litegemini-3.1-pro-preview、gemini-2.5-pro
VIDEO。
模型能听到视频里的声音吗?
能。音轨会和画面一起处理,可以转写对白、总结解说,也能回答「这段画面出现时说了什么」这类需要音画对齐的问题。用量中的AUDIO 就是音轨占用的 token。
时间戳准确吗?
章节顺序和内容可靠,但各模型标注的起止时间都可能与实际切换点相差约 1 秒。需要逐秒核对时:- 用
startOffset和endOffset截取相关片段再问一次; - 提高
fps,让模型看到更密的画面; - 用
whisper-1生成带时间戳的字幕,按语音时间核对,见生成字幕和时间戳。
视频有大小或时长限制吗?
内联视频会让请求体增大约三分之一,文件越大上传越慢、越容易超时。大文件建议用fileData 传公网链接,长视频可以用 startOffset、endOffset 分段处理。
支持 Google File API 吗?
不支持,以下写法都不可用:/upload/v1beta/files上传接口;files/...形式的文件引用;- SDK 的
client.files.upload()。
inlineData,公网视频用 fileData。