📦 Ffmpeg StaticFFmpeg

v1.0.2

通过 ffmpeg-static npm 包(附带二进制)执行操作,并自动回退至系统原生 FFmpeg 安装。用途:音视频处理……

8· 8·0 当前·0 累计
by @fantox (FantoX)
下载技能包
最后更新
2026/4/19
0
安全扫描
VirusTotal
Pending
查看报告
OpenClaw
安全
high confidence
该技能的文件、依赖和指令均与其声明目的相符(提供适用于 Node 的 FFmpeg 二进制文件及用法示例);所请求的内容与 FFmpeg 使用无关或过度之处。
评估建议
该技能在 Node 项目中打包和使用 FFmpeg 二进制方面逻辑一致。安装前请注意:(1)确认你信任该 npm 包及其 GitHub 发布(ffmpeg-static 会在 npm install 时下载预编译二进制);(2)若处于受限环境,可考虑使用系统 FFmpeg 并设置 FFMPEG_STATIC_SKIP_BINARY_DOWNLOAD=1;(3)切勿在未验证的情况下对不受信任的文件名或 URL 运行 FFmpeg——FFmpeg 可读取网络资源及多种协议;(4)优先使用系统 FFmpeg 以获得硬件加速编码器并避免意外下载二进制;(5)如需高保障,请在 npmjs/GitHub 验证该包并检查哈希或 CI 可复现构建。...
详细分析 ▾
用途与能力
名称/描述、所需二进制文件(node、npm)、模板以及解析脚本均与将 ffmpeg-static 打包并暴露给 Node 项目保持一致。小提示:SKILL.md 中的表述称它“将……接入每一次助手交互”,暗示广泛集成,但技能元数据显示 always:false(需用户调用)。这是措辞不匹配,而非功能不一致。
指令范围
SKILL.md 明确说明了如何从 Node 和 shell 解析并调用 FFmpeg;它建议使用 child_process 并提供了大量 FFmpeg 命令模板。这些说明始终围绕媒体处理。技能本身指出了两个安全相关要点:(1) npm install ffmpeg-static 会从 GitHub Releases 下载预编译二进制文件;(2) FFmpeg 可从 URL/协议读取,因此对不受信任的输入运行可能访问网络资源或其他协议。这是该能力所固有的,但值得留意。
安装机制
清单中无平台专属安装器,但 SKILL.md 建议运行 npm install ffmpeg-static(可选 ffprobe-static)。使用 npm 是预期行为;ffmpeg-static 会在安装后从 GitHub Releases 拉取预编译 FFmpeg 二进制。整体风险中等(涉及网络下载二进制),但这是该包的标准分发方式,并非意外的任意 URL 或私有服务器。
凭证需求
该技能不声明任何秘密,仅记录无害且合理的环境变量(FFMPEG_PATH、FFPROBE_PATH、FFMPEG_STATIC_SKIP_BINARY_DOWNLOAD)。不会请求无关的凭据或配置路径。
持久化与权限
始终为 false,技能不会请求永久/隐形常驻或系统级配置修改。disable-model-invocation 为 false(正常);技能可被 agent 调用,但对用户可调用的技能而言这是预期行为。
安全有层次,运行前请审查代码。

运行时依赖

🖥️ OSLinux · macOS · Windows

版本

latestv1.0.22026/4/19

- 用 templates/node_patterns.txt 替换 scripts/ffmpeg_runner.js,将 Node.js 用法模式与示例迁移至模板文件。 - 更新 SKILL.md,引用新的 templates/node_patterns.txt,提供可直接复制的 Node.js、spawn 及 fluent-ffmpeg 片段。 - 删除 SKILL.md 内的 Node.js 脚本示例,统一收至模板,便于复用。 - 未对技能逻辑或行为造成破坏性变更。

Pending

安装命令

点击复制
官方npx clawhub@latest install ffmpeg-static
镜像加速npx clawhub@latest install ffmpeg-static --registry https://cn.longxiaskill.com

技能文档

本技能将 ffmpeg-static(一个以 npm 包形式分发的独立 FFmpeg 二进制)接入每次助手交互。若系统也安装了 FFmpeg,优先使用系统版本(通常更新且支持 GPU);否则回退到自带二进制。两条路径均支持 FFmpeg 全部功能。

无需修改 PATH。 require('ffmpeg-static') 返回二进制绝对路径;脚本直接传给 child_process.spawn 即可。

