多模態(3):實戰 GPT-4o 視頻理解

最近,OpenAI 團隊的 GPT-4o 模型,在多模態方面的能力有了大幅提升,這次我們就使用 GPT-4o 完成一個視頻理解的實戰。

1. 環境搭建

1.1 安裝 FFmpeg

做視頻處理,我們需要用到 FFmpeg 這款功能強大的開源多媒體處理工具。FFmpeg 用于處理音頻、視頻和其他多媒體文件,可以實現以下功能:

  • 轉碼:將多媒體文件從一種格式轉換為另一種格式,例如將視頻從 MP4 轉換為 AVI。
  • 剪輯:從多媒體文件中提取片段或合并多個片段。
  • 處理:調整視頻的尺寸、比特率、幀率,或音頻的采樣率、聲道數等。
  • 添加效果:為視頻添加濾鏡、字幕、水印等。
  • 流媒體:將多媒體文件實時傳輸到網絡上。

首先我們來安裝 FFmpeg 工具。我使用的是 Mac 電腦,可以直接通過 brew 來安裝。如果同學們使用的是其它平臺,也可以參考官網的教程進行安裝,這里就不贅述了。

brew install ffmpeg

安裝完成后,可以通過下面的命令進行驗證:

ffmpeg -version

1.2 安裝依賴庫

除了 FFmpeg 之外,我們還需要安裝 opencv-python 和 moviepy,它們是 Python 領域非常主流的計算機視覺庫,具備強大的音視頻處理能力

pip install --upgrade opencv-python moviepy

2. 視頻抽幀

因為 OpenAI 官方暫時還沒有直接開放視頻理解的 API,所以我們只能曲線救國,先對視頻進行抽幀,提取出一組幀的圖片,再批量發送給 GPT-4o 進行理解。

我利用大模型生成了一段 5秒的搞笑視頻:

對該視頻進行抽幀,按照每1秒提取一幀,總共可以提取出5幀的內容。具體代碼如下:

3. 視頻理解

抽幀完成后,我們就可以將這些圖片批量發送給 GPT-4o,讓其生成視頻內容介紹。

代碼如下:

import os
from typing import Listimport dotenv
from openai import OpenAI# 加載環境變量
dotenv.load_dotenv()# 創建OpenAI客戶端
client = OpenAI(api_key=os.getenv("OPENAI_API_KEY"),base_url=os.getenv("OPENAI_API_BASE"))def introduction(frames: List) -> str:"""生成視頻介紹:param frames: 視頻幀列表:return: 視頻內容介紹"""# 使用GPT-4o模型,生成視頻介紹response = client.chat.completions.create(model='gpt-4o',messages=[{"role": "system", "content": "你是一位資深的內容編輯。請以Markdown格式,生成視頻的介紹。"},{"role": "user", "content": ["下面是視頻的圖像幀",*map(lambda x: {"type": "image_url","image_url": {"url": f'data:image/jpg;base64,{x}', "detail": "low"}},frames)]},],temperature=0,)return response.choices[0].message.content

執行代碼,可以看到 GPT-4o 為我們生成了 Markdown 格式的內容:

# 視頻介紹在這段富有喜劇色彩的視頻中,鄉村田野的寧靜被一位嘗試騎行水坑的年輕人打破。陽光明媚的一天,他戴著大帽子,騎著復古自行車,試圖勇敢地穿越一條泥濘的小路。## 場景描繪- **騎自行車者的冒險**: 騎車者穿著淳樸的服裝,頭戴寬檐帽,給人一種漫游田園的印象。在他的自行車后座綁著一只體型小巧的家禽,為場景增添了趣味性。
- **挑戰與失誤**: 視頻的高潮部分呈現了騎車者試圖跨越路面上的淺水坑。盡管動作充滿信心,但他最終失去平衡,墜入水中,濺起大片水花,構成了幽默的結局。
- **觀眾的反應**: 在畫面的一側,可以看到一群穿著傳統服裝的人們,他們以各種姿態觀望騎自行車者的冒險,臉上似乎帶著驚訝和喜悅。 ## 視頻氛圍整個場景在綠色的草地和清澈的藍天背景中進行,表現出鄉村生活的悠然寧靜,同時以幽默的方式捕捉人們日常嘗試中的滑稽瞬間。這段視頻不僅讓觀眾感受到幽默,也讓人贊美大自然的美麗與樸實生活的簡單樂趣。

可以看出,GPT-4o 基本 Get 到了視頻內容的精髓。

小結

