使用 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 万个代币上下文窗口。
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 venv source venv/bin/activate #for ubuntu venv/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 密钥。
设置环境变量
首先为您的项目创建一个新文件夹。选择一个能够反映您项目目的的名称。
在新项目文件夹中,创建一个名为 .env 的文件。该文件将存储您的环境变量,包括您的 gemini api 密钥。
打开 .env 文件并添加以下代码来指定您的 gemini api 密钥:
google_api_key=aizasy......
导入库
要开始您的项目并确保您拥有所有必要的工具,您需要导入几个关键库,如下所示。
import os import time import google.generativeai as genai import streamlit as st from 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 time while 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 os import time import google.generativeai as genai import streamlit as st from dotenv import load_dotenv media_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_path 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) 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
您可以打开控制台中提供的链接来查看输出。
感谢您阅读这篇文章!!
如果您喜欢这篇文章,请点击心形按钮♥并分享以帮助其他人找到它!
本教程的完整源代码可以在这里找到,
github - codemaker2015/video-insights-generator
今天关于《使用 Gemini Flash 构建视频洞察生成器》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

- 上一篇
- 平板电脑网页往下拖不了?

- 下一篇
- 我国大中型固定翼灭火机“新舟”60 完成首次靠前驻防训练
-
- 文章 · python教程 | 7小时前 |
- Python分块读取大CSV技巧
- 204浏览 收藏
-
- 文章 · python教程 | 7小时前 | 可维护性 可读性 命名规范 PEP8 Python函数命名
- Python函数命名规范与技巧分享
- 316浏览 收藏
-
- 文章 · python教程 | 7小时前 |
- Python操作ODT文档,odfpy库教程详解
- 339浏览 收藏
-
- 文章 · python教程 | 7小时前 |
- Python语音识别实战:SpeechRecognition库使用教程
- 139浏览 收藏
-
- 文章 · python教程 | 7小时前 |
- PyCharm字体设置教程及大小调整方法
- 244浏览 收藏
-
- 文章 · python教程 | 7小时前 | Python版本 版本检测 sys模块 check_python_version 环境检查
- Python版本检测方法及使用教程
- 217浏览 收藏
-
- 文章 · python教程 | 7小时前 |
- Python滚动标准差计算数据波动率
- 100浏览 收藏
-
- 文章 · python教程 | 8小时前 |
- NumPy条件替换与连续值处理技巧
- 123浏览 收藏
-
- 文章 · python教程 | 8小时前 |
- Python数据归一化技巧全解析
- 300浏览 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 542次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 511次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 498次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 484次学习
-
- 千音漫语
- 千音漫语,北京熠声科技倾力打造的智能声音创作助手,提供AI配音、音视频翻译、语音识别、声音克隆等强大功能,助力有声书制作、视频创作、教育培训等领域,官网:https://qianyin123.com
- 151次使用
-
- MiniWork
- MiniWork是一款智能高效的AI工具平台,专为提升工作与学习效率而设计。整合文本处理、图像生成、营销策划及运营管理等多元AI工具,提供精准智能解决方案,让复杂工作简单高效。
- 143次使用
-
- NoCode
- NoCode (nocode.cn)是领先的无代码开发平台,通过拖放、AI对话等简单操作,助您快速创建各类应用、网站与管理系统。无需编程知识,轻松实现个人生活、商业经营、企业管理多场景需求,大幅降低开发门槛,高效低成本。
- 158次使用
-
- 达医智影
- 达医智影,阿里巴巴达摩院医疗AI创新力作。全球率先利用平扫CT实现“一扫多筛”,仅一次CT扫描即可高效识别多种癌症、急症及慢病,为疾病早期发现提供智能、精准的AI影像早筛解决方案。
- 152次使用
-
- 智慧芽Eureka
- 智慧芽Eureka,专为技术创新打造的AI Agent平台。深度理解专利、研发、生物医药、材料、科创等复杂场景,通过专家级AI Agent精准执行任务,智能化工作流解放70%生产力,让您专注核心创新。
- 160次使用
-
- Flask框架安装技巧:让你的开发更高效
- 2024-01-03 501浏览
-
- Django框架中的并发处理技巧
- 2024-01-22 501浏览
-
- 提升Python包下载速度的方法——正确配置pip的国内源
- 2024-01-17 501浏览
-
- Python与C++:哪个编程语言更适合初学者?
- 2024-03-25 501浏览
-
- 品牌建设技巧
- 2024-04-06 501浏览