---

安全提示

  • ffmpeg-static 会在 npm install 时从 GitHub Releases 下载预编译二进制,请在 npmjs.com/package/ffmpeg-static 验证包。
  • 切勿在未校验的情况下将不受信任的文件名或 URL 直接传入 FFmpeg 命令——FFmpeg 支持读取 URL 与任意协议。
  • 自带二进制不含 GPU 加速编码器(nvenc、vaapi、videotoolbox)。如需硬件加速,请使用系统 FFmpeg。

---

安装

最小安装(仅自带 FFmpeg 二进制)

``bash npm install ffmpeg-static `

项目安装含 ffprobe(推荐)

`bash npm install ffmpeg-static ffprobe-static `

验证二进制路径

`bash node -e "console.log(require('ffmpeg-static'))" # 例:/path/to/node_modules/ffmpeg-static/ffmpeg `

查看最终使用的二进制(自带 vs 系统)

`bash node scripts/resolve_ffmpeg.js `

---

二进制解析逻辑

按以下优先级解析 FFmpeg 二进制:
  • FFMPEG_PATH 环境变量——显式指定,优先级最高
  • 系统 FFmpeg——遍历 PATH 目录并用 fs.accessSync 检测;若存在则优先(更新、支持硬件加速)
  • 自带二进制——require('ffmpeg-static') 返回的绝对路径;npm install 后必定存在

`js // 标准解析方式——所有脚本统一使用 const { resolveFfmpeg } = require('./scripts/resolve_ffmpeg'); const ffmpegPath = resolveFfmpeg(); // 找不到则抛错 `

---

常用操作

转码为 H.264/AAC MP4

`bash $(node -e "process.stdout.write(require('ffmpeg-static'))") \ -i input.mkv -c:v libx264 -crf 23 -preset fast \ -c:a aac -b:a 128k output.mp4 `

在指定时间点提取缩略图

`bash ffmpeg -ss 00:01:30 -i input.mp4 -frames:v 1 -q:v 2 thumb.jpg `

音频转 MP3

`bash ffmpeg -i input.flac -q:a 2 output.mp3 `

仅提取音频流

`bash ffmpeg -i input.mp4 -vn -c:a copy audio.aac `

无损裁剪

`bash ffmpeg -ss 00:00:10 -to 00:01:00 -i input.mp4 -c copy trimmed.mp4 `

拼接文件

`bash ffmpeg -f concat -safe 0 -i filelist.txt -c copy output.mp4 ` filelist.txt 格式: ` file '/abs/path/clip1.mp4' file '/abs/path/clip2.mp4' `

缩放视频(保持比例)

`bash ffmpeg -i input.mp4 -vf "scale=1280:-2" -c:a copy scaled.mp4 `

生成动态 GIF

`bash ffmpeg -i input.mp4 -vf "fps=10,scale=480:-1:flags=lanczos,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse" output.gif `

HLS 流打包

`bash ffmpeg -i input.mp4 -codec: copy -start_number 0 \ -hls_time 10 -hls_list_size 0 -f hls output.m3u8 `

---

在 Node.js 中使用

模板见
templates/node_patterns.txt。关键步骤:
  • scripts/resolve_ffmpeg.js 解析二进制(纯 fs,无 shell 调用)
  • 在项目代码里用 Node 的 child_process.spawn 启动 FFmpeg
  • 使用 fluent-ffmpeg——通过 ffmpeg.setFfmpegPath() 传入解析后的路径

`js // 在你的项目里(非 skill 内部) const { resolveFfmpeg } = require('ffmpeg-static-skill/scripts/resolve_ffmpeg'); const ffmpegBin = resolveFfmpeg(); // 绝对路径,可直接给 spawn 或 fluent-ffmpeg ` 详见 templates/node_patterns.txt 中的 spawn、进度、ffprobe 及 fluent-ffmpeg 示例。

---

环境变量

| 变量 | 作用 | |------|------| | FFMPEG_PATH | 手动指定二进制路径;优先级最高 | | FFPROBE_PATH | 手动指定 ffprobe 路径 | | FFMPEG_STATIC_SKIP_BINARY_DOWNLOAD | 设为 1 可跳过 npm install` 时的下载(配合系统 FFmpeg 使用) |

---

最佳实践

数据来源ClawHub ↗ · 中文优化:龙虾技能库