Mirrored monitors of different resolution

Solution 1:

Sorry for resurrecting a couple old threads, but there's that sort of classic old meme of people finding solutions to something and then never posting them.

I was trying to solve this problem recently. I came up with a solution that utilizes streaming from one screen to the other, and in the interest of sharing knowledge I've decided to resurrect some of these old posts and threads in various places to share one possible solution to this problem.

This is an especially great solution for gamers that might want to play something with adaptive sync features (GSYNC, FreeSync) or want to play at your monitor's native resolution and downscale it for the screen you wish to mirror.

Best of all, this solution uses OBS, free and open source software.


TL;DR

  • While not a native solution, OBS has a Fullscreen Projector option if you right click on the Base Canvas that can stream one display to the other with very low latency.

BACKGROUND

  • I like to mirror things from my computer monitor to my TV screen. Other people I live with like to see me do various things such as play games on the big screen, and I like to play on my monitor for the adaptive sync features. My monitor isn't big enough for everyone to view which is why they like to have it mirrored to the TV screen.

  • The problem I encountered is that by downscaling my monitor to my TV screen using Window's or NVIDIA's built in "Mirror" feature, I wasn't able to use the GSYNC feature on my monitor which introduced screen tearing and gave me headaches. Not great.

  • After countless online searches, it was hard for me to come up with any answer other than "It just can't be done, your other display always has to be downgraded to your other display's settings." or "Oh, you can do that but you need to get _________ expensive multi-monitor software to do that" such as UltraMon.

  • Turns out that's not exactly true with a bit of creative problem solving. It occured to me that while it may not be possible to have a truly "native" solution to the problem of mirroring different screens, I could stream one display to the other display with some down-scaling. And as long as the latency wasn't noticeable, then it should suit my needs perfectly.

  • This made me think that OBS might be the right piece of software to do the trick.

  • At first I was thinking maybe I would capture my screen and stream it to a VLC server and run a VLC instance on the other screen. Turns out you don't even need to do that, OBS has the functionality to project one screen to another built right in.

REQUIREMENTS

  • OBS: Open Broadcaster Software, a free and open source screen capture and streaming software.
  • I tested this on a Windows 10 machine however OBS is also available on Mac OS and Linux.
  • A PC powerful enough to capture, down-scale, and copy the source rendering over to a secondary monitor using OBS. I think most modern PCs should be able to handle this but I'm not sure.

SOLUTION

  1. In Windows Display Settings or your Graphics Card Control Panel, set your monitor to Extend mode, NOT Duplicate or Mirror mode.
  2. Install OBS if you do not have it already.
  3. Open OBS. If this is your first time using the software, it will probably prompt you for some settings related to streaming or recording. Either option is fine.
  4. If you don't get prompted for anything, go to Settings->Video.
  5. Set your Base (Canvas) Resolution to whatever the resolution of the secondary screen would be. The Base Canvas is the thing the preview screen that you see inside OBS.
  6. In my testing, I don't think Output Resolution in Settings->Video will affect anything for the purpose we are using it for although I think it will affect recording/streaming.
  7. Under Sources, you will need to set a source to capture. You could for example go to "Display Capture" or you could do "Window Capture" or "Game Capture". I won't go into much detail here since there's a lot of different sources you could potentially display and it's all documented on OBS documentation. The OBS documentation can be found here: https://obsproject.com/wiki/
  8. Once you have that configured correctly, you should be able to see the Scene Item with a red border in or around the Base Canvas within OBS showing the window that is being captured. You may need to resize the capture window so that it fits correctly into the preview canvas. One easy way to do this is to right click on the Scene Item->Transform->Fit to screen.
  9. If you right click on the Base Canvas, there will be an option that says "Fullscreen Projector (Preview)". It will then have another drop-down to select the monitor you would like to project to.
  10. You should now see the screen cast to the other monitor.

In my testing, and on my (fairly powerful) desktop PC, the output has had low enough latency to not be detectable to the eye.