dsh-tool-media:在 DeepSeek Harness 里用 ffmpeg 处理本地媒体

前言

在 DeepSeek Harness(DSH)里跑 Agent 时,一旦任务涉及本地视频或音频,模型往往只能凭文件名或上下文去猜:时长多少、编码是什么、文件有多大。猜错就要重跑转码或压缩,浪费一轮对话和算力。本机若已安装 ffmpeg,更合理的做法是让 Agent 先「问清楚」再动手。

下面介绍社区插件 dsh-tool-media(维护者 yuehancn)。它把本机 ffmpeg / ffprobe 封装成六个结构化工具,供 DSH 在桌面版或 Web 版 profile 下调用,属于社区目录上的「模型推理」相关扩展;目录页与源码相互独立,并非 DeepSeek 官方应用商店条目。

这是什么

dsh-tool-media 是面向 DeepSeek Harness 的自建工具插件:不替代 ffmpeg,而是把探规格、转封装、抽帧、抽音轨、按目标体积压缩等常见操作,变成 Agent 可调用的固定接口。

插件在 README 中声明与 dsh 0.2.0-rc.2(preview)构建并测试;apply(ctx) 插件规范相对稳定,若你使用更新版本的 dsh,需自行对照验证。npm 包名为 @yuehancn/dsh-tool-media,当前资料中版本为 1.0.0,许可证 MIT。

核心功能:六个工具

长任务前可先调用 media_status,检查 ffmpeg / ffprobe 是否在 PATH 中可执行、版本信息,并列出可用的转换目标,避免等到超时才发现在本机找不到 ffmpeg。

media_probe(path) 返回结构化事实:时长、体积、码率、封装格式、视频流(编码、分辨率、帧率、像素格式)、音频流(编码、采样率、声道数)及流数量。

media_convert(path, target, ...) 按预设目标转码。资料中列出的 target 包括:

target 容器 视频编码 音频编码
mp4-h264 mp4 libx264 aac
mp4-h265 mp4 libx265 aac
webm webm libvpx-vp9 libopus
gif gif gif —
mp3 / wav / aac / flac 各自容器 — 对应编码

可选参数包括:width(等比缩放并取偶数宽高)、start 与 duration(裁剪片段)、crf(0–51,数值越小画质越好)、removeAudio(去掉音轨)。

media_frames(path, count | timestamps, format) 从视频中抽帧。默认在整段时长上均匀取帧(而非只取开头若干秒);也可传入显式时间戳,例如 "0,5,12.5"。

media_audio(path, target, sampleRate, channels) 导出音轨。默认输出 wav;若后续要做语音识别,可指定 sampleRate=16000、channels=1。

media_compress(path, targetSizeMb, audioKbps, width) 按字节预算压缩,而非简单的画质档位。实现上使用 ffmpeg 两遍编码,使输出尽量贴近目标体积而不轻易超出。若预算过小导致算出的视频码率低于 50 kbps,插件会直接报错,提示放宽预算或先裁短素材,而不是 silently 产出不可用的文件。README 中的示意关系如下:

media_probe  →  时长 2:13 / 1920x1080 / h264 + aac / 48.2 MB
media_compress(targetSizeMb=10)  →  两遍编码,落在 9.8 MB

安装与启用

官方一行安装命令如下(资料原文;desktop 可换为 web):

dsh plugin --profile desktop add github:yuehancn/dsh-tool-media

支持的 profile 为 desktop(桌面版)与 web(Web 版)。安装完成后需重启 dsh 方可使用工具。

本机须能运行 ffmpeg 与 ffprobe。Windows 上 README 建议从 gyan.dev 下载 full build,解压后将 bin 目录写入配置或加入 PATH,执行 ffmpeg -version 能输出版本即可。

配置项

在 ~/.dsh/profiles/<profile>/cordis.patch.yml 中可为插件 tool-media 增加 config,例如:

# ~/.dsh/profiles/<profile>/cordis.patch.yml
- id: tool-media
  config:
    ffmpegPath: C:/AI/ffmpeg/ffmpeg-release-full/bin/ffmpeg.exe
    ffprobePath: C:/AI/ffmpeg/ffmpeg-release-full/bin/ffprobe.exe
    outputDir: C:/Users/you/Videos/media-output
    maxFrames: 60
字段 默认 说明
ffmpegPath ffmpeg ffmpeg 可执行文件路径
ffprobePath ffprobe ffprobe 可执行文件路径
outputDir media-output 输出产物目录
timeoutMs 900000 单次调用超时(15 分钟)
maxFrames 60 单次最多抽取帧数
probe / convert / frames / audio / compress / status true 可按需关闭单个工具

典型用法思路

  1. 用 media_status 确认环境,再对目标文件调用 media_probe,把时长、分辨率、编码写进后续决策。
  2. 需要发给他人或上传平台且有人为体积上限时,用 media_compress 传入 targetSizeMb,而不是反复试 crf。
  3. 要做封面或快速浏览内容时,用 media_frames 均匀抽若干帧,或指定时间戳。
  4. 语音转写前用 media_audio 导出 16 kHz 单声道 wav。
  5. 格式不兼容或需要 webm / gif 等时,用 media_convert 选对应 target,必要时配合裁剪与缩放。

以上步骤均在本机通过子进程调用 ffmpeg 完成;插件 README 说明仅使用 spawn(command, argsArray),不拼接 shell 字符串;读写范围限于你指定的输入文件与 outputDir,不上传、不联网;-y 仅作用于输出目录内产物,不会覆盖源文件路径。

适用场景与注意

适合已经在 DSH 工作流里处理本地音视频、并希望 Agent 能结构化读取元数据与执行转码的开发者。插件以当前 dsh 进程的用户权限运行,安装前建议阅读 GitHub 仓库 源码与 MIT 许可证,确认路径与输出目录符合你的安全策略。

社区目录页:yuehancn/dsh-tool-media。DSH 生态强调「一切皆插件」;SkillHub 等目录站点与 DeepSeek / 幻方无官方从属关系,插件质量与维护节奏以仓库与维护者为准。资料中 GitHub 星标为 0,不代表功能不可用,仅反映当前关注度。

结尾

dsh-tool-media 把「猜媒体规格」换成可复用的六次工具调用:先 probe,再 convert、抽帧、抽音轨或按 MB 预算 compress。若你的 Agent 经常碰本地 ffmpeg 任务,可按上文命令安装、配好路径后重启 dsh 试用。

  • 目录页:https://www.skillhub.cn/plugins/yuehancn/dsh-tool-media
  • 源码与完整说明:https://github.com/yuehancn/dsh-tool-media
羽毛球分组比赛记分
小程序二维码

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

Xiaoye