使用 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教程 | 6小时前 |
- NumPy位异或归约操作全解析
- 259浏览 收藏
-
- 文章 · python教程 | 7小时前 |
- Python遍历读取所有文件技巧
- 327浏览 收藏
-
- 文章 · python教程 | 7小时前 |
- Python中index的作用及使用方法
- 358浏览 收藏
-
- 文章 · python教程 | 7小时前 |
- Python快速访问嵌套字典键值对
- 340浏览 收藏
-
- 文章 · python教程 | 8小时前 |
- Python中ch代表字符的用法解析
- 365浏览 收藏
-
- 文章 · python教程 | 8小时前 |
- NumPy1D近邻查找:向量化优化技巧
- 391浏览 收藏
-
- 文章 · python教程 | 8小时前 | 正则表达式 字符串操作 re模块 Python文本处理 文本清洗
- Python正则表达式实战教程详解
- 392浏览 收藏
-
- 文章 · python教程 | 8小时前 |
- BehaveFixture临时目录管理技巧
- 105浏览 收藏
-
- 文章 · python教程 | 9小时前 | Python 余数 元组 divmod()函数 商
- divmod函数详解与使用技巧
- 442浏览 收藏
-
- 文章 · python教程 | 10小时前 |
- Python多进程共享字符串内存技巧
- 291浏览 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 543次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 516次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 500次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 485次学习
-
- ChatExcel酷表
- ChatExcel酷表是由北京大学团队打造的Excel聊天机器人,用自然语言操控表格,简化数据处理,告别繁琐操作,提升工作效率!适用于学生、上班族及政府人员。
- 3204次使用
-
- Any绘本
- 探索Any绘本(anypicturebook.com/zh),一款开源免费的AI绘本创作工具,基于Google Gemini与Flux AI模型,让您轻松创作个性化绘本。适用于家庭、教育、创作等多种场景,零门槛,高自由度,技术透明,本地可控。
- 3417次使用
-
- 可赞AI
- 可赞AI,AI驱动的办公可视化智能工具,助您轻松实现文本与可视化元素高效转化。无论是智能文档生成、多格式文本解析,还是一键生成专业图表、脑图、知识卡片,可赞AI都能让信息处理更清晰高效。覆盖数据汇报、会议纪要、内容营销等全场景,大幅提升办公效率,降低专业门槛,是您提升工作效率的得力助手。
- 3446次使用
-
- 星月写作
- 星月写作是国内首款聚焦中文网络小说创作的AI辅助工具,解决网文作者从构思到变现的全流程痛点。AI扫榜、专属模板、全链路适配,助力新人快速上手,资深作者效率倍增。
- 4555次使用
-
- MagicLight
- MagicLight.ai是全球首款叙事驱动型AI动画视频创作平台,专注于解决从故事想法到完整动画的全流程痛点。它通过自研AI模型,保障角色、风格、场景高度一致性,让零动画经验者也能高效产出专业级叙事内容。广泛适用于独立创作者、动画工作室、教育机构及企业营销,助您轻松实现创意落地与商业化。
- 3824次使用
-
- 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浏览

