初探本地DeepSeek VL + Typescript + FFMPEG:提取视频关键帧分析内容
生活随笔
收集整理的這篇文章主要介紹了
初探本地DeepSeek VL + Typescript + FFMPEG:提取视频关键帧分析内容
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
初探本地DeepSeek VL + Typescript + FFMPEG:提取視頻關鍵幀分析內容
前言
隨著人工智能和計算機視覺技術的發展,利用圖像識別來分析視頻內容已經成為現實。本文的主要目標是:
- 使用 ffmpeg 從視頻中提取關鍵幀圖片;
- 基于 DeepSeek VL 1.3B 本地大模型對視頻幀進行目標檢測與識別(例如特定物體或人物);
- 實現流式傳輸分析結果,確保實時反饋;
- 提供終止分析操作的機制,防止資源浪費;
環境要求
- Typescirpt 5+
- Nodejs 20+
- Python 3.8+
- 安裝FFMPEG
- 部署DeepSeek VL本地大模型
項目演示(視頻未加速)
使用的顯卡是英偉達RTX 4070Ti-O12G
技術實現
前端部分
實現思路
- 用戶在界面上傳視頻
- 后端分析視頻然后逐一提取視頻的每一幀保存為本地圖片
- 準備好參數,發送請求給DeepSeek VL API
- 獲取DeepSeek VL API數據,返回到前端
視頻關鍵幀提取
本項目中視頻的關鍵幀提取是視頻分析的基礎。關鍵幀是指視頻中能夠代表某一時間段內容的圖像。通過提取關鍵幀,可以將視頻處理的復雜度降低到圖像處理的層面,從而顯著提高處理效率。
在我們的實現中,使用了FFmpeg庫來提取視頻的關鍵幀。
具體步驟如下:
- 視頻時長獲取:通過FFmpeg獲取視頻的總時長,確定需要提取的關鍵幀數量。
- 關鍵幀提取:按固定時間間隔(例如每秒提取一幀)從視頻中提取關鍵幀,并將其保存到指定路徑。
相關代碼如下:
async function getVideoDuration(videoFilePath: string): Promise<number | undefined> {
return new Promise((resolve, reject) => {
ffmpeg.ffprobe(videoFilePath, (error, metadata) => {
if (error) reject(error);
const format = metadata.format;
resolve(format.duration);
});
});
}
async function getVideoKeyframeImg(params: GetVideoKeyframeImgParams): Promise<string> {
const { videoFilePath, seek, imgOutputPath } = params;
const imgFileOutputPath = `${imgOutputPath}/${seek}.png`;
return new Promise((resolve, reject) => {
ffmpeg(videoFilePath)
.seekInput(seek)
.output(imgFileOutputPath)
.outputOptions(['-frames:v 1'])
.on('end', () => resolve(imgFileOutputPath))
.on('error', err => reject(err))
.run();
});
}
接口部分
使用開源深度視覺語言(VL)模型:DeepSeek-VL
DeepSeek VL 是一個支持圖像分析和目標檢測的深度學習模型。它能夠對輸入的圖像進行分析,并返回檢測到的目標及其位置信息。在實現中,DeepSeek VL 用于分析提取的關鍵幀,判斷其中是否包含特定的物體或人物。
由于DeepSeek-VL沒有提供API接口訪問,如有需要請到DeepSeek-VL-Fork自取
- 按照DeepSeek-VL說明部署完成
- 修改app_deepseek_rest_api.py文件圖片訪問路徑:
filePath = "C:\\Users\\Administrator\\Code\\video-finder\\public\\images\\"
- 運行腳本
python .\deepseek_vl\serve\app_deepseek_rest_api.py
實際應用場景與擴展
通過視頻我們可以看到DeepSeek-VL分析圖片的速度還是非常之快的,由于DeepSeek-VL暫不支持特定格式返回,所以有很多應用場景是無法做到的。比如:
- 監控視頻中的異常行為檢測;
- 視頻內容的自動摘要及標簽提取;
- 實時視頻流的內容檢索;
- 等等
總結
本項目簡單初探一下如何利用 ffmpeg 與 DeepSeek VL 技術,對視頻文件進行關鍵幀提取和圖片的分析。希望本文能為大家提供靈感,在實際項目中更好地應用視頻分析技術。
總結
以上是生活随笔為你收集整理的初探本地DeepSeek VL + Typescript + FFMPEG:提取视频关键帧分析内容的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 浅析Python中深拷贝和浅拷贝
- 下一篇: [AI/GPT/Chat2SQL/RAG