obsproject / obs-studio

OBS Studio - Free and open source software for live streaming and screen recording
https://obsproject.com
GNU General Public License v2.0
58.81k stars 7.83k forks source link

Unable to select primary monitor, despite OBS claiming it is available #8181

Open AndreasLangberg opened 1 year ago

AndreasLangberg commented 1 year ago

Operating System Info

Windows 10

Other OS

No response

OBS Studio Version

29.0.0

OBS Studio Version (Other)

No response

OBS Studio Log URL

https://obsproject.com/logs/CwBu49DKcgb2xOaB

OBS Studio Crash Log URL

No response

Expected Behavior

OBS Display Capture and preview should be able to change between both displays

Current Behavior

OBS only shows the same one display, even if you select the other.

Steps to Reproduce

  1. Install version 29.0.0
  2. Have two monitors
  3. Add a Display Capture to scene
  4. Attempt to change between the two displays

Anything else we should know?

Tested on previous version 27.2.4, and it works no issues: https://obsproject.com/logs/fARkIWW934suHZ7v

Nightly version OBS 29.0.0-104-gcd78ecae5 has an interesting twist, where you are still only able to select one monitor, however it is the OTHER monitor, not the same one I'm only able to select in version 29.0.0; https://obsproject.com/logs/GOfaNioOnMCB2UVf

https://i.imgur.com/D70783Z.png reference image showing a capture of the secondary display, despite primary being chosen

Fenrirthviti commented 1 year ago

Where exactly are you attempting to change? In the source toolbar, or in the source properties? I'm not able to reproduce this behavior, might need further detail in the reproduction steps.

jdy4389 commented 1 year ago

I'm not sure if this is the exact same issue, but on v29 I am also unable to properly select my primary monitor.

I have 2 physical monitors, and disabled a 3rd "virtual" monitor through Windows display settings. After disabling the 3rd, both both "Display" options on OBS are still labelled correctly, eg, both show the expected monitor names and pixel resolutions/offsets, but now both options end up showing what's displayed on my secondary monitor.

Before disabling that virtual monitor everything worked fine and I could switch between which monitor I want captured. I've tried everything in the settings/capture settings/display option to try and get it back to the way it was, but nothing can change it back to the primary monitor.

Edit: I also installed the nightly version, and I experience the same thing as OP where now where whichever of the 2 monitors I select in OBS only results in my -primary- monitor being shown now (so the opposite monitor as before). Which technically 'fixes' it for me in that I can record the correct monitor, but it still obviously won't let me correctly choose one or the other. Removing and adding the display capture source makes no difference for me. Still experiencing this as of 29.1.0-beta3

flaeri commented 1 year ago

I would have hoped this would be solved by. https://github.com/obsproject/obs-studio/pull/8081 You say you've tested the nightly, which includes that fix. Using the nightly, could you make double sure by deleting the current display capture source, and adding a fresh one?

Fuehnix commented 1 year ago

For me, I can see and select either display, but they show 2560x1440p @-2560.0 and 3840x2160 @0.0, and both monitors link to the 2560x1440p one.

v29.0 also seems to have broke my scene selection, as it was already set to the 3840x2160 monitor, but now it only shows the 1440p in that display window.

Forum post showing this as a common issue: https://obsproject.com/forum/threads/after-update-obs-only-detects-secondary-monitor-twice-but-reads-as-primary.164940/

Fenrirthviti commented 1 year ago

We are aware that this is affecting a very small number of users, and are still investigating why. I don't think a handful of reports makes this common, however.

If this affects you, please include a log file so we can continue to gather information on affected systems.

gatherium commented 1 year ago

I am having the issue described in this thread. My logs link

https://obsproject.com/logs/hw09qi9eWm32YVYG

RytoEX commented 1 year ago

If you are still having this issue, could you please retest with OBS Studio 29.1 Beta 3 (or newer) and provide an OBS log file? We've added some additional logging that might help us look into this further. As far as I'm aware, we've so far been unable to reproduce this.

AndreasLangberg commented 1 year ago

Issue is still there in 29.1 Beta 4 Log file: https://obsproject.com/logs/MzjiANOYDV8pmmhb

AndreasLangberg commented 1 year ago

Where exactly are you attempting to change? In the source toolbar, or in the source properties? I'm not able to reproduce this behavior, might need further detail in the reproduction steps.

Doesn't matter. Either or

notr1ch commented 1 year ago

For those having the issue, could you try opening Device Manager and view hidden devices, and screenshot what's available along with your OBS 29.1 beta log? After that, try removing the disconnected (greyed out) monitors and see if it makes a difference.

GIBvIZ67Z9

AndreasLangberg commented 1 year ago

image No greyed out monitors, but I do have 3 monitors connected which are not active in windows (As nvidia blocks for more than 4 monitors connected simultaneously on their regular cards, I have to switch between them depending on usage)

