Capture the audio of individual Windows applications in OBS Studio — by executable name, mixed into one source, with exclude and hotkey modes. No virtual audio cables, no per-window fiddling.
This is a modernized fork of bozbez/win-capture-audio (unmaintained since 2022), updated to build and run against OBS Studio 28–32 on current Windows 10/11, with a substantial number of threading, COM-lifetime and audio-timing fixes. See the CHANGELOG for everything that changed.
- 🎯 Capture by executable name. Pick applications by their
.exe, not by a window, so capture keeps working when the application restarts. Names are case-insensitive and accept wildcards (League*.exe). - 🎛️ Several applications in one source. Their audio is mixed and timestamp-aligned into a single OBS source.
- 🚫 Exclude mode. Capture everything except the listed applications — the usual way to keep music off a recording track while it still plays on stream. Works whether or not the excluded application is running.
- ⌨️ Hotkey mode. Capture whichever application is in the foreground when you press a hotkey, and release it with another.
- ⏱️ Latency setting. Lower the mixer's alignment window when capturing a single application; keep the safer margin when mixing several.
- 📊 Live status and refresh. The properties dialog shows what is actually being captured (
Capturing: chrome.exe), and the active-session list can be refreshed without reopening it. - 🔁 Automatic re-attach. Capture recovers on its own when an application restarts or the audio device changes.
- 🌍 15 languages.
| win-capture-audio | OBS built-in | |
|---|---|---|
| Select application by | executable name, wildcards | window |
| Survives application restart | ✅ | ❌ stops when the window closes |
| Applications per source | as many as you like, mixed and aligned | exactly one |
| Exclude mode | ✅ | ❌ |
| Hotkey mode | ✅ | ❌ |
Internally both use ActivateAudioInterfaceAsync with AUDIOCLIENT_PROCESS_LOOPBACK_PARAMS.
Note: the exclude mode replaces OBS's "Desktop Audio" source rather than filtering it — no plugin can remove an application from Desktop Audio, since that source captures the mixed output of the sound device. Add an exclude-mode source and disable Desktop Audio in Settings → Audio.
- OBS Studio 28 or later (tested against 32.2.x)
- Windows 10 2004 or later / Windows 11
Grab the latest release:
- Setup installer (recommended): removes any older version automatically, including 2.2.x installs inside the OBS directory.
- Portable zip: extract into
%ProgramData%\obs-studio\plugins\.
The resulting layout is OBS's modern per-plugin layout:
C:\ProgramData\obs-studio\plugins\win-capture-audio\
├── bin\64bit\win-capture-audio.dll
└── data\locale\*.ini
Restart OBS and add the "Application Audio Output Capture" source.
The old layout inside the OBS installation directory (
obs-studio\obs-plugins\64bit\+obs-studio\data\obs-plugins\win-capture-audio\) also still works.
Capture specific applications — leave the mode on "Capture audio sessions from a selection of executables" and add entries to the executable list, either by typing them (wildcards allowed) or by picking a running application from the active sessions dropdown and clicking Add.
Capture everything except some applications — same mode, tick "Capture all audio EXCEPT sessions from the selected executables". Remember to disable Desktop Audio (see the note above), or you will hear everything twice.
Hotkey mode — switch the mode to "Capture foreground window with hotkey", then assign the two hotkeys in Settings → Hotkeys under this source: "Capture foreground window" and "Deactivate capture". (Those are the plugin's hotkeys — not the standard Show/Hide entries listed above them, which only toggle the source's visibility.) Focus the application you want and press the capture hotkey.
Some applications route part of their audio through a separate process with a different executable name, so one list entry does not cover everything:
| Application | What's missing | What to add |
|---|---|---|
| Valorant / League of Legends | voice chat plays from Riot's client, not the game | Riot*.exe (or use hotkey mode on the game) |
| Microsoft Teams (new) | runs as its own process, not Teams.exe |
ms-teams.exe |
| Games behind launchers | launcher sounds vs. game audio are separate trees | one entry per executable |
The universal trick: while the missing audio is actually playing, open the source's properties and check the active sessions dropdown — whatever process is producing that audio appears there under its real name; add it. The status line also lists entries that match no running session, which is usually a typo.
Requirements: Visual Studio 2022 or later (MSVC C++ workload) and an installed copy of OBS Studio.
git submodule update --init
cmake -S . -B build -A x64
cmake --build build --config RelWithDebInfo
There is no libobs SDK on Windows — OBS's installer ships no headers or import libraries. The build instead runs cmake/bootstrap-obs-sdk.ps1 automatically, which:
- detects your installed OBS Studio and its exact version,
- downloads the matching
obs-studiotag's libobs headers, and - generates
obs.libdirectly from your installedobs.dll's export table,
so the plugin is always built against exactly the OBS binary it will load into. To install into %ProgramData% after building:
cmake --install build --config RelWithDebInfo
If you have a self-built OBS instead, point CMAKE_PREFIX_PATH at it and the usual find_package(libobs) path is used.
Release binaries are built by CI against the OBS 28.0.0 headers on purpose: libobs is forward-compatible, and declaring the oldest supported API lets one binary load on every OBS release from 28 through 32.
- "Windows protected your PC" when running the installer — the binaries are not code-signed yet, so SmartScreen has no reputation for them. Choose "More info" → "Run anyway", and verify the download against the
SHA256SUMS.txtpublished with each release if you want to be sure it was not tampered with. - Source not showing up — check the OBS log (Help → Log Files) for a
[win-capture-audio]line. If absent, the DLL is in the wrong directory — see the layout above. - No audio captured — make sure the target application is actually playing audio and appears in the Windows volume mixer. The capture attaches per audio session; an app that has not opened an audio stream yet has nothing to capture.
- Hotkey does nothing — make sure you bound the plugin's own hotkeys ("Capture foreground window" / "Deactivate capture") for the source, not the generic Show/Hide ones.
- Crackling or dropouts — lower the OBS audio buffering (Settings → Advanced → Audio) or report it with a log.
Found a bug? Open an issue and attach your OBS log.
Originally written by bozbez; maintained in this fork by Ayrton09.
GPLv2 — see LICENSE.