One-click 4K / 60fps game recorder for Windows with game audio + mic.
It drives a genuine OBS Studio install in the background
over its WebSocket API, using your GPU hardware encoder (NVIDIA NVENC by
default), and saves a single .mp4 per session. You never have to touch the OBS
window — the scripts start it minimized to the tray and control it for you.
Built because Windows' gdigrab/GDI screen capture tops out around ~13fps at 4K —
real OBS + NVENC is what actually delivers smooth 4K60.
You start and stop it yourself (before/after a game). No automatic game-detection by design — you're in control.
- Windows with Windows PowerShell 5.1 (built in).
- OBS Studio 28+ — either the normal installer or
scoop install obs-studio. (obs-websocket is bundled with OBS.) - A supported hardware encoder: NVIDIA (NVENC), Intel (QuickSync), or
AMD (AMF). Software
x264also works on any GPU.
git clone https://github.com/appsmypass/obs-4k60-recorder.git
cd obs-4k60-recorderClose OBS if it's open, then run:
powershell -ExecutionPolicy Bypass -File .\Setup-OBS.ps1This creates an OBS profile + scene collection called GameRec, enables the
WebSocket server on 127.0.0.1:4455, and auto-detects your primary monitor's
native resolution at 60fps with NVENC. Override anything:
.\Setup-OBS.ps1 -Fps 30 # 30fps instead of 60
.\Setup-OBS.ps1 -Width 1920 -Height 1080 # force a resolution
.\Setup-OBS.ps1 -Encoder qsv # Intel QuickSync
.\Setup-OBS.ps1 -Encoder amd # AMD AMF
.\Setup-OBS.ps1 -Encoder x264 # software encode (any GPU)(Or just double-click launcher\Setup.cmd.)
Double-click the launchers in launcher\, or run from a terminal:
| Launcher | Command | What it does |
|---|---|---|
| Start-Recording.cmd | GameRec.ps1 start |
Starts OBS if needed, then begins recording. |
| Stop-Recording.cmd | GameRec.ps1 stop |
Stops and saves the MP4 (prints the path). |
| Toggle-Recording.cmd | GameRec.ps1 toggle |
Start if idle, stop+save if recording. |
| Recording-Status.cmd | GameRec.ps1 status |
Shows recording state + output folder. |
Videos are saved to %USERPROFILE%\Downloads\recordings\, one MP4 per session:
H.264 (hardware-encoded) video + 48 kHz AAC stereo audio.
- Video: your primary display (Display Capture) plus a Game Capture source for
fullscreen games. Both live in the
Gamescene. - Audio: Desktop Audio (game/system sound) and Mic, mixed onto the recorded track. Created automatically so recordings are never silent.
GameRec.ps1 ──WebSocket──► OBS Studio (tray) ──NVENC──► .mp4
▲ ▲
launcher\*.cmd profile "GameRec" (Setup-OBS.ps1)
OBS-Control.ps1 is a tiny obs-websocket 5.x client written in pure PowerShell
(no external modules). GameRec.ps1 uses it to ensure the capture/audio sources
exist and to start/stop recording.
| File | Purpose |
|---|---|
Setup-OBS.ps1 |
One-time OBS profile/scene/websocket configuration. |
GameRec.ps1 |
Start / stop / toggle / status control. |
OBS-Control.ps1 |
obs-websocket client library. |
launcher\*.cmd |
Double-click launchers. |
- "OBS Studio not found" — install it, then re-run
Setup-OBS.ps1. - "websocket port never came up" — in OBS: Tools → WebSocket Server Settings
→ Enable, port
4455, no password (or re-runSetup-OBS.ps1with OBS closed). - No audio — make sure a playback + mic device are set as Default in Windows Sound settings; the recorder uses the default devices.
- Wrong monitor — Display Capture picks the Primary monitor; set your game's screen as primary in Windows Display settings.
Recording at 4K60 is only half the job — the other half is having the headroom to actually play well while it happens.
- gamemode — one command to close background bloat, pause Windows Update/Search indexing and switch power plans before you record, and one command to put it all back afterwards. It knows not to touch a running OBS or ffmpeg process.
- clipsort — after a month of
recording you will have hundreds of files called
2026-09-08 14-22-11.mkv. This sorts them intoGame\YYYY-MM\folders, and knows to leave a clip alone while OBS is still writing to it. - miccheck — the audio half of the same problem. Finds the sample-rate mismatch that drifts your audio out of sync, a muted mic, and the Windows ducking setting that quietly drops your game audio by 80% whenever anything opens the microphone. Read-only.
- framecheck — before you spend an evening editing, check the recording actually came out right. Finds variable framerate, duplicate frames, bitrate starvation and audio drift, and names the OBS setting behind each one. Read-only.
- diskrate — framecheck tells you frames were dropped; this tells you whether the drive was why. Measures the worst single second of sustained write speed, not the peak, and defeats the Windows write cache — a naive benchmark overstated a real NVMe by 3.5x.
- gpucheck — on a laptop Windows silently decides which GPU each app gets, and sometimes gives one app both. Shows which adapter your game, OBS and browser are actually running on, and flags the process whose frames are being copied across the bus every frame. Read-only.
- cpuclock — Windows documents its
own
CurrentClockSpeedas unreliable, and it is: this laptop reports a 1498 MHz maximum while actually delivering 3493 MHz. Shows the real clock per core, and whether a cap is your power plan or the hardware. Read-only. - ramcheck — Task Manager's
Memory 62%tells you almost nothing. This shows the hard page faults that actually cause stutter, how much of that 62% is reclaimable cache, and your commit charge against the real limit — the number that decides whether the next alt-tab stalls. Read-only. - netdrop — OBS says "dropped frames (network)" and Task Manager's graph looks fine. Windows already measures the number that explains it — the TCP retransmission rate — and shows it in no UI at all. Also catches the stale Wi-Fi link speed: the status dialog said 721 Mbps while the live counter said 400. Read-only.
- clipmine — a three hour session usually has four things worth keeping. Scans the audio for the moments you got loud and cuts each one out as its own clip. Never touches the original.
- vidkit — trim, compress and convert the recordings afterwards without memorising ffmpeg filtergraphs.
- dupefind — three copies of the same clip across three drives is normal after a year. Finds byte-identical duplicates and sends the extras to the Recycle Bin, never a hard delete.
- pathfix — "ffmpeg is not recognized" even though you installed it, or the wrong Python keeps running. Audits your PATH for broken folders and duplicates, and names which copy of a command actually wins. Dry run by default, with a journaled undo.
- bootlag — your PC takes 50 seconds to boot and Task Manager only says “High”. This reads Windows' own boot telemetry and gives you the millisecond cost of every startup app, service and boot phase, so you know what is actually worth disabling.
- diskscout — 4K60 footage fills a drive fast; find what's eating it.
- truehz — your panel is not 60.000 Hz. It prints the exact refresh rational Windows rounds away, and tells you which capture fps actually matches it — often 30, not 60.
- audiodrift — truehz for sound. Measures the real sample rate of every audio endpoint from its own hardware clock, so you know which ones will drift apart over a long recording.
- timerlag — your game asked
Windows to wait 1 ms and got 15.6. Windows 11 silently ignores
timeBeginPeriodfor throttled processes and returns success anyway, so it measures the timer resolution your process actually receives. - usbspeed — your capture card or external SSD is plugged into a 10 Gbps port and Windows still reports 480 Mbps. Every Windows UI reads a field that stops at USB 3.0; this reads the one that does not, and was off by 20.8x on this laptop. Read-only.
- diskbusy — Task Manager
says
Disk 100%and it means almost nothing: that bar is a duty cycle, so it pins at 100% whether the drive is doing 500 IOPS or 500,000. This shows the number Windows hides —% Disk Timeunclamped, which hit 730% here while each I/O still finished in 0.27 ms. Read-only. - dpiscale — Settings
says
Scale: 200%and stops there. Windows quietly hands different resolutions to different apps depending on the DPI awareness each one declares, which is why display capture comes out the wrong size. Found this laptop driving a 3240x2160 panel at 1920x1080. Read-only. - filelock —
The action can't be completed because the file is open in another program.Windows knows exactly which program and refuses to say. This asks the Restart Manager — the API Windows Setup uses — and names the process, the PID and what to do about it. Never reports a locked file as free. Read-only. - fragmap — a recording that
stutters on playback may simply be in thousands of pieces.
defrag /Acounts fragmented files across the whole drive but never names one, and Explorer shows only a size. This reads the NTFS extent map for a single file, counts the real physical fragments, and tells compression and sparse holes apart from genuine fragmentation. No elevation, read-only. - codecmap — OBS offers NVENC on one machine and only x264 on another, and nothing on screen explains why. This asks Media Foundation which codecs your GPUs can actually hardware-encode, asks Direct3D which ones they can hardware-decode, and shows both answers per GPU. Encoding and decoding are separate silicon, and this is where that difference becomes visible. No elevation, read-only.
- truefps — framecheck tells you a clip is variable frame rate; this tells you exactly how. It reads the MP4/MOV sample tables directly, rebuilds the true duration of every single frame, and reports real average fps, the longest stall in milliseconds, keyframe spacing and the audio/video duration drift that makes clips slide out of sync in an editor. Zero dependencies, read-only.
- muxcheck — a clip that scrubs
badly, uploads slowly or refuses to play until it has fully downloaded is
almost always a container layout problem rather than an encoding one. This
reads the layout directly: whether the
moovindex sits before or after themdat, how well audio and video are interleaved, wastedfreepadding, edit lists that shift the start, and recordings OBS never finalised. Zero dependencies, read-only. - colorcheck — your recording
looks washed out, crushed or oversaturated next to what you saw while you
were playing. This reads the colour tags the file actually carries, the
colrbox and the H.264/H.265 SPS VUI, and reports colour range (full vs limited), primaries, transfer and matrix, then names the mismatch and the OBS setting behind it. Zero dependencies, read-only.
MIT — see LICENSE.