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
羽毛球分组比赛记分
小程序二维码

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

Xiaoye