返回 Skill 列表
extension
分类: 内容与媒体无需 API Key

ffmpeg-daemon

通过FGP守护进程实现快速音视频处理 - 比每次操作启动ffmpeg快5-20倍。当用户需要转换视频、提取音频、剪辑片段、调整大小、添加水印或转码时使用。触发词包括“转换视频”、“提取音频”、“剪辑视频”、“压缩视频”、“ffmpeg”、“视频编辑”、“转码”。

person作者: jakexiaohubgithub

FGP FFmpeg Daemon

Ultra-fast video/audio processing with persistent FFmpeg instance. 5-20x faster than spawning ffmpeg per command.

Why FGP?

| Operation | FGP Daemon | Direct ffmpeg | Speedup | |-----------|------------|---------------|---------| | Probe metadata | 2-5ms | ~50ms | 10-25x | | Extract frame | 10-30ms | ~100ms | 3-10x | | Trim clip | 15-50ms | ~150ms | 3-10x | | Convert format | 20-100ms overhead | ~200ms overhead | 2-10x |

Persistent daemon eliminates process spawn overhead. Actual encoding time depends on content.

Installation

brew install fast-gateway-protocol/tap/fgp-ffmpeg

# Or
bash ~/.claude/skills/fgp-ffmpeg/scripts/install.sh

Prerequisites

FFmpeg must be installed:

# macOS
brew install ffmpeg

# Ubuntu/Debian
sudo apt install ffmpeg

# Verify
ffmpeg -version

Usage

Probe / Info

# Get video info (duration, resolution, codec, etc.)
fgp ffmpeg info video.mp4

# Get detailed probe data (JSON)
fgp ffmpeg probe video.mp4

# Get duration only
fgp ffmpeg duration video.mp4

# Get resolution
fgp ffmpeg resolution video.mp4

# List streams (video, audio, subtitle tracks)
fgp ffmpeg streams video.mp4

Format Conversion

# Convert to MP4
fgp ffmpeg convert video.avi --to mp4

# Convert to WebM
fgp ffmpeg convert video.mp4 --to webm

# Convert to GIF
fgp ffmpeg convert video.mp4 --to gif

# Convert with specific codec
fgp ffmpeg convert video.mp4 --to webm --codec vp9

# Convert audio only
fgp ffmpeg convert audio.wav --to mp3
fgp ffmpeg convert audio.flac --to aac

Trim / Cut

# Trim from start to end time
fgp ffmpeg trim video.mp4 --start 00:01:30 --end 00:02:45

# Trim with duration
fgp ffmpeg trim video.mp4 --start 00:01:30 --duration 30

# Trim last 60 seconds
fgp ffmpeg trim video.mp4 --last 60

# Trim first 30 seconds
fgp ffmpeg trim video.mp4 --first 30

# Output to specific file
fgp ffmpeg trim video.mp4 --start 10 --end 20 --output clip.mp4

Extract Audio

# Extract audio as MP3
fgp ffmpeg extract-audio video.mp4

# Extract as specific format
fgp ffmpeg extract-audio video.mp4 --format wav
fgp ffmpeg extract-audio video.mp4 --format aac
fgp ffmpeg extract-audio video.mp4 --format flac

# Extract specific audio track
fgp ffmpeg extract-audio video.mp4 --track 1

Extract Frames

# Extract single frame at timestamp
fgp ffmpeg frame video.mp4 --at 00:01:30

# Extract frame as PNG
fgp ffmpeg frame video.mp4 --at 30 --format png

# Extract multiple frames (every N seconds)
fgp ffmpeg frames video.mp4 --every 10

# Extract N frames evenly distributed
fgp ffmpeg frames video.mp4 --count 20

# Extract all frames (warning: large output)
fgp ffmpeg frames video.mp4 --all --output frames/

Resize / Scale

# Resize to specific dimensions
fgp ffmpeg resize video.mp4 --size 1280x720

# Resize by width (maintain aspect)
fgp ffmpeg resize video.mp4 --width 1280

