Skip to content

Gemini 网络视频分析

📋 概述

该 API 允许用户通过视频的网络地址(fileUri)传输视频并获取 AI 生成的详细分析结果,无需将视频下载到本地,适合分析已经托管在网络上的视频文件。

🌐 请求地址

服务类型接口地址说明
视频分析https://www.dmxapi.cn/v1betaREST API
https://www.dmxapi.cn/v1beta/models/{model}:generateContent

💻 Python 示例代码

python
"""
╔══════════════════════════════════════════════════════════════════════════════╗
║                   Gemini 视频分析 - REST API 方式(网络视频)                    ║
╠══════════════════════════════════════════════════════════════════════════════╣
║  功能说明:调用 Gemini 模型分析网络视频(通过 fileUri 传入视频地址)              ║
║  API 提供商:DMXAPI                                                           ║
║  模型版本:gemini-3.5-flash-ssvip                                             ║
╚══════════════════════════════════════════════════════════════════════════════╝
"""
import requests
import json

# ═══════════════════════════════════════════════════════════════════════════════
# 📋 配置参数
# ═══════════════════════════════════════════════════════════════════════════════
API_KEY = "sk-**************************************************"          # DMXAPI 访问令牌
BASE_URL = "https://www.dmxapi.cn/v1beta"                               # API 基础地址
MODEL = "gemini-3.5-flash-ssvip"                                        # Gemini 模型版本
VIDEO_URL = "https://doc.dmxapi.cn/0_fenxiang/aa.mp4"                   # 待分析视频 URL(网络地址)
PROMPT = "分析视频内容"                                            # 分析提示词


# ═══════════════════════════════════════════════════════════════════════════════
# 🔧 工具函数
# ═══════════════════════════════════════════════════════════════════════════════
def analyze_video(video_url, prompt=PROMPT):
    """
    调用 Gemini API 分析网络视频内容

    参数:
        video_url (str): 视频的网络地址(fileUri)
        prompt (str): 分析提示词,默认为 PROMPT

    返回:
        dict: API 返回的 JSON 响应,包含分析结果

    异常:
        requests.exceptions.RequestException: API 请求失败时抛出
    """
    # 构建完整的 API 端点 URL
    api_url = f"{BASE_URL}/models/{MODEL}:generateContent"

    # 设置请求头(使用 Token 认证)
    headers = {
        "Authorization": f"{API_KEY}",
        "Content-Type": "application/json"
    }

    # 构建请求负载(符合 Gemini API 规范,使用 fileData 引用网络视频,无需下载到本地)
    payload = {
        "contents": [
            {
                "role": "user",
                "parts": [
                    {
                        "fileData": {
                            "mimeType": "video/mp4",
                            "fileUri": video_url
                        }
                    },
                    {"text": prompt}
                ]
            }
        ]
    }

    # 发送 POST 请求并返回结果
    response = requests.post(api_url, headers=headers, data=json.dumps(payload), timeout=60)
    response.raise_for_status()
    return response.json()


# ═══════════════════════════════════════════════════════════════════════════════
# 🚀 主程序入口
# ═══════════════════════════════════════════════════════════════════════════════
if __name__ == "__main__":
    try:
        print(f"🎬 正在分析视频: {VIDEO_URL}\n")

        # ────────────────────────────────────────────────────────────────────────
        # 步骤 1: 调用 Gemini API 进行视频分析
        # ────────────────────────────────────────────────────────────────────────
        print("[1/1] 🔄 正在分析...\n")
        result = analyze_video(VIDEO_URL, prompt=PROMPT)

        # ────────────────────────────────────────────────────────────────────────
        # 输出分析结果
        # ────────────────────────────────────────────────────────────────────────
        print("╔" + "═" * 68 + "╗")
        print("║" + " " * 24 + "📊 分析结果" + " " * 32 + "║")
        print("╠" + "═" * 68 + "╣")

        if 'candidates' in result and result['candidates']:
            # 提取并输出 AI 生成的文本内容
            for part in result['candidates'][0].get('content', {}).get('parts', []):
                if 'text' in part:
                    # 格式化输出文本(按行拆分,避免破坏边框排版)
                    text_lines = part['text'].split('\n')
                    for line in text_lines:
                        print(f"║ {line}")
        else:
            print(f"║ ⚠️  未获取到结果: {result}")

        print("╚" + "═" * 68 + "╝")

    except requests.exceptions.RequestException as e:
        print(f"\n❌ 网络请求失败: {e}")
        if hasattr(e, 'response') and e.response is not None:
            print(f"   状态码  : {e.response.status_code}")
            print(f"   响应内容: {e.response.text}")
    except Exception as e:
        print(f"\n❌ 错误: {e}")

