Skip to main content
The Video Creator skill pack enables programmatic video creation and processing workflows. It combines media processing tools with object storage for complete video production pipelines.

Included Services

FFmpeg

Media transcoding, editing, and processing

Remotion

Programmatic video rendering with React

MinIO

S3-compatible object storage for media files

Skills Provided

FFmpeg Process

Capabilities:
  • Transcode video between formats (MP4, WebM, AVI, etc.)
  • Extract frames or frame sequences
  • Merge audio and video tracks
  • Extract audio from video
  • Trim and split video files
  • Get detailed media information
Example Usage:
# Convert video to MP4 with H.264
ffmpeg -i /data/input/video.avi \
  -c:v libx264 -preset medium -crf 23 \
  -c:a aac -b:a 128k \
  /data/output/video.mp4

# Extract frames at 1 FPS
ffmpeg -i /data/input/video.mp4 \
  -vf "fps=1" \
  /data/output/frames/frame_%04d.png

# Extract audio as WAV for Whisper
ffmpeg -i /data/input/video.mp4 \
  -vn -c:a pcm_s16le -ar 16000 -ac 1 \
  /data/output/audio.wav

Remotion Render

Capabilities:
  • Define video compositions in React
  • Render programmatic videos to MP4/WebM
  • Create data-driven videos from JSON
  • Generate video thumbnails
  • Orchestrate multi-scene compositions
  • Add audio tracks and effects
Example Usage:
// Define a composition
import { AbsoluteFill, useCurrentFrame, interpolate } from "remotion";

export const MyVideo: React.FC = () => {
  const frame = useCurrentFrame();
  const opacity = interpolate(frame, [0, 30], [0, 1]);

  return (
    <AbsoluteFill style={{ backgroundColor: "#0a0a0a" }}>
      <h1 style={{ color: "white", opacity }}>
        Hello from OpenClaw
      </h1>
    </AbsoluteFill>
  );
};
# Render to MP4
npx remotion render src/index.ts MyVideo /data/output/video.mp4

# Render with custom data
npx remotion render src/index.ts DataVideo /data/output/data-video.mp4 \
  --props='{"title":"Q4 Results","value":42}'

MinIO Storage

Capabilities:
  • Store and retrieve media files
  • S3-compatible API
  • Bucket management
  • Pre-signed URLs for temporary access
  • Multi-part upload for large files
Example Usage:
# Upload a rendered video
mc cp /data/output/video.mp4 minio/openclaw-videos/

# Generate a shareable link (7 days)
mc share download minio/openclaw-videos/video.mp4 --expire=7d

# List all videos in bucket
mc ls minio/openclaw-videos/

Use Cases

Automated Video Production

Combine Remotion with data sources to create automated video content:
  1. Data Visualization Videos - Convert CSV/JSON data into animated charts
  2. Social Media Content - Generate branded video clips from templates
  3. Tutorial Videos - Programmatically create educational content
  4. Marketing Videos - Dynamic video generation from product data

Media Processing Pipeline

Build end-to-end media workflows:
  1. Upload raw video to MinIO
  2. Extract audio with FFmpeg
  3. Transcribe with Whisper (from Local AI pack)
  4. Generate subtitled video
  5. Store final output in MinIO

Video Thumbnails

Generate preview images and thumbnail sheets:
# Extract single frame as thumbnail
ffmpeg -i /data/input/video.mp4 -ss 00:00:05 -frames:v 1 /data/output/thumb.jpg

# Create 4x4 thumbnail grid
ffmpeg -i /data/input/video.mp4 \
  -vf "select=not(mod(n\,100)),scale=320:180,tile=4x4" \
  -frames:v 1 /data/output/thumbnails.jpg

Example Workflow

Here’s a complete video processing workflow:
# 1. Download source video from MinIO
mc cp minio/raw-footage/source.mp4 /data/input/

# 2. Extract audio for transcription
ffmpeg -i /data/input/source.mp4 \
  -vn -ar 16000 -ac 1 \
  /data/temp/audio.wav

# 3. Transcode to multiple formats
ffmpeg -i /data/input/source.mp4 \
  -c:v libx264 -crf 23 \
  /data/output/video-hq.mp4

ffmpeg -i /data/input/source.mp4 \
  -c:v libvpx-vp9 -crf 30 \
  /data/output/video.webm

# 4. Generate thumbnail
ffmpeg -i /data/input/source.mp4 \
  -ss 00:00:10 -frames:v 1 \
  /data/output/thumbnail.jpg

# 5. Upload all outputs to MinIO
mc cp /data/output/video-hq.mp4 minio/processed/
mc cp /data/output/video.webm minio/processed/
mc cp /data/output/thumbnail.jpg minio/thumbnails/

Configuration

Environment Variables

These variables are automatically configured in your generated stack:
# FFmpeg (CLI tool, no host/port needed)
SHARED_VOLUME=/data

# Remotion (CLI tool, no host/port needed)
REMOTION_OUTPUT_DIR=/data/output/videos

# MinIO
MINIO_HOST=minio
MINIO_PORT=9000
MINIO_ROOT_USER=minioadmin
MINIO_ROOT_PASSWORD=<generated>

Volume Mounts

All services share a common volume for data exchange:
volumes:
  openclaw_data:
    driver: local

Memory Requirements

  • FFmpeg: ~512 MB (more for 4K video)
  • Remotion: ~1 GB during render
  • MinIO: ~512 MB base + storage
Total: ~2 GB minimum

Performance Tips

FFmpeg

  • Use -c copy for operations that don’t need re-encoding (trimming, merging)
  • Set -preset fast or -preset veryfast for faster encoding
  • Use hardware acceleration if available: -hwaccel cuda

Remotion

  • Set concurrency in render options to use multiple CPU cores
  • Render still frames instead of full videos for thumbnails
  • Use <Sequence> to break long videos into manageable segments

MinIO

  • Use multi-part upload for files larger than 100 MB
  • Enable versioning for important media assets
  • Set lifecycle policies to auto-delete old files

Next Steps

Local AI Pack

Add Whisper for video transcription

Services

Explore all available services

Build docs developers (and LLMs) love