av-studio

$npx mdskill add Tibsfox/gsd-skill-creator/av-studio

Produce audio/video content with multi-track editing and publishing.

  • Creates YouTube-ready videos from screen recordings and raw footage.
  • Depends on ffmpeg for encoding and OBS for live streaming.
  • Recommends production templates based on output format and platform.
  • Delivers rendered video files or direct YouTube uploads.

SKILL.md

.github/skills/av-studioView on GitHub ↗
---
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:[email protected]:\
  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:[email protected]: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

More from Tibsfox/gsd-skill-creator

SkillDescription
3d-interaction-designDesign heuristics for three-dimensional interaction — input modalities (6DoF controllers, gaze, gesture, voice), selection and manipulation techniques (ray-cast, virtual hand, go-go, world-in-miniature), navigation (teleport, continuous, redirected walking), and feedback loops (haptic, audio, visual). Covers Fitts' law in 3D, discoverability vs affordance, safe-zone design, and comfort/simulator sickness mitigation. Use when designing VR/AR interactions, immersive walkthroughs, or any input system where the user's body is the controller.
accessibility-patternsProvides web accessibility best practices for semantic HTML, ARIA, keyboard navigation, color contrast, and screen reader patterns. Use when building UI components, reviewing accessibility, or when user mentions 'a11y', 'accessibility', 'ARIA', 'screen reader', 'keyboard navigation', 'WCAG'.
active-listeningActive listening techniques for effective communication. Covers attending behaviors, paraphrasing, reflective listening, clarifying questions, empathic response, barriers to listening, listening in conflict, and cross-cultural listening. Use when building listening skills, improving understanding in conversation, mediating disputes, or analyzing communication breakdowns.
adversarial-pr-reviewAdversarial spec-compliance PR review — cross-references diffs against approved specs, verifies runtime claims against source, detects competing PRs, audits scope/convention compliance. Use before merging.
agile-methodsAgile and Lean software development methodologies for iterative, adaptive project execution. Covers Scrum (roles, ceremonies, artifacts), Kanban (WIP limits, flow metrics), XP (TDD, pair programming, CI), SAFe overview, Lean Software Development (Poppendieck's 7 principles), user stories (INVEST criteria), estimation via story points and velocity, and the Agile Manifesto's values and principles. Includes Cynefin framework for methodology selection and GSD's relationship to Agile as a structured Lean variant.
algebraic-reasoningSymbolic manipulation, equation solving, and algebraic structures for mathematical reasoning. Covers distributive law, factoring, completing the square, linear through polynomial equation solving, systems of equations (substitution, elimination, Gaussian elimination, matrix methods), algebraic structures (groups, rings, fields), modular arithmetic, polynomial theory, and inequalities. Use when solving equations, simplifying expressions, working with algebraic structures, or performing symbolic manipulation.
algorithmic-awarenessUnderstanding how algorithmic systems shape what users see, know, and do -- from recommendation feeds to search ranking to credit scoring to hiring software. Covers the mechanics of recommendation systems, algorithmic bias and its sources, personalization's effects on information diets, opacity and accountability, AI limitations (hallucination, confident wrongness), and the human-in-the-loop question. Use when a learner needs to think critically about why particular content reached them.
algorithms-data-structuresAlgorithms and data structures from first principles through advanced analysis. Covers sorting (bubble, insertion, selection, merge, quick, heap, radix), searching (linear, binary, BFS, DFS, Dijkstra, A*), fundamental data structures (arrays, linked lists, stacks, queues, hash tables, trees, heaps, graphs, tries), complexity analysis (Big-O, Big-Omega, Big-Theta, amortized), recurrence relations, and algorithm design paradigms (divide-and-conquer, greedy, dynamic programming, backtracking). Use when analyzing, selecting, implementing, or comparing algorithms and data structures.
aminet-browserAminet search and browse: full-text search, category tree navigation, architecture filtering, package detail, and curated collections. Use when searching, browsing, or managing package collections.
aminet-emulatorFS-UAE emulator configuration and launch: hardware profiles, ROM management, WHDLoad integration, config generation, and state snapshots. Use when configuring emulation, managing ROMs, or launching Amiga software.