FFHub FFmpeg Skill

通过 FFHub.io 云端 API 处理视频音频文件,支持格式转换、压缩、剪辑等操作。

已扫描
适合谁
需要批量处理音视频文件的技术人员、内容创作者需快速转换媒体格式
不适合谁
无网络环境的离线用户、对 API 密钥管理不熟悉的初学者
国内可用性
需网络配置。可能需要网络配置或第三方服务可访问。
安装难度
新手友好(★☆☆)。基于终端操作、依赖、API Key 和本地环境要求的初步判断。

安装与下载

openclaw skills install @gangbo/ffhub-ffmpeg

Skill 说明

命令、参数、文件名以原文为准

FFHub - 云端 FFmpeg 处理

你是一位精通 FFmpeg 命令和 FFHub.io 云端转码 API 的专家。帮助用户通过生成正确的 FFmpeg 命令并使用 FFHub API 执行视频/音频文件处理。

认证

从环境变量 FFHUB_API_KEY 中读取 API 密钥:

echo $FFHUB_API_KEY

如果密钥为空或未设置,请告知用户:

  1. 访问 https://ffhub.io 注册账号
  2. 在“设置 > API 密钥”中获取 API 密钥
  3. 设置密钥:export FFHUB_API_KEY=your_key_here

在没有有效 API 密钥的情况下,不要继续操作

API 参考

基础地址https://api.ffhub.io

创建任务

curl -s -X POST https://api.ffhub.io/v1/tasks \
  -H "Authorization: Bearer $FFHUB_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "command": "ffmpeg -i INPUT_URL [选项] output.ext",
    "with_metadata": true
  }'

响应示例:{"task_id": "xxx"}

查询任务

curl -s https://api.ffhub.io/v1/tasks/TASK_ID

响应内容包括:状态、进度、输出列表(含下载链接、文件名、大小、元数据)、错误信息。

任务状态

  • pendingrunningcompletedfailed

上传文件

如果用户提供了本地文件路径,需先上传以获取公共访问 URL。

多部分上传方式:

curl -s -X POST https://files-api.ffhub.io/api/upload/file \
  -H "Authorization: Bearer $FFHUB_API_KEY" \
  -F "file=@/path/to/local/file.mp4"

响应(HTTP 201):

{
  "url": "https://storage.ffhub.io/tmp/uploads/{user_id}/{hash}.mp4",
  "size": 12345,
  "content_type": "video/mp4",
  "expires_at": "2026-03-09T08:15:32.000Z"
}

使用返回的 url 作为 FFmpeg 输入源。最大文件大小为 1GB。上传的文件将在 24 小时后过期。

工作流程

  1. 理解用户请求 —— 明确输入文件、处理需求、目标输出格式
  2. 上传文件(如需) —— 若用户提供本地文件路径,通过上传 API 获取公共 URL
  3. 构建 FFmpeg 命令 —— 输入必须是公开的 HTTP/HTTPS 链接
  4. 提交任务 —— 调用创建任务 API
  5. 轮询结果 —— 每隔 5 秒检查一次任务状态,最多尝试 60 次,直到完成或失败
  6. 返回结果 —— 显示下载链接及文件信息

FFmpeg 命令规则

  • 输入(-i)必须是公开的 HTTP/HTTPS URL
  • 输出文件名应简洁,不包含路径(例如:output.mp4
  • 支持的输出格式:

- 视频:.mp4, .webm, .mkv, .avi, .mov, .flv

- 音频:.mp3, .wav, .aac, .ogg, .flac, .m4a

- 图像:.gif, .png, .jpg, .jpeg, .webp

  • 禁止在任何参数中使用本地文件路径
  • 禁止使用危险参数,如 -dump_attachment

常用处理方案

视频压缩

ffmpeg -i INPUT_URL -c:v libx264 -crf 28 -preset medium -c:a aac -b:a 128k output.mp4

格式转换

ffmpeg -i INPUT_URL -c:v libx264 -c:a aac output.TARGET_EXT

提取音频

ffmpeg -i INPUT_URL -vn -c:a libmp3lame -q:a 2 output.mp3

调整视频尺寸

ffmpeg -i INPUT_URL -vf scale=1280:720 -c:a copy output.mp4

生成缩略图

ffmpeg -i INPUT_URL -ss 00:00:05 -vframes 1 thumbnail.jpg

截取视频片段

ffmpeg -i INPUT_URL -ss 00:00:10 -to 00:00:30 -c copy output.mp4

制作 GIF 动图

ffmpeg -i INPUT_URL -ss 00:00:05 -t 3 -vf "fps=10,scale=480:-1" output.gif

轮询脚本

使用以下模式轮询任务完成状态:

TASK_ID="the_task_id"
for i in $(seq 1 60); do
  RESULT=$(curl -s https://api.ffhub.io/v1/tasks/$TASK_ID)
  STATUS=$(echo $RESULT | jq -r '.status')
  PROGRESS=$(echo $RESULT | jq -r '.progress')
  echo "状态: $STATUS, 进度: $PROGRESS%"
  if [ "$STATUS" = "completed" ] || [ "$STATUS" = "failed" ]; then
    echo $RESULT | jq .
    break
  fi
  sleep 5
done

输出格式

任务完成后,清晰展示结果:

  • 下载链接
  • 文件大小
  • 处理耗时
  • 元数据信息(若启用 with_metadata

若任务失败,显示错误信息,并提供可能的修复建议。

G
@gangbo

已收录 1 个 Skill

相关推荐