0

0

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

DDD

DDD

发布时间:2024-11-19 13:03:01

|

805人浏览过

|

来源于dev.to

转载

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

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 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 密钥。

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

设置环境变量

首先为您的项目创建一个新文件夹。选择一个能够反映您项目目的的名称。
在新项目文件夹中,创建一个名为 .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 是唯一标识符。

GitHub Copilot
GitHub Copilot

GitHub AI编程工具,实时编程建议

下载
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

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

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

感谢您阅读这篇文章!!

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

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

github - codemaker2015/video-insights-generator

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
pip安装使用方法
pip安装使用方法

安装步骤:1、确保Python已经正确安装在您的计算机上;2、下载“get-pip.py”脚本;3、按下Win + R键,然后输入cmd并按下Enter键来打开命令行窗口;4、在命令行窗口中,使用cd命令切换到“get-pip.py”所在的目录;5、执行安装命令;6、验证安装结果即可。大家可以访问本专题下的文章,了解pip安装使用方法的更多内容。

339

2023.10.09

更新pip版本
更新pip版本

更新pip版本方法有使用pip自身更新、使用操作系统自带的包管理工具、使用python包管理工具、手动安装最新版本。想了解更多相关的内容,请阅读专题下面的文章。

412

2024.12.20

pip设置清华源
pip设置清华源

设置方法:1、打开终端或命令提示符窗口;2、运行“touch ~/.pip/pip.conf”命令创建一个名为pip的配置文件;3、打开pip.conf文件,然后添加“[global];index-url = https://pypi.tuna.tsinghua.edu.cn/simple”内容,这将把pip的镜像源设置为清华大学的镜像源;4、保存并关闭文件即可。

761

2024.12.23

python升级pip
python升级pip

本专题整合了python升级pip相关教程,阅读下面的文章了解更多详细内容。

349

2025.07.23

python中print函数的用法
python中print函数的用法

python中print函数的语法是“print(value1, value2, ..., sep=' ', end=' ', file=sys.stdout, flush=False)”。本专题为大家提供print相关的文章、下载、课程内容,供大家免费下载体验。

186

2023.09.27

mysql标识符无效错误怎么解决
mysql标识符无效错误怎么解决

mysql标识符无效错误的解决办法:1、检查标识符是否被其他表或数据库使用;2、检查标识符是否包含特殊字符;3、使用引号包裹标识符;4、使用反引号包裹标识符;5、检查MySQL的配置文件等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

183

2023.12.04

Python标识符有哪些
Python标识符有哪些

Python标识符有变量标识符、函数标识符、类标识符、模块标识符、下划线开头的标识符、双下划线开头、双下划线结尾的标识符、整型标识符、浮点型标识符等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

286

2024.02.23

java标识符合集
java标识符合集

本专题整合了java标识符相关内容,想了解更多详细内容,请阅读下面的文章。

258

2025.06.11

Python 自然语言处理(NLP)基础与实战
Python 自然语言处理(NLP)基础与实战

本专题系统讲解 Python 在自然语言处理(NLP)领域的基础方法与实战应用,涵盖文本预处理(分词、去停用词)、词性标注、命名实体识别、关键词提取、情感分析,以及常用 NLP 库(NLTK、spaCy)的核心用法。通过真实文本案例,帮助学习者掌握 使用 Python 进行文本分析与语言数据处理的完整流程,适用于内容分析、舆情监测与智能文本应用场景。

10

2026.01.27

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
最新Python教程 从入门到精通
最新Python教程 从入门到精通

共4课时 | 22.3万人学习

Django 教程
Django 教程

共28课时 | 3.6万人学习

SciPy 教程
SciPy 教程

共10课时 | 1.3万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号