You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flask应用中Google GenerativeAI无法加载视频文件的问题排查

解决Gemini API处理视频时的"File not in ACTIVE state"错误

在Flask应用中使用Gemini 1.5 Flash处理上传的视频文件时,出现google.api_core.exceptions.FailedPrecondition: 400 The File xxx is not in an ACTIVE state and usage is not allowed错误,但图片文件处理正常,且相同逻辑在Jupyter Notebook中可以正常运行。

核心原因

视频文件体积通常远大于图片,上传到Google Gemini服务器后,需要额外的转码、预处理流程才能完成就绪(进入ACTIVE状态)。Flask中同步执行的代码会在上传完成后立刻调用generate_content,此时服务器还未完成视频处理;而Jupyter Notebook的交互式环境中,上传到调用之间的人工操作间隔足够服务器完成预处理,因此不会触发错误。

具体解决方案

1. 轮询等待文件状态变为ACTIVE

上传视频后,循环检查文件状态,直到其变为ACTIVE再调用生成内容接口:

genai.configure(api_key=os.environ["GEMINI_API_KEY"])
model = genai.GenerativeModel('gemini-1.5-flash') 

gen_file = genai.upload_file(path=file_path)

# 等待视频文件处理完成
import time
max_wait_time = 60  # 设置最大等待时间(秒),避免无限循环
start_time = time.time()

while gen_file.state.name != "ACTIVE":
    if time.time() - start_time > max_wait_time:
        raise TimeoutError("视频文件处理超时,请尝试上传更小的文件")
    time.sleep(2)  # 每2秒检查一次状态
    gen_file = genai.get_file(gen_file.name)

# 文件就绪后调用生成接口
response = model.generate_content([llm_prompt, gen_file]).text

2. 确保本地视频文件完全写入

在上传到Gemini之前,确认本地视频文件已经完全保存完毕:

  • 如果是从URL下载文件到本地,确保下载流已经关闭,文件写入完成
  • 可以通过检查文件大小是否稳定来验证:
import os
import time

# 等待文件大小稳定
def wait_for_file_ready(file_path, check_interval=1, max_wait=10):
    prev_size = -1
    start_time = time.time()
    while time.time() - start_time < max_wait:
        current_size = os.path.getsize(file_path)
        if current_size == prev_size:
            return True
        prev_size = current_size
        time.sleep(check_interval)
    return False

# 在上传前调用
if not wait_for_file_ready(file_path):
    raise Exception("本地视频文件未完全写入")

gen_file = genai.upload_file(path=file_path)

3. 检查文件兼容性

确认上传的视频文件符合Gemini API的要求:

  • 支持的视频格式:MP4、MOV等常见格式
  • 文件大小限制:Gemini 1.5 Flash支持最大2小时的视频,文件大小不超过10GB
  • 如果视频格式不兼容,先转换为支持的格式再上传

内容的提问来源于stack exchange,提问作者Shubhankar Agrawal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 21:35:00