If you have ever tried using OBS Studio in conjunction with any realtime magnification tools—such as the LiveZoom feature of the excellent and free ZoomIt utility by SysInternals—you'll find that there is quite a frustrating issue with it. While recording with OBS Studio, if you want to zoom into the mouse location using a magnifier app, you will get a second phantom mouse cursor that appears in the recording relative to the enlarged version. This is because OBS is still rendering the native system mouse relative to the display resolution, while the enlarged cursor is being simultaneously rendered to the screen relative to the zoomed in coordinates.
This problem has generated a number of discussions over the years and has been especially problematic to users wishing to create screencasts and related materials. There have been complaints, bug reports and suggestions on how OBS Studio could internally resolve the problem. However, to date there has not been any proper solution offered. The general counter-argument has been that this is a very isolated use case and that other commercial products like Camtasia ($249 USD) would be much better suited for this scenario. But for users already familiar with OBS or not wishing to invest time and money into other software products, I have found that professional screencasts can be created just fine via OBS as long as we can overcome the double cursor bug. Here is what I came up with as a makeshift solution.
Fixing the Double Cursor Bug when Zooming in OBS
To get around the cursor bug problem, we will setup a new OBS scene collection with two scenes. One scene will be setup to record the display with the mouse cursor, and the other without the mouse cursor. Using a shared keyboard shortcut and the transition feature of OBS, we will be able to automatically switch scenes when zoomed in or out so that only the enlarged render of the cursor will appear while magnified.
For this tutorial I am using OBS Studio 22.0.2 and ZoomIt v4.5, but you will find other magnification apps exhibit the same double cursor issue when used with OBS and should be able to easily adapt these instructions for those other utilities. These steps only need to be completed one time; you can then load the scene collection at any time to use these settings.
- Create a new scene collection by selecting Scene Collection → New from the top file menu. Give the collection a name, such as "Screencasting" and click OK.
- For clarify, let's rename the default scene to "Scene (With Cursor)" by right-clicking on it and selecting Rename.
- Add a second scene by clicking on the [+] button under the Scenes list and name it "Scene (Without Cursor") then click OK.
- Select the first scene again—Scene (With Cursor)—and then click the [+] button under the Sources list and select Display Capture.
- Note: Other source types will not allow you to capture the full screen as you see it. To capture magnification features of other utilities, you must use Display Capture.
- Give the selected Display Capture a more descriptive name, such as "Display Capture (With Cursor)" and then click OK.
- When the Properties window appears, make sure that "Capture Cursor" is checked and—if you have more than one connected display—that you have selected the correct display that you wish to capture, then click OK.
- Repeat steps 4-6 for the second scene—Scene (Without Cursor)—but name the source "Display Capture (Without Cursor)" and make sure that "Capture Cursor" is unchecked.
- Open up the magnifier tool to configure a toggle shortcut. In ZoomIt, click on the LiveZoom tab and then assign a unique keyboard shortcut such as CTRL+SHIFT+ALT+X. Do NOT click OK yet as we don't want to enable the shortcut until after we also configure it in OBS.
- Click on "Settings" in OBS Studio, then click on Hotkeys and finally enter the same keyboard shortcut under Transition as you did in the zoom utility (e.g., CTRL+SHIFT+ALT+X). Then click OK.
- You can now click OK within ZoomIt as well to activate the utility, but don't press the shortcut just yet.
- Back inside of OBS Studio, click to select "Scene (Without Cursor)" from the Scenes list and then click on the Studio Mode button.
- With Studio Mode open, click to highlight "Scene (With Cursor)" and then click on the Transition button in the center of the screen. This will establish our transition process between the two scenes and ready it for use with our zoom utility and matching shortcut.
- Note: Make sure that "Swap Preview/Output Scenes After Transitioning" is activated in the Preferences button next to Transition, which it should be by default.
- Now you can start the recording, minimize OBS Studio and then toggle the magnification whenever needed using the keyboard shortcut. Only a single cursor will be recorded, as expected. The keyboard shortcut for Transition will not work if you currently have OBS Studio in focus, so either click onto a different app or minimize OBS before using the magnification shortcut.
NOTE: After switching scenes or relaunching OBS, you may need to repeat steps 11-12 to prepare it for use again. You can also add audio input/output sources to both scenes for capturing audio.
Although this is not the most desirable solution, it does solve the problem pending any official fix. Since OBS Studio is open-source, anyone could theoretically create a fork of the code to implement a workaround internally or perhaps a standalone plugin, time-permitting.