本篇文章中,我們全面了解了 GPT-4o 的強大功能及其在多模態 AI 應用開發中的巨大潛力,并通過實際操作體驗了如何利用 GPT-4o 進行視頻理解。

GPT-4o 作為全新的端到端多模態模型,能夠在極短的時間內處理多種模態輸入和輸出,使得人機交互更加自然和高效。尤其是在音頻分析和視頻理解方面,GPT-4o 的表現令人印象深刻。

大模型在多模態方面能力的持續提升,將為 AI 應用的開發帶來革命性的變化,一方面可以大幅提升用戶體驗;另一方面也可以加速促進 AI 應用在各行各業的廣泛應用,并不斷催生出更多創新的解決方案。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/903501.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/903501.shtml
英文地址,請注明出處:http://en.pswp.cn/news/903501.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

(27)VTK C++開發示例 ---將點坐標寫入 STL文件

文章目錄 1. 概述2. CMake鏈接VTK3. main.cpp文件4. 演示效果 更多精彩內容👉內容導航 👈👉VTK開發 👈 1. 概述 此示例使用 vtkSTLWriter 將存儲在 vtkPolyData 對象中的 3D 幾何數據保存到 STL 文件,并讀取stl文件顯示…

2. python協程/異步編程詳解

目錄 1. 簡單的異步程序 2. 協程函數和協程對象 3. 事件循環 4. 任務對象Task及Future對象 4.1 Task與Future的關系 4.2 Future對象 4.3 全局對象和循環事件對象 5. await關鍵字 6. 異步上下文管理 7.異步迭代器 8. asyncio的常用函數 8.1 asyncio.run 8.2 asyncio.get…

智慧園區IOT項目與AI時代下的機遇 - Java架構師面試實戰

在互聯網大廠的Java求職者面試中,面試官通常會針對實際業務場景提出一系列問題。以下是關于智慧園區IOT項目及AI時代下的機遇的面試模擬對話。 第一輪提問 面試官:馬架構,請簡要介紹下智慧園區IOT項目的整體架構設計。 馬架構:…

論文導讀 - 基于特征融合的電子鼻多任務深度學習模型研究

基于特征融合的電子鼻多任務深度學習模型研究 原論文地址:https://www.sciencedirect.com/science/article/pii/S0925400524009365 引用此論文(GB/T 7714-2015): NI W, WANG T, WU Y, et al. Multi-task deep learning model f…

AI超級智能體項目教程(二)---后端項目初始化(設計knif4j接口文檔的使用)

文章目錄 1.選擇JDK的版本和相關配置2.添加依賴信息2.1指定lombok版本信息2.2引入hutool工具類2.3了解knif4j依賴2.4引入knif4j依賴 3.contrller測試3.1完成yml文件配置3.2修改默認掃描路徑3.3controller具體的內容3.4配置接口和訪問路徑3.5如何訪問3.6調試接口3.6調試接口 1.選…

linux blueZ 第四篇:BLE GATT 編程與自動化——Python 與 C/C++ 實戰

本篇聚焦 BLE(Bluetooth Low Energy)GATT 協議層的編程與自動化實踐,涵蓋 GATT 基礎、DBus API 原理、Python(dbus-next/bleak)示例、C/C++ (BlueZ GATT API)示例,以及自動發現、讀寫特征、訂閱通知、安全配對與腳本化測試。 目錄 BLE GATT 基礎概念 BlueZ DBus GATT 模…

kafka與flume的整合、spark-streaming

kafka與flume的整合 前期配置完畢,開啟集群 需求1: 利用flume監控某目錄中新生成的文件,將監控到的變更數據發送給kafka,kafka將收到的數據打印到控制臺(三個node01中運行) 1.在kafka中建立topic kafka…

redis高級進階

1.redis主從復制 redis主從復制1 2.redis哨兵模式 嗶哩嗶哩視頻 redis哨兵模式1 redis哨兵模式2 redis哨兵模式3 3.redis分片集群 redis分片集群1 redis分片集群2 redis分片集群3

uniapp: 低功耗藍牙(BLE)的使用

在微信小程序中實現藍牙對接藍牙秤的重量功能,主要依賴微信小程序提供的低功耗藍牙(BLE)API。以下是一個清晰的步驟指南,幫助你完成從連接藍牙秤到獲取重量數據的開發流程。需要注意的是,具體實現可能因藍牙秤的協議和…

3D架構圖軟件 iCraft Editor 正式發布 @icraft/player-react 前端組件, 輕松嵌入3D架構圖到您的項目

