产品评测

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 Progemini-3-pro-preview1M tokens64k tokens2025-11-18
Gemini 3 Flashgemini-3-flash-preview1M tokens64k tokens2025-12-17
Gemini 3 Pro Imagegemini-3-pro-image-preview65k tokens32k tokens2025-11-20

注意:当前都还是 preview 状态,模型名不是 gemini-3-pro,而是 gemini-3-pro-preview


2. 支持的视频格式和大小限制

支持的 MIME 类型

格式MIME 类型
MP4video/mp4
MPEGvideo/mpeg
MOVvideo/mov
AVIvideo/avi
FLVvideo/x-flv
MPGvideo/mpg
WebMvideo/webm
WMVvideo/wmv
3GPPvideo/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?"
视频片段截取分析只分析指定时间范围使用 videoMetadatastart_offsetend_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 写法

通用原则

  1. 文本 prompt 放在视频之后:在 contents 数组中,视频 Part 在前,文本 Part 在后
  2. 每个请求只放一个视频:多视频会降低分析质量
  3. 用 MM:SS 格式提问特定时间点:如 "00:05 处发生了什么?"
  4. 明确输出格式要求:指定 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_high
  • thinking_level 参数可设为 low(快速)或 high(深度推理,默认)
  • 保持 temperature 为默认值 1.0
  • 将约束条件放在 system instruction 开头

8. media_resolution 参数详解

Gemini 3 新增的 media_resolution 参数可以精确控制视觉处理的 Token 分配:

级别图片 Token视频帧 Token适用场景
media_resolution_low280 tokens~70 tokens长视频、成本敏感、大致理解
media_resolution_medium560 tokens~140 tokens平衡模式
media_resolution_high1,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 ProGemini 3 Pro
模型 IDgemini-2.5-progemini-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

核心升级总结:

  1. Token 编码从 Pan and Scan 变为可变序列长度,延迟更低、质量更好
  2. 跨帧理解能力大幅提升,不再逐帧独立分析
  3. 新增 media_resolution 参数,可以灵活控制精度与成本
  4. 长视频分析质量显著改善

10. 实际使用建议

选择模型

场景推荐模型理由
测试/原型开发gemini-3-flash-preview有免费版,速度快
深度视频分析gemini-3-pro-preview理解能力最强
长视频(>30分钟)Flash + 低分辨率成本可控
需要读取视频中文字Pro + 高分辨率细节识别更好

成本优化

  1. media_resolution_low 处理长视频,Token 降到 ~100/秒
  2. 用自定义 FPS(如 0.5)进一步降低 Token 消耗
  3. videoMetadata 的 start/end offset 只分析需要的片段
  4. 用 Batch API 价格减半
  5. 用 Flash 模型替代 Pro(价格为 1/4)

注意事项

  • 默认采样 1 FPS,快速动作的视频可能丢失细节,可手动提高 FPS
  • File API 文件 48 小时后自动删除,不要把它当存储用
  • YouTube URL 只支持公开视频
  • 模型当前是 preview 状态,API 可能有变化

参考来源

花叔

花叔|AI进化论-花生

AI Native Coder / 独立开发者 / AI自媒体博主

小猫补光灯作者,《一本书玩转DeepSeek》作者

相关报告

小猫补光灯

小猫补光灯小助理

在线

你好呀~我是小猫补光灯小助理🐱✨ 有什么可以帮助你的吗?

04:41