用 ffmpeg 探测视频规格并按体积预算压缩转码
29.9/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/3 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add yuehancn/dsh-tool-media该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:待复验
是什么
dsh 原生插件 · tool
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 33 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件
查看扫描证据(共 6 处,展示前 6 条)
- 执行外部命令来自配置/变量lib/index.js:104
child = spawn(command, args, { cwd: options.cwd, windowsHide: true, shell: false }); - 写入本地文件lib/index.js:269
await mkdir(outputDir, { recursive: true }); - 读取本地文件lib/index.js:459
const info = await stat(destination).catch(() => undefined); - 读取本地文件lib/index.js:595
const info = await stat(destination).catch(() => undefined); - 读取本地文件lib/index.js:685
const info = await stat(destination).catch(() => undefined); - 读取本地文件lib/index.js:710
info = await stat(source);
扫描于 2026/11/4(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/schemastery@deepseek-ai/cordis@deepseek-ai/dsh-tools给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 探测视频规格
- 按体积预算压缩
- ffmpeg转码
README
由 DeepSeek 最新模型翻译生成dsh-tool-media
在 dsh 里直接剪转媒体 —— 探一探这个视频什么规格、转成 mp4/webm、抽几帧当封面、把音轨扒出来做转写、压到 10 MB 以内再发出去。
给 DeepSeek Harness 用的自建工具插件:把本机 ffmpeg 包成 6 个结构化工具。
Compatibility: built and tested against dsh 0.2.0-rc.2 (preview).
The apply(ctx) plugin spec is stable; verify against your own dsh version if newer.
一行安装
dsh plugin --profile desktop add github:yuehancn/dsh-tool-media
支持的 profile:desktop(桌面版)/ web(Web 版)。装完重启 dsh 即可用。
为什么需要它
智能体拿到一个视频,只能靠猜 —— 多长?多大?什么编码?猜错就得重跑一次转码。
展开完整文档(README 剩余 1 节)
dsh-tool-media 在 dsh 里直接剪转媒体 —— 探一探这个视频什么规格、转成 mp4/webm、抽几帧当封面、把音轨扒出来做转写、压到 10 MB 以内再发出去。 给 DeepSeek Harness 用的自建工具插件:把本机 ffmpeg 包成 6 个结构化工具。 Compatibility: built and tested against dsh 0.2.0-rc.2 (preview). The apply(ctx) plugin spec is stable; verify against your own dsh version if newer. 一行安装 dsh plugin --profile desktop add github:yuehancn/dsh-tool-media 支持的 profile:desktop(桌面版)/ web(Web 版)。装完重启 dsh 即可用。 为什么需要它 智能体拿到一个视频,只能靠猜 —— 多长?多大?什么编码?猜错就得重跑一次转码。 这个插件把「猜」换成「问」: media_probe → 时长 2:13 / 1920x1080 / h264 + aac / 48.2 MB media_compress(targetSizeMb=10) → 两遍编码,落在 9.8 MB 关键设计:media_compress 按字节预算压,不是给你一个画质旋钮。 因为真实需求就是「给我压到 10 MB 以内」,而从预算反推码率、再跑两遍编码让它真的落在 10 MB —— 这才是值得自动化的部分。 六个工具 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) 抽帧。默认在整段视频上均匀取(不是开头 N 秒)—— 因为「给我几帧」几乎总是「铺开看看」。也可以给显式时间戳 "0,5,12.5"。 media_audio(path, target, sampleRate, channels) 扒音轨。默认输出 wav(无损,做语音转写最合适);要喂给 ASR 就加 sampleRate=16000, channels=1。 media_compress(path, targetSizeMb, audioKbps, width) 按目标体积压缩,走 ffmpeg 两遍编码,结果贴着预算而不是超出去。 预算小到算出来的视频码率低于 50 kbps 时会直接报错告诉你要么放宽预算、要么先裁短 —— 而不是默默产出不可看的片子。 配置 ~/.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 | 按需关掉某个工具 | Windows 装 ffmpeg:下载 gyan.dev 的 full build,解压后把 bin 目录写进 ffmpegPath(或加进 PATH)。ffmpeg -version 能出版本号即可。 安全说明 - 只用 spawn(command, argsArray) 调用 —— 不拼 shell 字符串,路径里有空格、引号、中文都不会出事。 - 只读写你指定的输入文件与 outputDir,不上传、不联网。 - -y 只作用于 outputDir 内的产物;不会覆盖你的源文件(源文件路径从不作为输出)。 跑测试 mkdir -p node_modules/@deepseek-ai cp -r "$HOME/.dsh/profiles/desktop/node_modules/@deepseek-ai/." node_modules/@deepseek-ai/ node _test/run-all.mjs 三个套件,159 条断言全绿(对着真实 @deepseek-ai/dsh-tools 跑,不 mock): | 套件 | 断言 | 内容 | | test-logic.mjs | 48 | 类型判定、时长格式化、帧率分数解析、TARGETS 表、Config 默认值与覆盖 | | test-integration.mjs | 53 | 模块导出、注册数量、defineTool schema 归一化、六个开关、12 条错误路径、卡片标题、输出渲染 | | test-e2e.mjs | 58 | 真 ffmpeg 子进程:真造素材 → 真探 → 真转 gif/mp3/裁剪/静音 → 真抽帧 → 真扒音轨(含重采样到 16k 单声道)→ 真两遍压缩(6.89 MB → <1.6 MB)→ 中文带空格路径 | test-e2e.mjs 需要 C:/AI/ffmpeg/ffmpeg-release-full/bin/ 下的 ffmpeg/ffprobe; _test/fixtures/tiny.mp4 已随仓库提供(3 秒 320x240 带音轨,用 ffmpeg 的 testsrc + sine 生成)。 许可 MIT
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
yuehancn/dsh-tool-media
用 ffmpeg 探测视频规格并按体积预算压缩转码
相关插件 · 工具 / 效率
破甲管控台kingcharleslzy-ai/dsh-purge
dsh-purge Community · DeepSeek Harness 社区维护版:宿主兼容、状态诊断、提示词管理、更新与本机备份回滚。基于小杨 / YuJunZhiXue 的 dsh-purge。
★ 4,330已汉化DeepSeek 客户端
74.5
网文长卷lingfengQAQ/webnovel-writer
基于 Claude Code 的长篇网文辅助创作系统,解决 AI 写作中的「遗忘」和「幻觉」问题,支持 200…
★ 7,826已汉化DSH
72.2
花束设计alchaincyf/huashu-design
一句话生成网页、原型、PPT 与信息图等可交付设计
★ 28,638已汉化DSH
71.7
多智能体协作HKUDS/AutoSwarm
AutoSwarm: Unify Your Agents. Unify Your Context (Codex · Claude Code · DeepSeek Harness · Muse · Grok · WorkBuddy· nanobot · and more)
★ 2,349已汉化DSH
71.6
Vox 拼贴视频生成Alisa0808/vox-director
🎬 Vox Director拼贴动效导演
★ 2,129已汉化DSH
71.4
Agent 演化引擎Q00/ouroboros
智能体 OS:智能体自己变聪明,我们只守住底线:面试准入、分阶段评估、带预算的进化循环。MCP 服务器,14 种运行时:Claude Code、Codex CLI、Gemini CLI、OpenCode、Copilot、Kiro 等。
★ 6,311已汉化DSH
71.4
这是你的仓库?认领条目