# Resize by height (maintain aspect)
fgp ffmpeg resize video.mp4 --height 720

# Scale by percentage
fgp ffmpeg resize video.mp4 --scale 50%

# Common presets
fgp ffmpeg resize video.mp4 --preset 1080p
fgp ffmpeg resize video.mp4 --preset 720p
fgp ffmpeg resize video.mp4 --preset 480p

Compress

# Compress with default settings
fgp ffmpeg compress video.mp4

# Compress to target size
fgp ffmpeg compress video.mp4 --target-size 50MB

# Compress with quality preset
fgp ffmpeg compress video.mp4 --quality medium  # low, medium, high
fgp ffmpeg compress video.mp4 --crf 28  # 0-51, higher = more compression

# Compress for web
fgp ffmpeg compress video.mp4 --preset web

# Two-pass encoding for better quality
fgp ffmpeg compress video.mp4 --two-pass --target-size 100MB

Merge / Concat

# Concatenate videos
fgp ffmpeg concat video1.mp4 video2.mp4 video3.mp4 --output merged.mp4

# Concat from file list
fgp ffmpeg concat --list files.txt --output merged.mp4

# Merge video and audio
fgp ffmpeg merge video.mp4 audio.mp3 --output combined.mp4

# Replace audio track
fgp ffmpeg merge video.mp4 newtrack.mp3 --replace-audio

Watermark / Overlay

# Add image watermark
fgp ffmpeg watermark video.mp4 --image logo.png

# Position watermark
fgp ffmpeg watermark video.mp4 --image logo.png --position top-right
fgp ffmpeg watermark video.mp4 --image logo.png --position bottom-left
fgp ffmpeg watermark video.mp4 --image logo.png --x 10 --y 10

# Watermark with opacity
fgp ffmpeg watermark video.mp4 --image logo.png --opacity 0.5

# Text watermark
fgp ffmpeg watermark video.mp4 --text "© 2024" --position bottom-right

Speed / Slow-mo

# Speed up 2x
fgp ffmpeg speed video.mp4 --factor 2

# Slow motion 0.5x
fgp ffmpeg speed video.mp4 --factor 0.5

# Speed up with frame interpolation (smoother)
fgp ffmpeg speed video.mp4 --factor 2 --interpolate

Audio Operations

# Adjust volume
fgp ffmpeg volume video.mp4 --level 1.5  # 150%
fgp ffmpeg volume video.mp4 --db +6      # +6dB

# Normalize audio
fgp ffmpeg normalize video.mp4

# Remove audio
fgp ffmpeg mute video.mp4

# Fade audio
fgp ffmpeg fade video.mp4 --audio-in 2 --audio-out 2

Effects

# Rotate video
fgp ffmpeg rotate video.mp4 --degrees 90
fgp ffmpeg rotate video.mp4 --degrees 180

# Flip video
fgp ffmpeg flip video.mp4 --horizontal
fgp ffmpeg flip video.mp4 --vertical

# Crop video
fgp ffmpeg crop video.mp4 --width 1280 --height 720 --x 100 --y 50

# Add fade in/out
fgp ffmpeg fade video.mp4 --in 2 --out 2

# Convert to black & white
fgp ffmpeg filter video.mp4 --grayscale

# Blur video
fgp ffmpeg filter video.mp4 --blur 5

# Stabilize shaky video
fgp ffmpeg stabilize video.mp4

Thumbnails

# Generate thumbnail grid
fgp ffmpeg thumbnails video.mp4 --grid 4x4

# Generate thumbnail at specific time
fgp ffmpeg thumbnail video.mp4 --at 00:01:00

# Generate thumbnail from best frame
fgp ffmpeg thumbnail video.mp4 --auto

Subtitles

# Burn subtitles into video
fgp ffmpeg subtitles video.mp4 --file subs.srt

# Extract subtitles
fgp ffmpeg extract-subs video.mp4

# Add subtitle track (soft subs)
fgp ffmpeg add-subs video.mp4 --file subs.srt --output video_with_subs.mkv