安裝 pnpm install icraft/player-react --saveimport { ICraftPlayer } from "icraft/player-react";export default function MyScene() {return <ICraftPlayer srcyour-scene.iplayer />; }icraft/player-react 為開發者提供了一站式的3D數字孿生可視化解決…

云數據中心整體規劃方案PPT(113頁)

1. 引言 概述&#xff1a;云數據中心整體規劃方案旨在構建彈性、高效的云計算基礎設施&#xff0c;通過軟件定義數據中心&#xff08;SDDC&#xff09;實現資源虛擬化與管理自動化。 2. 技術趨勢與背景 技術革新&#xff1a;隨著云計算、虛擬化及自動化技術的發展&#xff0c…

(六)機器學習---聚類與K-means

到本篇文章&#xff0c;我們先對前幾篇所學習的算法進行一個回顧&#xff1a; 而本篇文章我們將會介紹聚類以及K-means算法。 分類問題回歸問題聚類問題各種復雜問題決策樹√線性回歸√K-means√神經網絡√邏輯回歸√嶺回歸密度聚類深度學習√集成學習√Lasso回歸譜聚類條件隨機…

在html中如何創建vue自定義組件(以自定義文件上傳組件為例,vue2+elementUI)

1、先上代碼&#xff1a;vueUpload.js var dom <div class"upload-file"><el-upload :action"uploadFileUrl" :before-upload"handleBeforeUpload" :file-list"fileList" :limit"limit":on-error"handleUpl…

計算機基礎:二進制基礎14,二進制加法

專欄導航 本節文章分別屬于《Win32 學習筆記》和《MFC 學習筆記》兩個專欄&#xff0c;故劃分為兩個專欄導航。讀者可以自行選擇前往哪個專欄。 &#xff08;一&#xff09;WIn32 專欄導航 上一篇&#xff1a;計算機基礎&#xff1a;二進制基礎13&#xff0c;十六進制與二進…

可視化圖解算法: 判斷是不是二叉搜索樹(驗證二叉搜索樹)

1. 題目 描述 給定一個二叉樹根節點&#xff0c;請你判斷這棵樹是不是二叉搜索樹。 二叉搜索樹滿足每個節點的左子樹上的所有節點的值均嚴格小于當前節點的值&#xff1b;并且右子樹上的所有節點的值均嚴格大于當前節點的值。 數據范圍&#xff1a;節點數量滿足 1≤n≤10^4…

Markdown轉WPS office工具pandoc實踐筆記

隨著DeepSeek、文心一言、訊飛星火等AI工具快速發展&#xff0c;其輸出網頁內容拷貝到WPS Office過程中&#xff0c;文檔編排規整的格式很難快速復制。 注&#xff1a;WPS Office不支持Markdown格式&#xff0c;無法識別式樣。 在這里推薦個免費開源工具Pandoc&#xff0c;實現…

python的turtle庫實現四葉草

實現代碼&#xff1a; import turtle turtle.pencolor(‘green’) turtle.fillcolor(‘green’) turtle.begin_fill() turtle.circle(100,90) turtle.left(90) turtle.circle(100,90) turtle.right(180) turtle.circle(100, 90) turtle.left(90) turtle.circle(100,90) tu…

北重數控滑臺加工廠家:汽車零部件試驗鐵地板-安全性能的測試方法

汽車零部件的安全性能測試是非常重要的&#xff0c;其中鐵地板測試是其中的一種常見測試方法之一。鐵地板測試主要用于評估汽車零部件在發生碰撞或事故時的安全性能&#xff0c;以確保零部件在各種情況下都能提供有效的保護和安全性能。 鐵地板測試通常包括以下步驟和方法&…

Linux0.11系統調用:預備知識

系統調用 預備知識 目標&#xff1a;了解系統調用的流程&#xff0c;在Linux 0.11上添加兩個系統調用&#xff0c;并編寫兩個簡單的應用程序測試它們。 對應章節&#xff1a;同濟大學趙炯博士的《Linux內核0.11完全注釋&#xff08;修正版V3.0&#xff09;》的第5.5節 下面就針…

如何防止 ES 被 Linux OOM Killer 殺掉

當 Linux 系統內存不足時&#xff0c;內核會找出一個進程 kill 掉它釋放內存&#xff0c;旨在保障整個系統不至于崩潰。如果 ES 按照最佳實踐去實施部署&#xff0c;會保留一半的內存&#xff0c;不至于發生此類事情。但事情總有例外&#xff0c;有的朋友可能 ES 和其他的程序部…