dsh-media-kit:用 ffmpeg 抽幀與音軌,只回文件路徑

前言

在 DSH 裏讓智能體「看懂」本地視頻,常見做法是走媒體類插件:抽幀或整段交給視覺模型,或再走轉寫鏈路。若插件把「取素材」和「選模型路由」綁在一起,在沒有合適全模態能力時,可能出現整條鏈失敗、只得到一句模糊結論的情況。排查時往往既要去確認 ffmpeg,又要去查 provider 配置,成本偏高。

dsh-media-kit 的做法相反:插件只負責用 ffmpeg 從本地音視頻取出幀或音軌,把生成文件的路徑交回會話;看圖、轉寫、判斷內容交給開發者已有的能力與工具。不接入模型、不上傳、不做路由選擇,抽幀成功或失敗都能在 ffmpeg 這一層說清楚。

這是什麼

dsh-media-kit 是 DeepSeek Harness 社區插件,維護者爲 Daphne999(package 作者署名爲沈藍),分類爲工作流。當前 package 版本爲 0.1.1,許可證 MIT。

一句話定位:從本地視頻或音頻用 ffmpeg 抽均勻幀、定點幀、場景變化幀或音軌文件,返回值是磁盤上的路徑列表,不調用視覺或語音模型,不把文件上傳到外網。

核心功能

插件通過五個工具暴露能力,名稱與行爲以倉庫 README 爲準:

工具 作用
media_probe { path } 查詢時長、分辨率、編碼、是否含音軌
video_frames { path, count } 在時長上均勻抽 N 張 PNG(count 1–24,默認 6),返回路徑
video_frame_at { path, at } 在指定秒數取一張幀
media_audio { path, format } 抽出音軌爲 m4a 或 mp3,返回路徑
video_scene_frames { path, threshold, maxFrames } 按場景檢測抽幀,僅在畫面實質變化時取樣

README 中的典型鏈路是:先 media_probe,再 video_frames(count=9),由會話裏已有的視覺能力逐張查看;需要字幕或畫面細節時,由開發者自行讀圖,而不是插件代寫結論。

與同類媒體插件的差異,README 概括爲:多款插件定位爲「分析器」(取素材、路由模型、給出文字結論);本插件定位爲「取景器」(把畫面或音軌文件擺出來)。因此不必爲插件單獨配置 API key 或 provider;視覺調用次數與抽幀數量直接相關,可用 video_frame_at 或 video_scene_frames 控制成本。video_scene_frames 用於避免均勻抽幀漏掉短促但重要的畫面變化。

實現上有三處刻意設計:

  1. 工作目錄默認使用 ~/.dsh/media-kit/work/,可通過配置項 workDir 修改;避免在某些環境下向 %TEMP% 寫入時觸發 ffmpeg 的 Permission denied。
  2. 查找 ffmpeg 的順序爲:配置 ffmpegDir → 環境變量 FFMPEG_DIR → 已知目錄 → PATH;全部失敗時報錯並提示應配置哪個字段,不假設 ffmpeg 一定在 PATH 中。
  3. 抽音軌前先通過探測確認存在音軌,避免對無音軌文件(例如部分 DASH 拆條)直接跑 ffmpeg 得到難以理解的 stream 報錯。

插件明確不做:音頻轉寫(只提供音軌路徑)、文件上傳、內容判斷與摘要。

安裝與啓用

在已安裝 DSH CLI 的環境中,README 給出的安裝方式爲:

dsh plugin --profile web add <本倉庫地址>

將 <本倉庫地址> 換爲插件 Git 倉庫地址即可,例如:

dsh plugin --profile web add https://github.com/Daphne999/dsh-media-kit

首次使用前本機需要可用的 ffmpeg。若未安裝,可下載官方構建並解壓,在插件配置中將 ffmpegDir 指向包含 ffmpeg / ffprobe(Windows 下爲 ffmpeg.exe / ffprobe.exe)的 bin 目錄。

插件在 DSH 進程權限下讀寫本地路徑與調用 ffmpeg,安裝前應自行審閱源碼與 MIT 許可證,確認路徑與二進制來源可信。

典型用法

下面流程摘自 README,可在支持該插件的 DSH 會話中按序調用工具名與參數:

  1. 對目標本地文件執行 media_probe,確認時長、分辨率、是否有音軌。
  2. 需要概覽畫面時,調用 video_frames,例如 count=9,得到多張 PNG 路徑後,用當前會話已有的視覺能力逐張查看。
  3. 只需某一時刻畫面時,用 video_frame_at 指定秒數。
  4. 長片且關心情節切換點時,用 video_scene_frames 配合 threshold、maxFrames,減少均勻抽幀帶來的遺漏。
  5. 需要後續 ASR 時,用 media_audio 指定 format(m4a 或 mp3),將返回的音軌路徑交給已有轉寫工具;插件本身不執行轉寫。

僅要元數據、不需畫面時,停在 media_probe 即可。

適用場景與注意

適合需要在智能體工作流裏處理任意本地 mp4 等文件、又希望視覺與轉寫能力與 DSH 外既有棧保持一致的場景。也適合希望抽幀失敗時直接看到 ffmpeg 層錯誤、而不是被模型路由「兜底」成空結論的情況。

不適合期望插件直接輸出視頻摘要、彈幕分析或平臺綁定能力(如 B 站專鏈)的需求;那些能力 README 中指向其他專用插件。

注意:輸出文件落在配置的 workDir(默認 ~/.dsh/media-kit/work/),長期使用需自行清理或指定目錄。星標與社區目錄信息以 SkillHub 與 GitHub 頁面爲準;DSH 插件生態由社區目錄聚合,與 DeepSeek / 幻方無官方從屬關係。

結尾

dsh-media-kit 把本地音視頻處理收斂爲「探測 → 抽幀或抽音軌 → 返回路徑」,把模型與業務判斷留在會話既有能力一側。更多說明見社區目錄頁與 GitHub 倉庫:

  • 目錄頁:https://www.skillhub.cn/plugins/Daphne999/dsh-media-kit
  • 倉庫:https://github.com/Daphne999/dsh-media-kit
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