Scenario: local recording only (no streaming). Source — macOS Screen Capture (Apple ScreenCaptureKit), full-display capture.
If you were handed this gist, apply the settings below to the user's OBS config:
~/Library/Application Support/obs-studio/basic/profiles/<Profile>/basic.ini~/Library/Application Support/obs-studio/basic/scenes/<SceneCollection>.json
Before editing any config file:
- Confirm OBS is closed (
pgrep -x OBS) — otherwise changes get overwritten when the app quits. - Back up both files (
cp file file.bak-$(date +%Y%m%d-%H%M%S)). - Update the values below, leaving the rest of the file untouched.
- Validate the JSON (
python3 -c "import json; json.load(open(path))") after editing the scene file.
| Setting | Value | Why |
|---|---|---|
RecQuality |
HQ |
"Small" compresses hard to shrink the file at the cost of quality. HQ = visually lossless, and the hardware encoder still keeps the file size reasonable. Never leave this on Small when recording quality matters. |
RecEncoder |
apple_h264 |
Hardware encoder via the Apple Silicon media engine — near-zero CPU/GPU load, unlike software x264. |
RecFormat2 |
mkv (or hybrid_mov) |
mkv survives a crash/power loss mid-recording better than mp4. |
RecTracks |
1 |
Single audio track, unless multitrack is needed. |
| Setting | Value | Why |
|---|---|---|
BaseCX / BaseCY |
1920 / 1080 |
Full HD canvas — good balance of sharpness vs. file size for local recording on a Retina display with a hardware encoder. (Bump to 2560x1440 if you need max detail on small text — files will be noticeably larger.) |
OutputCX / OutputCY |
1920 / 1080 |
No extra rescale (= Base) to avoid additional scaling passes. |
FPSCommon |
60 (FPSType=0) |
The hardware encoder handles 60fps fine on M1 Pro. |
ScaleType |
lanczos |
Sharper downscale algorithm from the Retina display resolution into the canvas than bicubic/bilinear. |
ColorFormat |
NV12 |
Default, fine. |
ColorSpace |
709 |
Standard SDR. |
Critical: the screen source must fill the entire canvas, with no offset and no manual extra scaling. If scale.x/scale.y aren't 1.0, or pos.x/pos.y aren't 0, or bounds_type is 0 — the picture will be shrunk and offset, which looks "blurry and too small".
Correct values for the screen-capture scene item:
"bounds_type": 2,
"bounds_align": 0,
"pos": { "x": 0.0, "y": 0.0 },
"scale": { "x": 1.0, "y": 1.0 },
"bounds": { "x": 1920.0, "y": 1080.0 }bounds_type: 2 = "Fit to screen" (BOUNDS_SCALE_INNER) — scales the source to fit the canvas without distorting the aspect ratio (may leave thin bars if the display isn't exactly 16:9), unlike stretch, which distorts the image.
If black bars appear after applying this due to a display-aspect-ratio mismatch with the 16:9 canvas — that's expected, not a bug; the alternative is setting BaseCX/BaseCY to match the display's actual aspect ratio.
RecEncoder=apple_h264— already the optimal hardware encoder choice for Apple Silicon; don't switch to software x264 for local recording.- Stream bitrate (
VBitrate=6000,[Stream1]) — only affects streaming, not recording; only touch it if the user starts streaming.
- MacBook Pro, Apple M1 Pro (8 performance + 2 efficiency cores), 32GB RAM
- Built-in display: Retina 3456x2234