📤 返回示例

成功响应

json
🎬 正在分析视频: https://doc.dmxapi.cn/0_fenxiang/aa.mp4

[1/1] 🔄 正在分析...

╔════════════════════════════════════════════════════════════════════╗
║                        📊 分析结果                                ║
╠════════════════════════════════════════════════════════════════════╣
║ 这段视频是一段结合了**漫威《复仇者联盟4:终局之战》**主题与AI生成视觉效果的创意宣传短片。视频的核心目的是为了引出或推广一个名为"DMXAPI"的概念或品牌。

║ 以下是对视频内容的详细分析:

║ ### 1. 结构与画面解析

║ *   **00:00 - 00:01(引入):**
║     *   **画面:** 经典的《复仇者联盟4:终局之战》中文官方海报,上方写有"逆转无限""不惜一切代价"
║     *   **作用:** 快速唤起观众对漫威史诗级终局之战的记忆,奠定紧张、壮烈的基调。
║ *   **00:01 - 00:02(美队与黑寡妇):**
║     *   **画面:** AI生成的超写实风格画面。美国队长(身穿经典战衣)与黑寡妇(手扶美队盾牌)并肩站立,背景是璀璨的星空。
║     *   **配音:** 男声(代表美队):"我们准备好了,为了正义。"
║ *   **00:03 - 00:04(雷神):**
║     *   **画面:** 雷神索尔的写实特写。他眼神坚毅,身旁闪烁着雷电,手握暴风战斧(或类似神器的局部)。
║     *   **配音:** 男声(代表雷神):"风暴即将来临。"
║ *   **00:05 - 00:06(黑寡妇特写):**
║     *   **画面:** 黑寡妇娜塔莎的脸部特写。她的太阳穴附近戴着发光的红色科技耳麦,神情严肃。
║     *   **配音:** 女声(代表黑寡妇):"没有退路。"
║ *   **00:07 - 00:09(高潮与品牌呈现):**
║     *   **画面:** 画面回到了类似原版海报的群像构图,但上方出现了巨大的发光蓝色艺术字——"DMXAPI",背景带有传送门或时空通道的特效。
║     *   **配音:** 浑厚的男声:"启动协议,DMXAPI。"

║ ### 2. 视觉与艺术风格
║ *   **AI生成艺术(AI Art):** 视频中间部分的三个角色镜头采用了高质量的AI写实风格,角色面部细节丰富,既保留了原片演员的特征,又融入了更具科技感和未来感的画风。
║ *   **色彩调性:** 整体采用冷色调(蓝色、紫色、星空色),并用红色作为点缀,营造出神秘、科幻且紧迫的氛围。

║ ### 3. 主旨与传播意图
║ 这段视频采用了"借势营销""同人创作"的手法。它通过复仇者们面对终极危机时视死如归的誓言,将这种拯救世界的使命感,嫁接到最后出现的"DMXAPI"上。
╚════════════════════════════════════════════════════════════════════╝

⚙️ 参数说明

参数类型说明
MODELstringGemini 模型版本,如 gemini-3.5-flash-ssvip
VIDEO_URLstring视频的网络地址,通过 fileData.fileUri 传入
mimeTypestring视频的 MIME 类型,如 video/mp4
PROMPTstring分析提示词,用于指定分析任务

⚠️ 注意事项

  • 网络视频方式通过 fileData.fileUri 直接引用视频地址,无需将视频下载并 base64 编码,适合体积较大的视频
  • 请确保 VIDEO_URL 为可公开访问的直链地址,且与 mimeType 一致
  • 请妥善保管您的 API 密钥,不要将其暴露在公开代码中
  • API 请求需要稳定的网络连接,视频较大时建议适当调大 timeout
  • 建议在生产环境中添加重试机制和错误处理

© 2025 DMXAPI Gemini 网络视频分析

一个 Key 用全球大模型