Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $YECBGYFECGEAFWHA as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2

Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $BBWFDDBHHYHDXXAB as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2
使用 Gemini Flash 构建视频洞察生成器_创想鸟

使用 Gemini Flash 构建视频洞察生成器

视频理解或视频洞察由于其多方面的优势而在各个行业和应用中至关重要。它们通过自动生成元数据、对内容进行分类并使视频更易于搜索来增强内容分析和管理。此外,视频洞察提供了推动决策、增强用户体验并提高不同行业运营效率的关键数据。

google 的 gemini 1.5 模型为该领域带来了重大进步。除了在语言处理方面令人印象深刻的改进之外,该模型还可以处理多达 100 万个标记的巨大输入上下文。为了进一步增强其功能,gemini 1.5 被训练为多模式模型,可以本地处理文本、图像、音频和视频。各种输入类型和广泛的上下文大小的强大组合为有效处理长视频开辟了新的可能性。

在本文中,我们将深入探讨如何利用 gemini 1.5 生成有价值的视频见解,改变我们跨不同领域理解和利用视频内容的方式。

入门

目录

什么是 gemini 1.5先决条件安装依赖项设置 gemini api 密钥设置环境变量导入库初始化项目保存上传的文件从视频中生成见解将视频上传到文件 api获取文件响应生成删除文件组合各个阶段创建界面创建 streamlit 应用程序

什么是双子座1.5

google 的 gemini 1.5 代表了人工智能性能和效率的重大飞跃。该模型建立在广泛的研究和工程创新的基础上,采用新的专家混合 (moe) 架构,提高了培训和服务效率。 gemini 1.5 pro 和 1.5 flash 现已推出公共预览版,通过 google ai studio 和 vertex ai 提供了令人印象深刻的 100 万个代币上下文窗口。

使用 Gemini Flash 构建视频洞察生成器

google gemini 更新:flash 1.5、gemma 2 和 project astra (blog.google)
1.5 flash 型号是 gemini 系列的最新成员,对于大容量、高频任务来说速度最快且最优化。它专为实现成本效益而设计,在摘要、聊天、图像和视频字幕以及从大量文档和表格中提取数据等应用中表现出色。凭借这些进步,gemini 1.5 为 ai 模型的性能和多功能性树立了新标准。

先决条件

