1概述

通过 Gemini API 的 generateContent 接口,可以将视频文件以 base64 编码的方式内联传递,让模型分析视频内容。

2前置条件

  • 有效的 API Key

  • 视频文件(支持 mp4、avi、mov 等格式)

  • 支持 base64 编码的终端环境(Linux/macOS/Git Bash)

3完整操作步骤

第一步:将视频文件转为 base64 并生成 JSON 请求体
# 将视频文件转为 base64(-w 0 表示不换行,输出为一整行)
VIDEO_B64=$(base64 -w 0 /path/to/your/video.mp4)

# 用 base64 数据构造 JSON 请求体,保存到临时文件
cat > /tmp/gemini_video_req.json << JSONEOF
{
  "contents": [
    {
      "role": "user",
      "parts": [
        {
          "inline_data": {
            "mime_type": "video/mp4",
            "data": "$VIDEO_B64"
          }
        },
        {
          "text": "请详细分析这个视频的内容,描述你看到的画面、角色、场景和整体风格。"
        }
      ]
    }
  ]
}
JSONEOF
第二步:发送请求
curl -X POST "https://www.moyu.info/v1beta/models/gemini-3-pro-preview:generateContent" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d @/tmp/gemini_video_req.json
第三步:查看返回结果

成功响应示例(已简化):

{
  "candidates": [
    {
      "content": {
        "parts": [
          {
            "text": "这段视频展现了一个充满田园诗意和治愈感的动画场景..."
          }
        ],
        "role": "model"
      },
      "finishReason": "STOP"
    }
  ],
  "usageMetadata": {
    "promptTokenCount": 911,
    "candidatesTokenCount": 634,
    "totalTokenCount": 2682,
    "promptTokensDetails": [
      { "modality": "VIDEO", "tokenCount": 640 },
      { "modality": "AUDIO", "tokenCount": 252 },
      { "modality": "TEXT", "tokenCount": 19 }
    ]
  }
}

4参数说明

参数

说明

inline_data.mime_type

文件 MIME 类型,视频用 video/mp4,图片用 image/jpegimage/png

inline_data.data

文件的 base64 编码字符串(不换行)

text

发送给模型的提示词,描述你希望模型做什么

5支持的视频格式

格式

MIME 类型

MP4

video/mp4

AVI

video/avi

MOV

video/quicktime

WebM

video/webm

MKV

video/x-matroska

FLV

video/x-flv

6注意事项

1. 文件大小:base64 编码后体积约为原文件的 1.33 倍,例如 12.6MB 的视频编码后 JSON 约 17MB

2. 超时设置:视频文件较大时,请求耗时较长,建议 curl 加上 `--max-time 300` 参数

3. Token 消耗:视频会被拆分为视频帧和音频两部分计算 token,一段短视频通常消耗数百到数千 token

4. 模型选择:需要使用支持多模态的 Gemini 模型(如 `gemini-3-pro-preview`)

更多推荐