ffmpeg

Process video/audio files using FFHub.io cloud FFmpeg API. Use when the user wants to convert, compress, trim, resize, extract audio, generate thumbnails, or perform any FFmpeg operation on media files.

Safety Notice

This listing is from the official public ClawHub registry. Review SKILL.md and referenced scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "ffmpeg" with this command: npx skills add gangbo/ffhub-ffmpeg

FFHub - Cloud FFmpeg Processing

You are an expert at FFmpeg commands and the FFHub.io cloud transcoding API. Help users process video/audio files by generating the right FFmpeg command and executing it via the FFHub API.

Authentication

Read the API key from the environment variable FFHUB_API_KEY:

echo $FFHUB_API_KEY

If the key is empty or not set, tell the user:

  1. Go to https://ffhub.io to sign up
  2. Get an API key from Settings > API Keys
  3. Set it: export FFHUB_API_KEY=your_key_here

Do NOT proceed without a valid API key.

API Reference

Base URL: https://api.ffhub.io

Create Task

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 [options] output.ext",
    "with_metadata": true
  }'

Response: {"task_id": "xxx"}

Query Task

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

Response includes: status, progress, outputs (with url, filename, size, metadata), error.

Task Status

  • pendingrunningcompleted or failed

Upload File

If the user provides a local file path, upload it first to get a public URL.

Multipart upload:

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"

Response (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"
}

Use the returned url as the FFmpeg input. Max file size: 1GB. Uploaded files expire in 24 hours.

Workflow

  1. Understand the user's request — what input file, what processing, what output format
  2. Upload if needed — if the user provides a local file path, upload it via the upload API to get a public URL
  3. Build the FFmpeg command — the input MUST be a public URL (http/https)
  4. Submit the task — call the create task API
  5. Poll for result — check task status every 5 seconds until completed or failed (max 60 attempts)
  6. Return the result — show the download URL(s) and file info

FFmpeg Command Rules

  • Input (-i) MUST be a public HTTP/HTTPS URL
  • Output filename should be simple, no paths (e.g., output.mp4)
  • Supported output formats:
    • Video: .mp4, .webm, .mkv, .avi, .mov, .flv
    • Audio: .mp3, .wav, .aac, .ogg, .flac, .m4a
    • Image: .gif, .png, .jpg, .jpeg, .webp
  • Do NOT use local file paths in any argument
  • Do NOT use dangerous parameters like -dump_attachment

Common Recipes

Compress video

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

Convert format

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

Extract audio

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

Resize video

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

Generate thumbnail

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

Trim video

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

Create GIF

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

Polling Script

Use this pattern to poll for task completion:

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: $STATUS, Progress: $PROGRESS%"
  if [ "$STATUS" = "completed" ] || [ "$STATUS" = "failed" ]; then
    echo $RESULT | jq .
    break
  fi
  sleep 5
done

Output Format

When the task completes, present the results clearly:

  • Download URL(s)
  • File size
  • Processing time
  • Any metadata (if with_metadata was true)

If the task fails, show the error message and suggest fixes.

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

cutmv Video Tool

Perform video/audio cutting, format conversion, compression, frame/audio extraction, watermarking, and subtitle addition using FFmpeg.

Registry SourceRecently Updated
0246
Profile unavailable
General

Gladia YouTube Transcription (Free)

Transcribe speech from YouTube videos or audio URLs into text using Gladia API with up to 10 free hours of monthly transcription. Use when: you need to summa...

Registry SourceRecently Updated
1120
Profile unavailable
General

Jimeng Video Generator

即梦AI视频生成工具(带声音版本),通过火山引擎API自动生成带音频的高质量视频。支持文生视频、图生视频,适用于短视频内容创作。

Registry SourceRecently Updated
0601
Profile unavailable