For testing, I removed the extra unused monitors, and OBS had no issue switching between the monitors afterwards. So it seems we are zeroing down on the issue here. It's not able to handle when you have inactive but connected monitors

mohcow commented 1 year ago

Problem still exists with 29.1.1

notr1ch commented 1 year ago

Problem still exists with 29.1.1

Follow the steps in https://github.com/obsproject/obs-studio/issues/8181#issuecomment-1519167663

mohcow commented 1 year ago

I don't have any greyed out devices there and uninstalling currently disconnected monitor(tv) defeats the purpose. There should be no reason to remove disconnected monitors when i worked in previous versions, no?.

RytoEX commented 1 year ago

I don't have any greyed out devices there and uninstalling currently disconnected monitor(tv) defeats the purpose. There should be no reason to remove disconnected monitors when i worked in previous versions, no?.

The display enumeration in OBS was changed to use a different Windows API to better ensure that the displays selected for capturing in OBS remain selected and unchanged between OBS sessions or Windows sessions (system restarts). We want to find out why that API is behaving in an unexpected way. To that end, we are gathering information, hence the ask in the linked comment.

khezuu commented 1 year ago

Problem still exists with 29.1.1

Follow the steps in #8181 (comment)

I also had greyed out displays and graphic cards but after removing them the problem persists.

https://obsproject.com/logs/cI20ifjVpiOkVGat

notr1ch commented 1 year ago

Your log shows it's still finding a Samsung monitor from somewhere. Did you try rebooting after removing the disconnected devices?

khezuu commented 1 year ago

Your log shows it's still finding a Samsung monitor from somewhere. Did you try rebooting after removing the disconnected devices?

Thanks I figured out what caused the issue.

It was my Samsung TV that was turned off (standby) connected to the PC.

Once I disabled the TV in the device manager, source switching works again

TheHunterGT commented 1 year ago

Thanks I figured out what caused the issue.

It was my Samsung TV that was turned off (standby) connected to the PC.

Once I disabled the TV in the device manager, source switching works again

That is exactly what is happening to me.

3 devices total - one turned off - no greys in device manager.

2X monitors via DisplayPort - turned on.
1X TV via HDMI - turned off.

It will not let me switch monitor captures between the monitors like that. They both show up in the drag down menu in properties, but it will only capture the primary.

As soon as I remove the TV HDMI cable...or disable the TV in the device manager...switching between monitors works.

BobKillen commented 1 year ago

Your log shows it's still finding a Samsung monitor from somewhere. Did you try rebooting after removing the disconnected devices?

Thanks I figured out what caused the issue.

It was my Samsung TV that was turned off (standby) connected to the PC.

Once I disabled the TV in the device manager, source switching works again

I had the same issue but had a Sony TV connected in the same way but I DID have it disabled in the display settings. I still had the issue even with it disabled, I had to physically disconnect the TV from my PC for it to work.

Data4GE commented 1 year ago

Same Issue, Fixed once i removed the Cable from my Drawing tablet that is only in use when doing design work. Since it is disabled on "display settings" but still plugged in, it was showing my 3 out of 4 displays on OBS but unable to change them from my "primary monitor" , once i plugged out the 4th Display that is not powered on and in use. It works as normal.

Its worth noting this was not a problem in prior versions of OBS and is to due with an update / change in how its coded.

So once again the fix is to unplug the cable physically so there is no data connection to unused monitors, dont just remove them via Software as you may of previously done. Its a pain but it fixes the issue.

Control-V

REmove the display not just disable it Control-V (1)

pjw29 commented 1 year ago

I can confirm this is the cause of my issue, I have a silly number of screens on my machine, so that I can work at either a single large screen, triple screens, or a sim racing rig. To switch I have scripts setup, and a StreamDeck, but OBS is not liking when the screens are connected, but not active. If I "uninstall" the devices on device manager it works, but a "scan for hardware changes" will cause it to break again. If I just "disable" devices, it seems to work. Not sure what's happening with the enumeration, but its always my Primary (middle) screen; that gets lost, and when its selected, its a duplicate of the left most screen.

Any updates at all?

lbollar commented 1 year ago

Also a sim racer and exact behavior as @pjw29. I have reverted to 28.1.2 until a fix is in.

jdy4389 commented 9 months ago

Still an issue I ran into with v30.0.0, ran into it again after having to change some monitor settings when removing/reinstalling display drivers.

Having my virtual monitor 'disabled' through Windows display settings but not device manager still causes the display capture sources in OBS to appear to show the correct monitors as available (correct names, pixel offsets), but choosing either of them will only ever display what's on one of them (the wrong one).

What I did as a workaround was to disable my virtual monitor in device manager temporarily, then restart OBS. At that point, the correct monitor can be chosen. Then, I could re-enable it through device manager, and OBS still seems to have the correct monitor available as a source.. It says the current display source is [Device not connected or not available] as a result, but it still works and can use it as the source, so I'm hoping it will remain available as long as I don't mess with the source options.

RytoEX commented 9 months ago