Batch Processing

# Convert all videos in folder
fgp ffmpeg batch convert ./videos --to mp4

# Compress all videos
fgp ffmpeg batch compress ./videos --quality medium

# Resize all videos
fgp ffmpeg batch resize ./videos --preset 720p

# Custom batch with pattern
fgp ffmpeg batch convert ./videos/*.avi --to mp4

Streaming / HLS

# Create HLS stream
fgp ffmpeg hls video.mp4 --output stream/

# Create HLS with multiple qualities
fgp ffmpeg hls video.mp4 --qualities 1080p,720p,480p --output stream/

# Create DASH stream
fgp ffmpeg dash video.mp4 --output stream/

Available Commands

| Command | Description | Example | |---------|-------------|---------| | info | Get video info | fgp ffmpeg info video.mp4 | | probe | Detailed probe | fgp ffmpeg probe video.mp4 | | convert | Format conversion | fgp ffmpeg convert video.avi --to mp4 | | trim | Cut video segment | fgp ffmpeg trim video.mp4 --start 10 --end 30 | | extract-audio | Extract audio | fgp ffmpeg extract-audio video.mp4 | | frame | Extract frame | fgp ffmpeg frame video.mp4 --at 30 | | resize | Scale video | fgp ffmpeg resize video.mp4 --width 1280 | | compress | Reduce file size | fgp ffmpeg compress video.mp4 --quality medium | | concat | Join videos | fgp ffmpeg concat a.mp4 b.mp4 | | watermark | Add overlay | fgp ffmpeg watermark video.mp4 --image logo.png | | speed | Change speed | fgp ffmpeg speed video.mp4 --factor 2 | | thumbnails | Generate thumbnails | fgp ffmpeg thumbnails video.mp4 --grid 4x4 |

Output Formats

Video

  • MP4 (H.264/H.265)
  • WebM (VP8/VP9/AV1)
  • MOV
  • AVI
  • MKV
  • GIF
  • WEBP (animated)

Audio

  • MP3
  • AAC
  • WAV
  • FLAC
  • OGG
  • OPUS

Images

  • PNG
  • JPEG
  • WEBP
  • BMP

Example Workflows

Prepare video for web

# Compress and resize for web
fgp ffmpeg compress video.mp4 --preset web --output web.mp4

Create social media clip

# Trim, resize for Instagram, add watermark
fgp ffmpeg trim video.mp4 --start 0 --duration 60 | \
fgp ffmpeg resize --preset 1080x1080 | \
fgp ffmpeg watermark --text "@myhandle" --position bottom-right

Extract podcast audio

# Extract audio from video podcast
fgp ffmpeg extract-audio recording.mp4 --format mp3 --output podcast.mp3
fgp ffmpeg normalize podcast.mp3

Create video thumbnails for gallery

# Generate thumbnail grid for all videos
for f in *.mp4; do
  fgp ffmpeg thumbnails "$f" --grid 3x3 --output "thumbs/${f%.mp4}.jpg"
done

Batch convert legacy formats

fgp ffmpeg batch convert ./archive --pattern "*.avi" --to mp4 --quality high

Troubleshooting

FFmpeg not found

Error: ffmpeg not found in PATH

Install FFmpeg: brew install ffmpeg or apt install ffmpeg

Unsupported codec

Error: Encoder libx265 not found

Your FFmpeg build may not include all codecs. Try: brew reinstall ffmpeg --with-all-codecs

Out of memory

Error: Cannot allocate memory

For large files, use streaming mode: fgp ffmpeg convert large.mp4 --to webm --stream

Permission denied

Error: Permission denied

Check file permissions and output directory access.

Architecture

  • FFmpeg subprocess with persistent pipe
  • UNIX socket at ~/.fgp/services/ffmpeg/daemon.sock
  • Job queue for batch operations
  • Progress streaming via socket
  • Hardware acceleration (VideoToolbox on macOS, NVENC on Linux)