GitHub Release GitHub Release Date Ask DeepWiki
This OBS Studio plugin expands upon the built-in Replay Buffer, allowing users to save recent footage at different lengths with customizable save buttons, similar to how PlayStation/Xbox's "Save Recent Gameplay" functionality.
Note: Windows builds are 64-bit only, as OBS Studio 29.0.0+ dropped 32-bit support. macOS builds are universal binaries (arm64 + x86_64).
OBS keeps a rolling buffer of the last few seconds or minutes of footage in memory using the built-in replay buffer. The length of this footage is defined in settings. If the amount of footage exceeds the length in settings, old footage is overwritten as new footage is recorded.
Unlike the default Replay Buffer, which saves a fixed duration, this OBS Studio plugin allows users to save different lengths on demand. Set the replay buffer length, then clip custom lengths of footage automatically. Example: Set your replay buffer to 10 minutes. Save the last 30 seconds, 2 minutes, or 5 minutes instantly with UI buttons or hotkeys.
The project website is currently hosted via GitHub Pages.
- Start the Replay Buffer in OBS
- Click any save clip button (customizable durations) or use the assigned hotkey
- Use the Customize button to set your preferred clip lengths
- The plugin will:
- Save the full replay buffer
- Automatically trim to the selected duration (Without re-encoding)
- Replace the original file with the trimmed version
- Quickly adjust built-in replay buffer length (1s to 6h) without digging through the settings
- Assign hotkeys to each save duration button in OBS Settings > Hotkeys
Windows:
- Download the latest
.ziprelease - Extract the ZIP file
- Copy the
replay-buffer-profolder to%ALLUSERSPROFILE%\obs-studio\plugins\(typicallyC:\ProgramData\obs-studio\plugins\)
Final file structure should look like this:
obs-studio/
└── plugins/
└── replay-buffer-pro/
├── bin/
│ └── 64bit/
│ └── replay-buffer-pro.dll
└── data/
└── locale/
└── en-US.ini
Note: The %ALLUSERSPROFILE% environment variable typically resolves to C:\ProgramData. You can type this directly into File Explorer's address bar.
macOS:
- Download the latest
.pkgrelease (universal: arm64 + x86_64) - Open the downloaded
.pkgand follow the installer - The installer places the plugin at
~/Library/Application Support/obs-studio/plugins/replay-buffer-pro.pluginautomatically
Note: If macOS blocks the installer because it's from an unidentified developer, right-click (or Control-click) the .pkg and choose Open, then confirm in the dialog.
The build system follows the obs-plugintemplate pattern. All dependencies (OBS Studio source, prebuilt obs-deps, Qt6) are automatically downloaded at configure time.
Windows:
- Windows 10/11 64-bit
- Visual Studio 2022+ with "Desktop development with C++"
- CMake 3.28+
macOS:
- macOS 12.0+ (builds target macOS 12.0+; universal binary: arm64 + x86_64)
- Xcode 26.5+ with macOS SDK 26.5+
- CMake 3.28+
No manual OBS clone, Qt6 install, or FFmpeg setup is needed on either platform — everything is fetched automatically.
git clone https://github.com/joshuapotter/replay-buffer-pro.git cd replay-buffer-pro # Configure (first run downloads deps and builds OBS — takes a few minutes) cmake --preset windows-x64 # Build the plugin cmake --build --preset windows-x64 # Install (close OBS first) cmake --install build_x64 --config RelWithDebInfo
The install target places the plugin in %ALLUSERSPROFILE%/obs-studio/plugins/. After building, a rundir is also available at build_x64/rundir/RelWithDebInfo/ for quick testing.
git clone https://github.com/joshuapotter/replay-buffer-pro.git cd replay-buffer-pro # Configure (first run downloads deps and builds OBS — takes a few minutes) cmake --preset macos # Build the plugin (universal binary) cmake --build --preset macos # Install (close OBS first) cmake --install build_macos --config RelWithDebInfo
The install target places the .plugin bundle in ~/Library/Application Support/obs-studio/plugins/. After building, a rundir is also available at build_macos/rundir/RelWithDebInfo/ for quick testing.
Update the version in buildspec.json, then run:
cmake --preset windows-x64 cmake --build build_x64 --config RelWithDebInfo --target prepare_release
This creates build_x64/releases/<version>/replay-buffer-pro-windows-x64.zip.
There is no local one-command release target for macOS. Packaging (codesigning, notarization, and .pkg creation via .github/scripts/package-macos) requires CI credentials and only runs in GitHub Actions — see CI / GitHub Actions below.
Pushing a semver tag (e.g., 1.4.0) to main/master triggers the GitHub Actions workflow, which builds the plugin for both Windows and macOS and creates a draft GitHub release with all artifacts attached (Windows .zip and macOS .pkg).
replay-buffer-pro/
├── buildspec.json # Plugin metadata + dependency versions (Windows + macOS)
├── CMakePresets.json # Build presets (windows-x64, macos)
├── CMakeLists.txt # Main build configuration
├── cmake/ # CMake modules (common + windows + macos)
├── data/
│ └── locale/ # Translations
├── src/ # Source files (fully cross-platform)
│ ├── config/ # Config constants
│ ├── managers/ # Core functionality managers
│ ├── plugin/ # Main plugin implementation
│ ├── ui/ # User interface components
│ └── utils/ # Utility classes (including video-trimmer)
├── .github/ # CI workflows, actions, scripts (Windows + macOS)
├── docs/ # Project website source
├── reference/ # Developer documentation
└── README.md
- Verify plugin file location (
.dllon Windows,.pluginbundle on macOS) - Check OBS logs for errors
Every replay save writes one TRIM VERDICT line to the OBS log (Help → Log Files → Show Log Files). Search the log for TRIM VERDICT and find the line matching the clip:
skipped reason=no-pending-request— the save was triggered outside this plugin, so it was saved at full buffer length. OBS's own Save Replay hotkey, the tray menu item, and Stream Deck buttons using the official OBS Studio plugin's "Save Replay Buffer" action all take this path. Use one of Replay Buffer Pro's own Save Clip hotkeys (Settings → Hotkeys → Replay Buffer Pro: Save ...) so the plugin knows which duration you wanted.skipped reason=save-full-buffer— this was a Save Replay Buffer click, which is intentionally untrimmed.failed reason=output-too-long— your encoder's keyframe interval is too long for the clip length you asked for, so the cut could not land near the right place. Set Settings → Output → Keyframe Interval to 2 seconds.failed reason=open-input-failed— something else was holding the file. If Settings → Advanced → Automatically remux to mp4 is enabled, try turning it off; antivirus and cloud-sync folders can do the same.- Any other
failed reason=...— check disk space and write permissions in the output directory, and include the line when reporting an issue.
A failed trim always leaves your original full-length clip in place, so nothing is lost.
- When building from source:
- Windows: Ensure Visual Studio 2022+ and CMake 3.28+ are installed
- macOS: Ensure Xcode 26.5+ (with macOS SDK 26.5+) and CMake 3.28+ are installed; run
xcode-select --installif needed - First configure run downloads ~500MB of dependencies — ensure network access
- Windows: Run install command in a terminal with admin privileges if installing to a protected directory
This plugin uses OBS Studio's built-in FFmpeg libraries (libavformat) for video trimming functionality. FFmpeg is licensed under the LGPL v2.1+ license.
Because the plugin links against OBS's bundled FFmpeg libraries by soname, each release is built against a specific OBS version's FFmpeg major version and is not binary-compatible with OBS versions that ship a different FFmpeg major. Always use the plugin release matching your OBS Studio version's minimum requirement.
GPL v2 or later. See LICENSE file for details.