python 3.9+ (https://www.python.org/downloads)谷歌生成ai流线型

安装依赖项

通过执行以下命令创建并激活虚拟环境。

python -m venv venvsource venv/bin/activate #for ubuntuvenv/scripts/activate #for windows

使用 pip 安装 google-generativeai、streamlit、python-dotenv 库。请注意,generativeai 需要 python 3.9+ 版本才能工作。

pip install google-generativeai streamlit python-dotenv

设置 gemini api 密钥

要访问 gemini api 并开始使用其功能,您可以通过注册 google ai studio 来获取免费的 google api 密钥。 google ai studio 由 google 提供,提供了一个用户友好的、基于视觉的界面,用于与 gemini api 进行交互。在 google ai studio 中,您可以通过其直观的 ui 无缝地与生成模型交互,如果需要,还可以生成 api 令牌以增强控制和自定义。

按照以下步骤生成 gemini api 密钥:

要启动此过程,您可以单击链接 (https://aistudio.google.com/app) 以重定向到 google ai studio,或者在 google 上执行快速搜索以找到它。接受服务条款并单击继续。点击侧边栏的获取 api 密钥链接和在新项目中创建 api 密钥按钮来生成密钥。复制生成的 api 密钥。

使用 Gemini Flash 构建视频洞察生成器

设置环境变量

首先为您的项目创建一个新文件夹。选择一个能够反映您项目目的的名称。
在新项目文件夹中,创建一个名为 .env 的文件。该文件将存储您的环境变量,包括您的 gemini api 密钥。
打开 .env 文件并添加以下代码来指定您的 gemini api 密钥:

google_api_key=aizasy......

导入库

要开始您的项目并确保您拥有所有必要的工具,您需要导入几个关键库,如下所示。

import osimport timeimport google.generativeai as genaiimport streamlit as stfrom dotenv import load_dotenv

google.generativeai as genai:导入 google generative ai 库以与 gemini api 交互。streamlit as st:导入 streamlit 用于创建 web 应用程序。from dotenv import load_dotenv:从 .env 文件加载环境变量。

初始化项目

要设置您的项目,您需要配置 api 密钥并为上传的文件创建临时文件存储目录。

通过初始化必要的设置来定义媒体文件夹并配置 gemini api 密钥。将以下代码添加到您的脚本中:

media_folder = 'medias'def __init__():    # create the media directory if it doesn't exist    if not os.path.exists(media_folder):        os.makedirs(media_folder)    # load environment variables from the .env file    load_dotenv()    # retrieve the api key from the environment variables    api_key = os.getenv("gemini_api_key")    # configure the gemini api with your api key    genai.configure(api_key=api_key)

保存上传的文件

要将上传的文件存储在媒体文件夹中并返回其路径,请定义一个名为 save_uploaded_file 的方法并向其中添加以下代码。

def save_uploaded_file(uploaded_file):    """save the uploaded file to the media folder and return the file path."""    file_path = os.path.join(media_folder, uploaded_file.name)    with open(file_path, 'wb') as f:        f.write(uploaded_file.read())    return file_path

从视频中生成见解

从视频中生成见解涉及几个关键阶段,包括上传、处理和生成响应。

1. 将视频上传到files api

gemini api 直接接受视频文件格式。文件 api 支持最大 2gb 的文件,并允许每个项目最大存储 20gb。上传的文件保留 2 天,并且无法从 api 下载。

video_file = genai.upload_file(path=video_path)

2. 获取文件

上传文件后,您可以使用files.get方法验证api是否已成功接收文件。此方法允许您查看上传到文件 api 的文件,这些文件与链接到您的 api 密钥的云项目关联。只有文件名和 uri 是唯一标识符。

import timewhile video_file.state.name == "processing":    print('waiting for video to be processed.')    time.sleep(10)    video_file = genai.get_file(video_file.name)if video_file.state.name == "failed":  raise valueerror(video_file.state.name)

3. 响应生成

视频上传后,您可以发出引用文件 api uri 的generatecontent 请求。

# create the prompt.prompt = "describe the video. provides the insights from the video."# set the model to gemini 1.5 flash.model = genai.generativemodel(model_name="models/gemini-1.5-flash")# make the llm request.print("making llm inference request...")response = model.generate_content([prompt, video_file],                                  request_options={"timeout": 600})print(response.text)

4. 删除文件

文件会在 2 天后自动删除,或者您可以使用 files.delete() 手动删除它们。

genai.delete_file(video_file.name)

5. 结合各个阶段

创建一个名为 get_insights 的方法并向其中添加以下代码。使用 streamlit write() 方法代替 print() 来查看网站上的消息。

def get_insights(video_path):    """extract insights from the video using gemini flash."""    st.write(f"processing video: {video_path}")    st.write(f"uploading file...")    video_file = genai.upload_file(path=video_path)    st.write(f"completed upload: {video_file.uri}")    while video_file.state.name == "processing":        st.write('waiting for video to be processed.')        time.sleep(10)        video_file = genai.get_file(video_file.name)    if video_file.state.name == "failed":        raise valueerror(video_file.state.name)    prompt = "describe the video. provides the insights from the video."    model = genai.generativemodel(model_name="models/gemini-1.5-flash")    st.write("making llm inference request...")    response = model.generate_content([prompt, video_file],                                    request_options={"timeout": 600})    st.write(f'video processing complete')    st.subheader("insights")    st.write(response.text)    genai.delete_file(video_file.name)

创建界面

要简化在 streamlit 应用程序中上传视频和生成见解的过程,您可以创建一个名为 app 的方法。此方法将提供一个上传按钮,显示上传的视频,并从中生成见解。

def app():    st.title("video insights generator")    uploaded_file = st.file_uploader("upload a video file", type=["mp4", "avi", "mov", "mkv"])    if uploaded_file is not none:        file_path = save_uploaded_file(uploaded_file)        st.video(file_path)        get_insights(file_path)        if os.path.exists(file_path):  ## optional: removing uploaded files from the temporary location            os.remove(file_path)

创建 streamlit 应用程序

要创建一个完整且功能齐全的 streamlit 应用程序,允许用户使用 gemini 1.5 flash 模型上传视频并生成见解,请将所有组件合并到一个名为 app.py 的文件中。

这是最终代码:

import osimport timeimport google.generativeai as genaiimport streamlit as stfrom dotenv import load_dotenvmedia_folder = 'medias'def __init__():    if not os.path.exists(media_folder):        os.makedirs(media_folder)    load_dotenv()  ## load all the environment variables    api_key = os.getenv("gemini_api_key")    genai.configure(api_key=api_key)def save_uploaded_file(uploaded_file):    """save the uploaded file to the media folder and return the file path."""    file_path = os.path.join(media_folder, uploaded_file.name)    with open(file_path, 'wb') as f:        f.write(uploaded_file.read())    return file_pathdef get_insights(video_path):    """extract insights from the video using gemini flash."""    st.write(f"processing video: {video_path}")    st.write(f"uploading file...")    video_file = genai.upload_file(path=video_path)    st.write(f"completed upload: {video_file.uri}")    while video_file.state.name == "processing":        st.write('waiting for video to be processed.')        time.sleep(10)        video_file = genai.get_file(video_file.name)    if video_file.state.name == "failed":        raise valueerror(video_file.state.name)    prompt = "describe the video. provides the insights from the video."    model = genai.generativemodel(model_name="models/gemini-1.5-flash")    st.write("making llm inference request...")    response = model.generate_content([prompt, video_file],                                    request_options={"timeout": 600})    st.write(f'video processing complete')    st.subheader("insights")    st.write(response.text)    genai.delete_file(video_file.name)def app():    st.title("video insights generator")    uploaded_file = st.file_uploader("upload a video file", type=["mp4", "avi", "mov", "mkv"])    if uploaded_file is not none:        file_path = save_uploaded_file(uploaded_file)        st.video(file_path)        get_insights(file_path)        if os.path.exists(file_path):  ## optional: removing uploaded files from the temporary location            os.remove(file_path)__init__()app()

运行应用程序

执行以下代码来运行应用程序。

streamlit run app.py

您可以打开控制台中提供的链接来查看输出。

使用 Gemini Flash 构建视频洞察生成器

感谢您阅读这篇文章!!

如果您喜欢这篇文章,请点击心形按钮♥并分享以帮助其他人找到它!

本教程的完整源代码可以在这里找到,

github – codemaker2015/video-insights-generator

以上就是使用 Gemini Flash 构建视频洞察生成器的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1354070.html

赞 (0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
Tkinter界面实时绘制函数图像:如何实现按钮控制电路的断开与闭合并从点击时刻开始绘制?
上一篇 2025年12月13日 18:14:16
Pydantic Logfire 能私有化部署吗?
下一篇 2025年12月13日 18:14:31

相关推荐

  • win11外接显示器检测不到怎么办_win11外接显示器无法识别修复方法

    首先检查连接线和接口是否正常,确保外接显示器被正确识别;接着在显示设置中点击“检测”按钮手动搜索显示器;若无效则更新或重装显卡驱动;再进入BIOS确认外部显示功能已启用,并更新系统固件;最后通过重置显示设置恢复默认配置以解决识别问题。 如果您尝试将外部显示器连接到Windows 11设备,但系统无法…

    2026年9月22日
    000
  • MySQL备份压缩与加密技巧_MySQL提升备份安全与效率

    MySQL备份压缩与加密技巧_MySQL提升备份安全与效率MySQL备份压缩与加密技巧_MySQL提升备份安全与效率MySQL备份压缩与加密技巧_MySQL提升备份安全与效率MySQL备份压缩与加密技巧_MySQL提升备份安全与效率

    mysql备份压缩与加密的核心在于减少存储空间并提升数据安全性。1. 压缩能显著降低存储成本,提升传输效率,加快恢复速度,简化备份管理,并有助于满足合规要求;2. 加密则通过防止未授权访问保障数据安全。实现方式主要有:1. 使用mysqldump结合gzip和gpg/openssl进行逻辑备份、压缩…

    2026年9月22日 • 用户投稿
    100
  • VS Code中Dockerized PHP项目:解决PHP版本冲突的教程

    本教程旨在解决在VS Code中开发Dockerized PHP项目时,VS Code默认识别宿主机PHP版本而非容器内PHP版本的问题。核心解决方案是利用VS Code的Remote – Containers扩展,实现直接在Docker容器内部进行代码开发,从而确保VS Code及其所…

    2026年9月22日
    200
  • 蔡司2亿影像大小王,年度影像旗舰vivo X300系列发布!

    蔡司2亿影像大小王,年度影像旗舰vivo X300系列发布!蔡司2亿影像大小王,年度影像旗舰vivo X300系列发布!蔡司2亿影像大小王,年度影像旗舰vivo X300系列发布!蔡司2亿影像大小王,年度影像旗舰vivo X300系列发布!

    PConline最新资讯,vivo于今晚正式揭晓X300系列新机,定位“全焦段影像旗舰”,起售价为4399元。该系列成为首款搭载联发科天玑9500芯片的智能手机,并携手三星与索尼共同定制多颗影像传感器,在影像能力、屏幕素质及续航表现上力求全面跃升。 产品线涵盖X300与X300 Pro两款机型,价格…

    2026年9月22日 • 用户投稿
    000
  • 从AI场景搭建到蝴蝶号运营,全流程实战攻略

    从AI场景搭建到蝴蝶号运营,全流程实战攻略从AI场景搭建到蝴蝶号运营,全流程实战攻略从AI场景搭建到蝴蝶号运营,全流程实战攻略从AI场景搭建到蝴蝶号运营,全流程实战攻略

    做ai内容变现需先明确方向再选工具,注册蝴蝶号要模拟真实行为,用ai提升效率但需调整内容细节,流量转化重于播放量。一、先确定内容类型和风格,根据方向选择合适ai工具链搭建流程,用免费api测试效果。二、蝴蝶号注册尽量用企业主体,资料完整,养号阶段关注同类账号,保持每天发布1~2条内容,视频控制在30…

    2026年9月22日 • 用户投稿
    100
  • GIMP中如何利用AI裁剪图片?一步步完成高效图像裁剪方法

    GIMP虽无“一键AI裁剪”功能,但可通过智能选择工具(如前景选择、智能剪刀)精准选中主体,结合Resynthesizer插件的内容感知填充实现类AI裁剪效果;对于更高要求,可协同Remove.bg等外部AI工具完成自动抠图,再导入GIMP进行裁剪或背景替换,形成高效智能裁剪工作流。 ☞☞☞AI 智…

    2026年9月22日
    100
  • MySQL字段映射表自动生成方案_Sublime一键导出JSON与结构化模板

    MySQL字段映射表自动生成方案_Sublime一键导出JSON与结构化模板MySQL字段映射表自动生成方案_Sublime一键导出JSON与结构化模板MySQL字段映射表自动生成方案_Sublime一键导出JSON与结构化模板MySQL字段映射表自动生成方案_Sublime一键导出JSON与结构化模板

    如何利用sublime text插件提升mysql字段映射表生成效率?1. 插件通过自动化提取sql语句中的表结构信息,减少手动操作;2. 支持一键导出为json或结构化模板(如markdown、html表格),提升开发效率;3. 利用sublime text的python插件机制,实现快速集成与执…

    2026年9月22日 • 用户投稿
    000
  • 疑似荣耀500系列入网 代号Merry全系支持80W有线快充

    10月25日,知名数码博主“数码闲聊站”透露,荣耀500系列新机已现身工信部,型号分别为mep-an00和mey-an00,预计代号为merry/merryp,全系支持80w有线快充。该博主还表示,此前上手的样机提供了黑色、银色、粉色和蓝色等多种配色方案,外观设计或将延续前代爆款风格。 据最新消息,…

    2026年9月22日
    000
  • VSCode搭建Python开发环境(附详细截图,小白也能学会)

    答案:搭建VSCode Python环境需安装Python并添加至PATH,安装VSCode及Python扩展,创建项目文件并选择正确解释器,通过虚拟环境隔离依赖,利用Pylance、Black、Flake8等工具提升开发效率,常见问题多为路径或环境配置错误,可通过检查解释器选择和安装路径解决。 在…

    2026年9月22日
    100
  • Vision Transformer 必读系列之图像分类综述(三): MLP、ConvMixer 和架构分析

    Vision Transformer 必读系列之图像分类综述(三): MLP、ConvMixer 和架构分析Vision Transformer 必读系列之图像分类综述(三): MLP、ConvMixer 和架构分析Vision Transformer 必读系列之图像分类综述(三): MLP、ConvMixer 和架构分析Vision Transformer 必读系列之图像分类综述(三): MLP、ConvMixer 和架构分析

    号外号外!awesome-vit 上新啦, 欢迎大家 Star Star Star ~ https://github.com/open-mmlab/awesome-vit 前言 在 Vision Transformer 必读系列之图像分类综述(一):概述 一文中对 Vision Transforme…

    2026年9月22日 • 用户投稿
    200
  • 宏碁暗影骑士电脑开机要按F1因未正确识别SSD重新扫描硬盘解决

    宏碁暗影骑士开机提示按F1主因是SSD未被识别,可依次检查硬盘物理连接是否牢固;2. 进入BIOS确认SSD是否显示,若无则可能为硬件问题;3. 若启用Intel VMD技术,需在BIOS中关闭该功能以恢复识别;4. 在磁盘管理中对未初始化或无盘符的SSD进行初始化并分配驱动器号,最终解决识别与使用…

    2026年9月22日
    000
  • 蝴蝶号无人直播完整流程详解:搭建+开播+引流

    蝴蝶号无人直播完整流程详解:搭建+开播+引流蝴蝶号无人直播完整流程详解:搭建+开播+引流蝴蝶号无人直播完整流程详解:搭建+开播+引流蝴蝶号无人直播完整流程详解:搭建+开播+引流

    蝴蝶号无人直播的完整流程包括前期准备、直播搭建、开播设置、引流推广、监控与维护五个步骤。前期准备需完成账号注册认证、硬件设备配置、软件安装及素材准备;直播搭建涉及场景设置、素材导入、循环播放设定及自动化脚本配置;开播设置包括直播间信息填写、推流配置与测试直播;引流推广可通过平台内工具、社交媒体、内容…

    2026年9月22日 • 用户投稿
    100
  • 如何在VEED.io中制作AI视频?在线工具快速剪辑AI内容的步骤

    如何在VEED.io中制作AI视频?在线工具快速剪辑AI内容的步骤如何在VEED.io中制作AI视频?在线工具快速剪辑AI内容的步骤如何在VEED.io中制作AI视频?在线工具快速剪辑AI内容的步骤如何在VEED.io中制作AI视频?在线工具快速剪辑AI内容的步骤

    VEED.io通过“文本转视频”和“AI形象”功能,让视频制作变得简单高效。用户只需输入文本,即可生成带AI配音、字幕和匹配素材的视频,或选择AI虚拟人物进行口型同步播报。平台还提供AI语音合成、自动字幕、多语言支持及丰富编辑功能,便于后期精修。优化效果需从高质量文本入手,合理选择声音与形象,并通过…

    2026年9月22日 • 用户投稿
    000
  • Java中递归处理列表:条件性移除最大值策略与实现

    本教程深入探讨了如何在Java中使用递归方法,根据特定条件(如列表是否已排序、最大值是否位于列表的首尾)来移除列表中的最大值。文章将详细阐述如何设计一个高效的递归算法,包括排序检查、最大值定位以及条件性移除的实现细节,并提供完整的代码示例和注意事项,帮助读者掌握递归在复杂列表操作中的应用。 引言:递…

    2026年9月22日
    000
  • 玩转 Spring Boot 集成篇(定时任务框架Quartz)

    玩转 Spring Boot 集成篇(定时任务框架Quartz)玩转 Spring Boot 集成篇(定时任务框架Quartz)玩转 Spring Boot 集成篇(定时任务框架Quartz)玩转 Spring Boot 集成篇(定时任务框架Quartz)

    在日常项目研发中,定时任务可谓是必不可少的一环,关于 spring boot 如何实现静态定时任务、动态定时任务以及如何开启多线程跑任务,均已在上篇分享过,不再赘述。 虽然 Spring Boot 内置注解方式实现的定时任务,在一定程度上也能解决一定的业务场景问题,但是若做更复杂的动作,例如启停任务…

    2026年9月22日 • 用户投稿
    100
  • Cortana如何连接邮箱_Cortana邮箱同步配置方法

    首先需将邮箱账户与Cortana连接,可通过Windows设置添加账户或在Cortana应用内手动配置,支持Outlook.com、Gmail及Exchange等类型;完成账户添加后,须在隐私权限中启用邮件读取和同步权限,确保Cortana可访问邮件、日历及联系人数据,从而实现智能提醒与信息同步功能…

    2026年9月22日
    000
  • 如何用Sublime导出MySQL数据表结构_生成Markdown或HTML格式文档

    要使用 sublime text 导出 mysql 数据表结构并生成 markdown 或 html 文档,需通过以下步骤操作:1. 使用 show create table 命令或 mysqldump 工具获取建表语句;2. 在 sublime 中整理字段信息,按字段名、类型、是否为空、键、默认值…

    2026年9月22日
    000
  • 三角洲行动S6九格保险任务速通指南

    三角洲行动S6九格保险任务速通指南三角洲行动S6九格保险任务速通指南三角洲行动S6九格保险任务速通指南三角洲行动S6九格保险任务速通指南

    在《三角洲行动》s6赛季中,九格保险任务成了不少玩家头疼的难题,耗时久、节奏慢,稍不注意就被卡住。其实只要掌握策略,合理安排任务顺序,高效推进并非难事!接下来这份分阶段速通攻略,将帮你理清思路,快速通关九格保险任务! 三角洲行动S6赛季九格保险任务高效速通指南 第一阶段:聚焦主线与关键前置 优先完成…

    2026年9月22日 • 用户投稿
    100
  • 解决PHP应用中本地文件更新后网页视图不刷新的缓存问题

    本文探讨了PHP应用中,本地JSON或图片文件更新后,网页视图无法实时刷新的常见问题。核心原因在于浏览器缓存机制。文章将提供多种解决方案,包括强制刷新、隐身模式诊断、以及通过URL参数、服务器配置(.htaccess)和文件版本控制来有效管理缓存,确保用户始终获取最新数据。 理解问题:本地文件更新与…

    2026年9月22日
    200
  • VSCode如何安装和使用插件 VSCode插件管理的高效方法

    安装插件需通过vscode扩展视图搜索并点击安装,部分插件需重启或配置后生效;2. 使用插件时可通过命令面板、上下文菜单、状态栏或自动语言特性调用功能,并在设置中自定义行为;3. 高效管理应定期审视插件使用频率,禁用或卸载不常用者,关注性能影响,利用“开发者: 显示正在运行的扩展”识别资源占用高的插…

    2026年9月22日
    200

发表回复

登录后才能评论
关注微信