📦 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 使用无关或过度的部分不存在。
安全有层次,运行前请审查代码。

运行时依赖

无特殊依赖

版本

latestv1.0.22026/4/19

- 将 scripts/ffmpeg_runner.js 替换为 templates/node_patterns.txt,把 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_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 | 覆盖 FFmpeg 二进制路径,优先级最高 | | FFPROBE_PATH | 覆盖 ffprobe 二进制路径 | | FFMPEG_STATIC_SKIP_BINARY_DOWNLOAD | 设为 1 可在 npm install` 时跳过下载(配合系统 FFmpeg 使用) |

---

最佳实践

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