Blog

Tutorials · Mar 6, 2026 · 7 min read

ScreenCaptureKit Audio & Microphone Recording on Mac (Developer Guide)

Learn how ScreenCaptureKit handles audio capture, microphone input, and system sound recording on macOS. Practical guide for developers and power users.

What Is ScreenCaptureKit?

ScreenCaptureKit is Apple's native framework for capturing screen content on macOS (introduced in macOS 12.3). It replaced the older CGWindowList and AVCaptureScreenInput APIs with a modern, high-performance alternative.

For developers building screen recording apps — or power users curious about how Mac screen recorders work — ScreenCaptureKit is the foundation that makes features like system audio capture, per-app audio, and low-latency recording possible.


ScreenCaptureKit Audio Capture

One of the biggest improvements ScreenCaptureKit brought is native system audio capture. Before ScreenCaptureKit, recording system audio on macOS required third-party audio drivers (like Soundflower or BlackHole) or kernel extensions.

How Audio Capture Works

ScreenCaptureKit provides audio capture through SCStreamConfiguration:

  • System audio — Captures all audio output from macOS, or audio from specific apps
  • Microphone audio — Captures input from any connected microphone
  • Both simultaneously — Record system audio and microphone at the same time

Key Audio Configuration Options

  • capturesAudio — Enable or disable audio capture
  • excludesCurrentProcessAudio — Prevent the recording app's own audio from being captured
  • sampleRate — Set audio sample rate (default 48000 Hz)
  • channelCount — Mono or stereo capture

Per-App Audio Filtering

ScreenCaptureKit can capture audio from specific applications only. This means you can:

  • Record a video call without capturing your music player
  • Capture a game's audio without system notifications
  • Record a browser tab's audio while excluding everything else

This is done by specifying an SCContentFilter with the desired windows or applications.


ScreenCaptureKit Microphone Recording

Microphone capture in ScreenCaptureKit works alongside screen and system audio capture:

  • Select any available audio input device
  • Mix microphone audio with system audio in a single stream
  • Apply separate volume controls to mic and system audio
  • Record at configurable sample rates and channel counts

Common Microphone Setup

For tutorial and demo recording, the typical configuration is:

  1. Enable system audio capture (to record app sounds)
  2. Enable microphone capture (for narration)
  3. Set excludesCurrentProcessAudio = true (to avoid feedback)
  4. Use 48kHz sample rate for broadcast quality

Building a ScreenCaptureKit Demo App

If you are building a screen recording app with ScreenCaptureKit, here is the typical architecture:

1. Request Permission

macOS requires screen recording permission. Use SCShareableContent to request access and enumerate available content (displays, windows, apps).

2. Create a Content Filter

Define what to capture:

  • Display capture — Entire screen
  • Window capture — Specific app window
  • App-based filter — Include or exclude specific apps

3. Configure the Stream

Set up SCStreamConfiguration with:

  • Resolution and frame rate for video
  • Audio settings (system audio, microphone, sample rate)
  • Pixel format and color space

4. Start Capture

Create an SCStream with your filter and configuration, add output handlers, and start capturing frames and audio buffers.

5. Process Output

Handle CMSampleBuffer objects in your stream output delegate:

  • Video frames for display or encoding
  • Audio buffers for mixing and recording

How Creavit Studio Uses ScreenCaptureKit

Creavit Studio is built on top of ScreenCaptureKit for all recording capabilities on macOS:

  • System audio recording — Uses ScreenCaptureKit's native audio capture (no third-party audio drivers needed)
  • Microphone recording — Captures mic input alongside system audio
  • Window and screen capture — High-performance capture of any window or full screen
  • Per-app audio — Records audio from specific apps when needed
  • Low latency — ScreenCaptureKit's hardware-accelerated pipeline ensures smooth capture even at 4K 60fps

This means Creavit Studio users get native audio capture quality without installing extra software or dealing with audio routing complexity.


ScreenCaptureKit vs Older APIs

FeatureScreenCaptureKitCGWindowListAVCaptureScreen
System AudioNativeNoNo
Per-App AudioYesNoNo
PerformanceHardware acceleratedCPU-basedGPU-assisted
Frame RateUp to 240fpsLimitedUp to 60fps
Window CaptureNative filterManual compositionLimited
macOS Version12.3+10.0+10.7+
MicrophoneIntegratedSeparate APISeparate API

Common Issues and Solutions

No Audio in Recording

  • Check that capturesAudio is set to true
  • Verify the app has screen recording permission (audio requires this)
  • Ensure excludesCurrentProcessAudio is not accidentally excluding wanted audio

Microphone Not Captured

  • Request microphone permission separately from screen recording permission
  • Verify the correct audio input device is selected
  • Check that the microphone is not being used exclusively by another app

Audio Sync Issues

  • Use the same sample rate for system audio and microphone
  • Process audio buffers in the same output queue as video for sync
  • Use presentation timestamps from CMSampleBuffer for alignment

Resources for Developers

  • Apple's ScreenCaptureKit documentation covers the full API surface
  • WWDC sessions on ScreenCaptureKit (2022, 2023) walk through implementation
  • Creavit Studio demonstrates what a production ScreenCaptureKit app can achieve

If you are building a screen recording app on macOS, ScreenCaptureKit is the right foundation. It handles the complex audio routing and screen capture that previously required kernel extensions and workarounds.

See ScreenCaptureKit in action with Creavit Studio ->

Learn about Mac screen recording features ->