产品评测
Google Gemini 3 Pro 视频理解能力深度评测
|花叔
GeminiGoogle视频理解多模态AI评测
Google Gemini 3 Pro 视频理解能力深度调研
调研时间:2026-02-08 信息来源:Google AI 官方文档、Google Developers Blog、GitHub python-genai SDK
1. 模型名称与基本信息
当前可用模型 ID
| 模型 | ID | 输入上限 | 输出上限 | 发布日期 |
|---|---|---|---|---|
| Gemini 3 Pro | gemini-3-pro-preview | 1M tokens | 64k tokens | 2025-11-18 |
| Gemini 3 Flash | gemini-3-flash-preview | 1M tokens | 64k tokens | 2025-12-17 |
| Gemini 3 Pro Image | gemini-3-pro-image-preview | 65k tokens | 32k tokens | 2025-11-20 |
注意:当前都还是 preview 状态,模型名不是 gemini-3-pro,而是 gemini-3-pro-preview。
2. 支持的视频格式和大小限制
支持的 MIME 类型
| 格式 | MIME 类型 |
|---|---|
| MP4 | video/mp4 |
| MPEG | video/mpeg |
| MOV | video/mov |
| AVI | video/avi |
| FLV | video/x-flv |
| MPG | video/mpg |
| WebM | video/webm |
| WMV | video/wmv |
| 3GPP | video/3gpp |
大小限制
| 上传方式 | 大小上限 | 适用场景 |
|---|---|---|
| 内联上传(inline) | 20MB(单文件),100MB(请求总大小) | 短视频、快速测试 |
| File API 上传 | 2GB(单文件) | 长视频、大文件 |
| 项目总存储 | 20GB | 所有上传文件的总和 |
视频时长限制
| 分辨率模式 | 最大时长(1M 上下文窗口) |
|---|---|
| 默认分辨率 | 约 1 小时 |
| 低分辨率(media_resolution_low) | 约 3 小时 |
其他限制
- 文件在 File API 中保存 48 小时后自动删除
- Gemini 2.5+ 模型:每个请求最多 10 个视频
- YouTube 视频:免费版每天最多 8 小时,付费版无限制
- File API 本身免费使用
3. 视频分析能力
Gemini 3 Pro 在视频理解方面能做以下事情:
核心能力
| 能力 | 说明 | 示例 Prompt |
|---|---|---|
| 内容摘要 | 总结视频的主要内容 | "Summarize this video in 3 bullet points." |
| 时间戳定位 | 识别关键时刻并标注时间 | "List the key moments with timestamps." |
| 画面描述 | 逐帧/逐场景描述视觉内容 | "Describe the visual scenes in this video." |
| 音频转录 | 转录视频中的语音内容 | "Transcribe the audio from this video." |
| 视觉+音频联合分析 | 同时理解画面和声音 | "Describe both visual and audio events with timestamps." |
| 特定时间点提问 | 对视频某个时间点提问 | "What happens at 01:15?" |
| 视频片段截取分析 | 只分析指定时间范围 | 使用 videoMetadata 的 start_offset 和 end_offset |
| 多视频对比 | 比较多个视频内容 | 一个请求放入多个视频 |
Gemini 3 vs 2.5 视频理解提升
- 跨帧上下文理解:Gemini 3 能理解视频帧之间的上下文关系,不再是逐帧独立分析
- Video-MMMU 基准测试:得分 87.6%,超过竞品
- MMMU-Pro:得分 81%
- 更好的长上下文利用:Gemini 2.5 在处理长上下文时会出现质量下降,Gemini 3 改善了这一点
- 可变长度视频 Token 编码:替代了旧的 Pan and Scan 方法,质量和延迟都更好
- Token 更高效:默认约 300 tokens/秒(之前更高),低分辨率约 100 tokens/秒
4. Token 计费方式
视频 Token 计算
| 分辨率模式 | 每帧 Token | 音频 Token | 总计约 |
|---|---|---|---|
| 默认分辨率 | 258 tokens/帧 | 32 tokens/秒 | 约 300 tokens/秒 |
| 低分辨率 | 66 tokens/帧 | 32 tokens/秒 | 约 100 tokens/秒 |
默认采样率:1 帧/秒(FPS),音频 1Kbps 单声道。
Token 成本估算示例(1 分钟视频):
| 分辨率模式 | Token 数 | Gemini 3 Pro 成本 | Gemini 3 Flash 成本 |
|---|---|---|---|
| 默认 | ~18,000 tokens | ~$0.036 | ~$0.009 |
| 低分辨率 | ~6,000 tokens | ~$0.012 | ~$0.003 |
定价详情
| 模型 | 输入价格(≤200k) | 输出价格(≤200k) | 输入价格(>200k) | 输出价格(>200k) |
|---|---|---|---|---|
| gemini-3-pro-preview | $2.00/1M tokens | $12.00/1M tokens | $4.00/1M tokens | $18.00/1M tokens |
| gemini-3-flash-preview | $0.50/1M tokens | $3.00/1M tokens | - | - |
Gemini 3 Flash 有免费版(Free Tier),输入输出都免费,适合测试。
Batch API 价格减半(Pro: $1.00/$6.00,Flash: $0.25/$1.50)。
5. File API 使用流程
完整流程:上传 → 等待处理 → 分析
import os
import time
from google import genai
from google.genai import types
# 初始化客户端
client = genai.Client(api_key=os.getenv("GOOGLE_API_KEY"))
# ========== 第1步:上传视频 ==========
print("正在上传视频...")
video_file = client.files.upload(file="path/to/video.mp4")
print(f"上传完成:{video_file.name}")
print(f"当前状态:{video_file.state}")
# ========== 第2步:等待处理完成 ==========
# 视频上传后需要服务端处理(转码、提取帧等)
# 必须等到 state 变为 "ACTIVE" 才能使用
while not video_file.state or video_file.state.name != "ACTIVE":
print(f"处理中... 当前状态:{video_file.state}")
time.sleep(5)
video_file = client.files.get(name=video_file.name)
print("视频处理完成,可以开始分析")
# ========== 第3步:分析视频 ==========
response = client.models.generate_content(
model="gemini-3-pro-preview",
contents=[video_file, "请详细描述这个视频的内容,包括关键时间点。"]
)
print(response.text)
File API 管理操作
# 查看文件信息
file_info = client.files.get(name=video_file.name)
print(f"文件名:{file_info.name}")
print(f"大小:{file_info.size_bytes}")
print(f"状态:{file_info.state}")
# 列出所有已上传的文件
for f in client.files.list():
print(f"{f.name} - {f.state}")
# 手动删除文件(不删除则48小时后自动清除)
client.files.delete(name=video_file.name)
6. 完整代码示例
安装依赖
pip install google-genai python-dotenv
.env 配置
GOOGLE_API_KEY=你的API密钥
API 密钥获取地址:https://aistudio.google.com/apikey
示例1:上传并分析本地视频(最完整版本)
"""
Gemini 3 Pro 视频分析完整示例
使用 google-genai SDK
"""
import os
import time
from dotenv import load_dotenv
from google import genai
from google.genai import types
load_dotenv()
# 初始化
client = genai.Client(api_key=os.getenv("GOOGLE_API_KEY"))
MODEL = "gemini-3-pro-preview" # 或 "gemini-3-flash-preview"(更便宜)
def upload_and_wait(file_path: str) -> object:
"""上传视频并等待处理完成"""
print(f"正在上传: {file_path}")
video_file = client.files.upload(file=file_path)
print(f"上传成功: {video_file.name}")
# 轮询等待处理完成
while not video_file.state or video_file.state.name != "ACTIVE":
print(f" 处理中... ({video_file.state})")
time.sleep(5)
video_file = client.files.get(name=video_file.name)
print("处理完成")
return video_file
def analyze_video(video_file, prompt: str) -> str:
"""用指定 prompt 分析视频"""
response = client.models.generate_content(
model=MODEL,
contents=[video_file, prompt]
)
return response.text
# ===== 主流程 =====
if __name__ == "__main__":
video = upload_and_wait("path/to/your_video.mp4")
# 场景1:视频内容摘要
summary = analyze_video(video,
"请用中文总结这个视频的主要内容,分3个要点。"
)
print("=== 内容摘要 ===")
print(summary)
# 场景2:带时间戳的关键事件
events = analyze_video(video,
"列出视频中的关键事件,每个事件标注时间戳(MM:SS格式),用中文描述。"
)
print("\n=== 关键事件 ===")
print(events)
# 场景3:音频转录
transcript = analyze_video(video,
"请转录视频中的所有语音内容,标注时间戳。如果有多个说话人,请区分。"
)
print("\n=== 语音转录 ===")
print(transcript)
# 用完后清理
client.files.delete(name=video.name)
print("\n文件已删除")
示例2:小视频内联上传(<20MB 简易版)
"""适合短视频、快速分析,无需 File API"""
import os
from dotenv import load_dotenv
from google import genai
from google.genai import types
load_dotenv()
client = genai.Client(api_key=os.getenv("GOOGLE_API_KEY"))
# 直接读取视频字节
video_bytes = open("short_clip.mp4", "rb").read()
response = client.models.generate_content(
model="gemini-3-flash-preview",
contents=types.Content(
parts=[
types.Part(
inline_data=types.Blob(
data=video_bytes,
mime_type="video/mp4"
)
),
types.Part(text="这个视频讲了什么?用中文回答。")
]
)
)
print(response.text)
示例3:分析 YouTube 视频(直接用 URL)
"""直接分析 YouTube 视频,无需下载"""
import os
from dotenv import load_dotenv
from google import genai
from google.genai import types
load_dotenv()
client = genai.Client(api_key=os.getenv("GOOGLE_API_KEY"))
response = client.models.generate_content(
model="gemini-3-pro-preview",
contents=types.Content(
parts=[
types.Part(
file_data=types.FileData(
file_uri="https://www.youtube.com/watch?v=VIDEO_ID"
)
),
types.Part(text="请详细分析这个视频的内容、风格和目标受众。用中文回答。")
]
)
)
print(response.text)
示例4:指定视频片段分析(Clipping)
"""只分析视频的指定时间段"""
import os
from dotenv import load_dotenv
from google import genai
from google.genai import types
load_dotenv()
client = genai.Client(api_key=os.getenv("GOOGLE_API_KEY"))
response = client.models.generate_content(
model="gemini-3-pro-preview",
contents=types.Content(
parts=[
types.Part(
file_data=types.FileData(
file_uri="https://www.youtube.com/watch?v=VIDEO_ID"
),
video_metadata=types.VideoMetadata(
start_offset="120s", # 从第2分钟开始
end_offset="300s" # 到第5分钟结束
)
),
types.Part(text="总结这个片段中讨论的核心观点。")
]
)
)
print(response.text)
示例5:自定义帧率 + 低分辨率(省 Token)
"""自定义 FPS 和分辨率,适合长视频降低成本"""
import os
import time
from dotenv import load_dotenv
from google import genai
from google.genai import types
load_dotenv()
client = genai.Client(api_key=os.getenv("GOOGLE_API_KEY"))
# 上传视频
video_file = client.files.upload(file="long_lecture.mp4")
while not video_file.state or video_file.state.name != "ACTIVE":
time.sleep(5)
video_file = client.files.get(name=video_file.name)
# 使用低分辨率 + 自定义 FPS 分析
response = client.models.generate_content(
model="gemini-3-flash-preview",
config=types.GenerateContentConfig(
media_resolution="media_resolution_low" # 低分辨率,约100 tokens/秒
),
contents=types.Content(
parts=[
types.Part(
file_data=types.FileData(file_uri=video_file.uri),
video_metadata=types.VideoMetadata(fps=0.5) # 每2秒1帧,进一步省Token
),
types.Part(text="这是一个长讲座视频,请提取核心知识点,列成大纲。")
]
)
)
print(response.text)
示例6:字幕生成(SRT 格式)
"""让 Gemini 生成 SRT 格式字幕"""
import os
import time
from dotenv import load_dotenv
from google import genai
load_dotenv()
client = genai.Client(api_key=os.getenv("GOOGLE_API_KEY"))
# 上传
video_file = client.files.upload(file="speech_video.mp4")
while not video_file.state or video_file.state.name != "ACTIVE":
time.sleep(5)
video_file = client.files.get(name=video_file.name)
# 生成 SRT 字幕
response = client.models.generate_content(
model="gemini-3-pro-preview",
contents=[
video_file,
"""请转录这个视频中的所有语音,并输出为标准 SRT 字幕格式。
要求:
1. 每条字幕不超过2行,每行不超过40个字符
2. 时间戳精确到秒(HH:MM:SS,mmm 格式)
3. 保留说话人的语气词和停顿
4. 如果有多个说话人,在每条字幕前标注说话人
示例格式:
1
00:00:01,000 --> 00:00:03,500
大家好,欢迎来到今天的分享
2
00:00:04,000 --> 00:00:07,200
今天我们要讨论的主题是AI视频分析
"""
]
)
# 保存为 SRT 文件
with open("output.srt", "w", encoding="utf-8") as f:
f.write(response.text)
print("字幕已保存到 output.srt")
7. 最佳 Prompt 写法
通用原则
- 文本 prompt 放在视频之后:在
contents数组中,视频 Part 在前,文本 Part 在后 - 每个请求只放一个视频:多视频会降低分析质量
- 用 MM:SS 格式提问特定时间点:如
"00:05 处发生了什么?" - 明确输出格式要求:指定 JSON、列表、段落等格式
高效 Prompt 模板
视频摘要
请用3-5个要点总结这个视频的核心内容。每个要点包含时间范围和关键信息。
关键事件+时间戳
列出视频中的所有关键事件,按时间顺序排列。
格式:[MM:SS] 事件描述
重点关注:场景变化、重要对话、关键动作。
视觉+音频联合分析
Describe the key events in this video, providing both audio and visual details.
Include timestamps for salient moments.
用中文输出。
音频转录+视觉描述
Transcribe the audio from this video, giving timestamps for salient events in the video.
Also provide visual descriptions.
请用中文输出转录内容。
对比分析
观看这个视频后,请从以下维度分析:
1. 内容质量(信息密度、论证逻辑)
2. 表达方式(语速、情绪、肢体语言)
3. 制作水平(画面、剪辑、配乐)
4. 目标受众和适用场景
教学视频知识提取
这是一个教学视频,请:
1. 提取所有核心知识点,组织成大纲
2. 标注每个知识点出现的时间位置
3. 总结教学方法和讲解顺序
4. 指出可能存在的知识疏漏或错误
Gemini 3 特有的 Prompt 技巧
media_resolution参数可设为media_resolution_low/media_resolution_medium/media_resolution_highthinking_level参数可设为low(快速)或high(深度推理,默认)- 保持 temperature 为默认值 1.0
- 将约束条件放在 system instruction 开头
8. media_resolution 参数详解
Gemini 3 新增的 media_resolution 参数可以精确控制视觉处理的 Token 分配:
| 级别 | 图片 Token | 视频帧 Token | 适用场景 |
|---|---|---|---|
media_resolution_low | 280 tokens | ~70 tokens | 长视频、成本敏感、大致理解 |
media_resolution_medium | 560 tokens | ~140 tokens | 平衡模式 |
media_resolution_high | 1,120 tokens | ~280 tokens | 需要读取细节文字、小物体识别 |
使用方式:
response = client.models.generate_content(
model="gemini-3-pro-preview",
config=types.GenerateContentConfig(
media_resolution="media_resolution_high" # 高分辨率,看细节
),
contents=[video_file, "读取视频中出现的所有文字内容。"]
)
9. Gemini 3 Pro vs Gemini 2.5 Pro 视频理解对比
| 维度 | Gemini 2.5 Pro | Gemini 3 Pro |
|---|---|---|
| 模型 ID | gemini-2.5-pro | gemini-3-pro-preview |
| Video-MMMU | 较低 | 87.6% |
| MMMU-Pro | 较低 | 81% |
| 视频 Token 编码 | Pan and Scan | 可变序列长度(更高效) |
| 默认 Token/秒 | 较高 | 约 300 tokens/秒 |
| 低分辨率 Token/秒 | - | 约 100 tokens/秒 |
| 跨帧上下文 | 逐帧独立分析 | 理解帧间上下文关系 |
| 长上下文质量 | 长序列下质量下降 | 更好地利用长上下文 |
| media_resolution 控制 | 无 | 支持 low/medium/high |
| 每请求视频数 | 最多10个 | 最多10个 |
| 最大视频时长 | 1小时 | 1小时(默认),3小时(低分辨率) |
| Thinking Level | 不支持 | 支持 low/high |
| 输入价格 | $1.25/1M | $2.00/1M |
核心升级总结:
- Token 编码从 Pan and Scan 变为可变序列长度,延迟更低、质量更好
- 跨帧理解能力大幅提升,不再逐帧独立分析
- 新增
media_resolution参数,可以灵活控制精度与成本 - 长视频分析质量显著改善
10. 实际使用建议
选择模型
| 场景 | 推荐模型 | 理由 |
|---|---|---|
| 测试/原型开发 | gemini-3-flash-preview | 有免费版,速度快 |
| 深度视频分析 | gemini-3-pro-preview | 理解能力最强 |
| 长视频(>30分钟) | Flash + 低分辨率 | 成本可控 |
| 需要读取视频中文字 | Pro + 高分辨率 | 细节识别更好 |
成本优化
- 用
media_resolution_low处理长视频,Token 降到 ~100/秒 - 用自定义 FPS(如 0.5)进一步降低 Token 消耗
- 用
videoMetadata的 start/end offset 只分析需要的片段 - 用 Batch API 价格减半
- 用 Flash 模型替代 Pro(价格为 1/4)
注意事项
- 默认采样 1 FPS,快速动作的视频可能丢失细节,可手动提高 FPS
- File API 文件 48 小时后自动删除,不要把它当存储用
- YouTube URL 只支持公开视频
- 模型当前是 preview 状态,API 可能有变化