Issue is still there in 29.1 Beta 4 Log file: https://obsproject.com/logs/MzjiANOYDV8pmmhb

image No greyed out monitors, but I do have 3 monitors connected which are not active in windows (As nvidia blocks for more than 4 monitors connected simultaneously on their regular cards, I have to switch between them depending on usage)

For testing, I removed the extra unused monitors, and OBS had no issue switching between the monitors afterwards. So it seems we are zeroing down on the issue here. It's not able to handle when you have inactive but connected monitors

Just to circle back to this: your log shows both your ROG and ASUS displays identified by Windows as the same MSI display, which was not connected. This new display ID is what we switched to using in OBS Studio 29 as previously explained. So for some reason we are getting bad/unexpected results from that API.

@pjw29 @lbollar Please refer to the instructions here and provide a screenshot of the display devices and optionally remove unused devices later, if you'd like to see if that fixes the issue for you. Please also provide an OBS log from a recent version of OBS that logs the display IDs.

@jdy4389 What are you using to create a "virtual monitor"? Please also provide OBS logs for both broken and working scenarios.

jdy4389 commented 9 months ago

@jdy4389 What are you using to create a "virtual monitor"? Please also provide OBS logs for both broken and working scenarios.

Sorry for the delay, what I mean for virtual monitor is that I have a generic displayport 'dummy plug' called "DP1080P60" connected in to my graphics card, basically so that Windows thinks there is a monitor plugged in even when my real monitors are turned off. This is to allow me to VNC in to the computer correctly and have it "use" that monitor at 60hz with the monitors turned off, as I was having issues getting it to work at the correct refresh rate due to some kind of issue with Windows/GPU power saving features. I keep it enabled in Device Manager for it to work, but "disconnected" in Display Settings so it won't cause my mouse to go off into a dead area.

ApplicationFrameHost_2023-12-15_18-16-42

In order to visualize what happens with OBS, I did 2 videos showing what's going on

Spoiler [Videos] https://github.com/obsproject/obs-studio/assets/42285880/9886e6dd-ff04-49c0-8502-23b979a9953b https://github.com/obsproject/obs-studio/assets/42285880/df7e0caa-7244-4a13-ba81-6db7e79d619e

WHEN ENABLED -2023-12-15 18-32-59.txt WHEN DISABLED - 2023-12-15 18-22-52.txt

I should note that the OBS logs don't seem to reference that dummy adapter at all - it only appears on the GUI or in the logs when it's enabled both in the device manager and connected/enabled in Windows monitor settings.

RytoEX commented 9 months ago
  • The first is when this "virtual monitor" is completely disabled in device manager - This let's me choose either of my 2 monitors to be a display source - I can then leave it in this state, re-enable the dummy adapater and it will stay be fine as long as I don't change the source in OBS.

As a note, I do not believe OBS supports changing display arrangements while OBS is running. We consider it a hardware change, and we don't track hardware changes very well (in many cases, not at all). In your described workflow, the displays are enumerated and the sources are configured before you have the dummy adapter enabled (or half-enabled).

I should note that the OBS logs don't seem to reference that dummy adapter at all

That makes sense. If the adapter is disconnected when OBS starts up, it won't be logged. Since we're using Windows APIs to enumerate displays, I'm not too surprised it wouldn't show up if you have the display set to disabled in Windows settings. If the adapter is enabled in both Device Manager and Windows Display Settings, I would expect it to be logged in OBS logs.

mohcow commented 5 months ago

Still an issue in 30.1.2

RytoEX commented 5 months ago

Still an issue in 30.1.2

Please provide the data we asked for here and an OBS log.

arbarday commented 1 month ago

I found and operational solution to this I think.

I'm running a three monitor setup that I use for TV & Video colour grading and editing. I have 2 standard HP monitors for the desktop and a central EIZO monitor for grading which takes a signal over HDMI via a Blackmagic Design video output PCI card. When I'm not working I change inputs to the Display Port input which is connected directly to the graphics card giving me a 3 monitor setup for other activities. When I'm doing video work I usually open the Display settings and disconnect the EIZO so my GUI and cursor only go across the two HP monitors. When I recently decided to screen record my colour grading work I found the problem with OBS only seeing one screen. After reading the comments, I worked out that if the EIZO connection is active then OBS can see all monitors. My solution to continue to work in my normal 2 GUI monitor setup and be able to record both screen on OBS is simply to change the Multiple displays option on the Display settings panel to Duplicate Desktop on the EIZO to my second screen. That way my cursor doesn't have to travel too far and I OBS still sees all the screen and I can select just my GUI ones to record. Simples!

Terrancejpeters commented 2 weeks ago

Hopeful Bump, to say that it indeed seems to be the issue of 3 monitors (1 of which indeed being a TV for myself) with one of which turned off. Disabling it in Hardware Manager will resolve the issue, though hopefully future bug patch for this. Tricky one

Uploading a log to help with future debugging: 2024-08-26 16-20-53.txt