Skip to content
Back to skills

Av Studio

ASecurity

Audio/video studio production — multi-track editing, color grading, motion graphics, compositing, live streaming, screen recording, YouTube publishing.

  • 666 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added June 3, 2026
ai-agentsgobash

Works with

  • cursor
  • cli

Security analysis

A100/100

Scanned June 3, 2026

npx -y skills add majiayu000/claude-skill-registry --skill av-studio --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Av Studio?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Av Studio
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/majiayu000-av-studio/badge)](https://www.skillsdirectory.com/skills/majiayu000-av-studio)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: av-studio
description: Audio/video studio production — multi-track editing, color grading, motion graphics, compositing, live streaming, screen recording, YouTube publishing.
activationKeywords:
  - video editing
  - color grading
  - color correction
  - motion graphics
  - compositing
  - green screen
  - chroma key
  - screen recording
  - screencast
  - OBS
  - streaming
  - live stream
  - YouTube upload
  - YouTube publish
  - render
  - timeline
  - keyframe
  - transition
  - fade
  - crossfade
  - title card
  - lower third
  - intro
  - outro
  - B-roll
  - cutaway
  - jump cut
  - montage
  - timelapse
  - slow motion
  - stabilization
  - aspect ratio
  - letterbox
  - pip
  - picture in picture
type: skill
category: media
status: stable
origin: tibsfox
modified: false
first_seen: 2026-04-11
first_path: examples/skills/media/av-studio/SKILL.md
superseded_by: null
---
# AV Studio Production Skill

*Combines ffmpeg-media (codecs/formats), audio-engineering (mastering/mixing), and gource-visualizer (repo visualization) into a unified production toolkit for video content creation, live streaming, and multimedia publishing.*

## Production Templates

### YouTube Video Pipeline
```bash
# 1. Screen recording (with audio)
ffmpeg -f x11grab -video_size 1920x1080 -framerate 30 -i :0.0 \
  -f pulse -i default \
  -c:v libx264 -preset ultrafast -crf 18 \
  -c:a aac -b:a 192k \
  raw_recording.mkv

# 2. Trim to content
ffmpeg -ss 00:00:05 -i raw_recording.mkv -to 00:45:00 -c copy trimmed.mkv

# 3. Add intro + outro
cat > concat.txt << EOF
file 'intro.mp4'
file 'trimmed.mkv'
file 'outro.mp4'
EOF
ffmpeg -f concat -safe 0 -i concat.txt -c:v libx264 -c:a aac assembled.mp4

# 4. Color grade + normalize audio
ffmpeg -i assembled.mp4 \
  -vf "eq=brightness=0.04:contrast=1.1:saturation=1.15,unsharp=5:5:0.5" \
  -af "loudnorm=I=-14:TP=-1:LRA=11" \
  -c:v libx264 -preset medium -crf 20 -pix_fmt yuv420p \
  -c:a aac -b:a 192k \
  -movflags +faststart \
  final.mp4

# 5. Generate thumbnail
ffmpeg -i final.mp4 -ss 00:00:30 -frames:v 1 \
  -vf "scale=1280:720" thumbnail.jpg
```

### Presentation Recording
```bash
# Record screen + webcam PiP
ffmpeg -f x11grab -video_size 1920x1080 -framerate 30 -i :0.0 \
  -f v4l2 -video_size 320x240 -framerate 30 -i /dev/video0 \
  -f pulse -i default \
  -filter_complex "[0:v][1:v]overlay=W-w-20:H-h-20[out]" \
  -map "[out]" -map 2:a \
  -c:v libx264 -preset fast -crf 22 \
  -c:a aac -b:a 128k \
  presentation.mp4
```

### Tutorial / Screencast
```bash
# Record with mouse cursor highlight
ffmpeg -f x11grab -video_size 1920x1080 -framerate 30 \
  -draw_mouse 1 -i :0.0 \
  -f pulse -i default \
  -c:v libx264 -preset fast -crf 20 \
  -c:a aac -b:a 128k \
  tutorial.mp4

# Add chapter markers (for YouTube)
ffmpeg -i tutorial.mp4 -c copy \
  -metadata:c:0 title="Introduction" \
  -metadata:c:0 timebase=1/1000 \
  chaptered.mp4
```

## Color Grading

### LUT Application
```bash
# Apply a 3D LUT (cube format)
ffmpeg -i input.mp4 -vf "lut3d=cinematic.cube" graded.mp4

# Apply with blend (50% strength)
ffmpeg -i input.mp4 -vf "split[a][b];[b]lut3d=cinematic.cube[c];[a][c]blend=all_opacity=0.5" graded.mp4
```

### Manual Color Correction
```bash
# Lift/Gamma/Gain (shadows/midtones/highlights)
ffmpeg -i input.mp4 -vf "\
  colorbalance=rs=0.1:gs=-0.05:bs=0.15:\
  rm=0:gm=0:bm=0:\
  rh=-0.05:gh=0:bh=0.05" \
  corrected.mp4

# White balance correction (warm up)
ffmpeg -i input.mp4 -vf "colortemperature=temperature=6500" warm.mp4

# Curves (S-curve for contrast)
ffmpeg -i input.mp4 -vf "curves=master='0/0 0.25/0.15 0.5/0.5 0.75/0.85 1/1'" contrast.mp4
```

## Motion Graphics

### Text Animations
```bash
# Fade-in title card (2 seconds)
ffmpeg -i input.mp4 -vf "\
  drawtext=text='Episode Title':\
  fontsize=72:fontcolor=white@0.0:\
  x=(w-text_w)/2:y=(h-text_h)/2:\
  alpha='if(lt(t,1),t,if(lt(t,3),1,if(lt(t,4),4-t,0)))'" \
  titled.mp4

# Lower third (name + title)
ffmpeg -i input.mp4 -vf "\
  drawbox=x=0:y=ih-120:w=500:h=120:color=black@0.7:t=fill,\
  drawtext=text='Jane Doe':fontsize=36:fontcolor=white:x=20:y=ih-110,\
  drawtext=text='Software Engineer':fontsize=24:fontcolor=0xcccccc:x=20:y=ih-65" \
  lower_third.mp4
```

### Transitions
```bash
# Crossfade between two clips (1 second overlap)
ffmpeg -i clip1.mp4 -i clip2.mp4 \
  -filter_complex "\
  [0:v]trim=0:10,setpts=PTS-STARTPTS[v0];\
  [1:v]trim=0:10,setpts=PTS-STARTPTS[v1];\
  [v0][v1]xfade=transition=fade:duration=1:offset=9[vout];\
  [0:a]atrim=0:10,asetpts=PTS-STARTPTS[a0];\
  [1:a]atrim=0:10,asetpts=PTS-STARTPTS[a1];\
  [a0][a1]acrossfade=d=1[aout]" \
  -map "[vout]" -map "[aout]" crossfade.mp4

# Available xfade transitions:
# fade, wipeleft, wiperight, wipeup, wipedown, slideleft, slideright,
# slideup, slidedown, circlecrop, circleopen, circleclose, dissolve,
# pixelize, diagtl, diagtr, diagbl, diagbr, hlslice, hrslice,
# vuslice, vdslice, hblur, fadegrays, squeezeh, squeezev
```

### Picture-in-Picture
```bash
# Webcam overlay (bottom right, 25% size)
ffmpeg -i screen.mp4 -i webcam.mp4 \
  -filter_complex "\
  [1:v]scale=iw/4:ih/4[pip];\
  [0:v][pip]overlay=W-w-20:H-h-20" \
  -c:v libx264 -crf 22 -c:a aac pip.mp4

# Animated PiP (slides in from right)
ffmpeg -i screen.mp4 -i webcam.mp4 \
  -filter_complex "\
  [1:v]scale=320:240[pip];\
  [0:v][pip]overlay=x='if(lt(t,1),W,W-w-20)':y=H-h-20" \
  animated_pip.mp4
```

## Video Stabilization
```bash
# Two-pass stabilization with vidstab
# Pass 1: analyze
ffmpeg -i shaky.mp4 -vf vidstabdetect=shakiness=5:accuracy=15 -f null -
# Pass 2: apply
ffmpeg -i shaky.mp4 -vf vidstabtransform=smoothing=10:input=transforms.trf stabilized.mp4
```

## Timelapse / Slow Motion
```bash
# Timelapse from photos (one frame per image)
ffmpeg -framerate 30 -pattern_type glob -i 'photos/*.jpg' \
  -c:v libx264 -crf 18 -pix_fmt yuv420p timelapse.mp4

# Speed ramp (normal → 4x → normal)
ffmpeg -i input.mp4 -filter_complex "\
  [0:v]trim=0:10,setpts=PTS-STARTPTS[v1];\
  [0:v]trim=10:30,setpts=0.25*(PTS-STARTPTS)[v2];\
  [0:v]trim=30:40,setpts=PTS-STARTPTS[v3];\
  [v1][v2][v3]concat=n=3:v=1:a=0[out]" \
  -map "[out]" speed_ramp.mp4

# Smooth slow motion (frame interpolation with minterpolate)
ffmpeg -i input.mp4 -vf "minterpolate=fps=120:mi_mode=mci:mc_mode=aobmc:vsbmc=1" \
  -r 30 slowmo.mp4
```

## Live Streaming
```bash
# Stream to YouTube via RTMP
ffmpeg -f x11grab -video_size 1920x1080 -framerate 30 -i :0.0 \
  -f pulse -i default \
  -c:v libx264 -preset veryfast -maxrate 4500k -bufsize 9000k \
  -pix_fmt yuv420p -g 60 \
  -c:a aac -b:a 128k -ar 44100 \
  -f flv "rtmp://a.rtmp.youtube.com/live2/YOUR_STREAM_KEY"

# Stream to Twitch
ffmpeg -f x11grab -video_size 1920x1080 -framerate 30 -i :0.0 \
  -f pulse -i default \
  -c:v libx264 -preset veryfast -maxrate 6000k -bufsize 12000k \
  -pix_fmt yuv420p -g 60 \
  -c:a aac -b:a 160k -ar 44100 \
  -f flv "rtmp://live.twitch.tv/app/YOUR_STREAM_KEY"
```

## Aspect Ratios

| Format | Ratio | Resolution | Use |
|--------|-------|-----------|-----|
| Widescreen | 16:9 | 1920x1080 | YouTube, presentations |
| Vertical | 9:16 | 1080x1920 | TikTok, Reels, Shorts |
| Square | 1:1 | 1080x1080 | Instagram feed |
| Ultrawide | 21:9 | 2560x1080 | Cinematic |
| Classic | 4:3 | 1440x1080 | Legacy, some webcams |
| Cinema | 2.39:1 | 2048x858 | Film standard |

### Letterboxing / Pillarboxing
```bash
# Add letterbox (16:9 → 21:9 cinematic bars)
ffmpeg -i input.mp4 -vf "pad=iw:iw*9/21:(ow-iw)/2:(oh-ih)/2:black" cinematic.mp4

# Convert vertical to horizontal (blur background)
ffmpeg -i vertical.mp4 -filter_complex "\
  [0:v]scale=1920:1080:force_original_aspect_ratio=increase,crop=1920:1080,boxblur=20[bg];\
  [0:v]scale=-1:1080[fg];\
  [bg][fg]overlay=(W-w)/2:0" \
  horizontal_blurbg.mp4
```

## YouTube Publishing Checklist

1. **Video specs:** H.264, 1080p+, -14 LUFS audio, thumbnail 1280x720
2. **faststart:** `-movflags +faststart` for progressive download
3. **Pixel format:** `-pix_fmt yuv420p` for compatibility
4. **Chapters:** Include in description (00:00 Intro, 01:30 Topic, etc.)
5. **Thumbnail:** High-contrast, readable text at small sizes, faces perform well
6. **Subtitles:** SRT file or burn-in with `drawtext` filter
7. **End screen:** Last 20 seconds reserved for cards/end screen elements

## Related Skills & Agents

| Asset | Role |
|-------|------|
| `ffmpeg-media` skill | Codec/format foundation |
| `audio-engineering` skill | Audio mastering/mixing |
| `ffmpeg-processor` agent | Format conversion |
| `audio-engineer` agent | Audio mastering |
| `podcast-producer` agent | Podcast pipeline |
| `music-analyzer` agent | Audio analysis |
| `gource-visualizer` skill | Repository visualization → video |

## When This Skill Activates

- Video editing, trimming, concatenation with transitions
- Color grading and correction
- Motion graphics, titles, lower thirds
- Screen recording and screencasts
- Live streaming (YouTube, Twitch)
- Picture-in-picture compositing
- Video stabilization
- Timelapse and slow motion
- Aspect ratio conversion
- YouTube video publishing workflow

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.