Program view displaying wrong resolution with Studio Mode and Output Mode Advance /w different recording and streaming resolutions
Operating System Info
Windows 11
Other OS
No response
OBS Studio Version
31.0.3
OBS Studio Version (Other)
No response
OBS Studio Log URL
https://obsproject.com/logs/FRTbezQGsJFYu52I
OBS Studio Crash Log URL
No response
Expected Behavior
Program should be a 1440p (Canvas) resolution when transitioned using an API via OBS WebSocket), or when OBS is launched the default scene on the Program View should be 1440p like canvas and Preview.
Current Behavior
Only when the scene is changed without being loaded to the preview, for example when changed with the OBS WebSocket, or when OBS loads, the Program view will be at 1080p, rather than the canvas resolution of 1440p.
This is happening because in OBS I am using two encoders at once with the following settings:
- Canvas: 2560x1440
- Output -> Streaming: Rescaled Output (Bilinear) 1920x1080
- Output -> Recording: Rescale Output (Disabled) 2560x1440
It seems that for some reason if the scene was transitioned to without it being loaded in the preview first, it will use the resolution of the Streaming output.
The services used for the WebSocket are: https://obs-web.niek.tv/ as well as https://macro-deck.app/
Steps to Reproduce
- Set
Base (Canvas)Resolution to2560x1440(Image One) - Set Output mode to Advanced
- On Streaming set
Rescale OutputtoBilinearand1920x1080(Image Two) - On Recording set
Rescale OutputtoDisabled and2560x1440` (Image Three) - Enable
Studio Mode - Set up OBS WebSocket connection | Or Transition a visible scene to the program, and select a different scene on the preview
- Close OBS
- Open OBS
- Loaded Scene should now be at the wrong resolution
- If using a WebSocket, any scenes changed to will have this issue, however once they are loaded in the preview this issue is resolved
Image One:
Image Two:
Image Three
Anything else we should know?
I understand that this is a pretty weird issue, and most people would not be encountering this problem. I would be more than happy to provide any videos, screenshots, reports, or other information that might be needed. If necessary you can contact me in Discord @SquibsLand
with the steps provided I can repro on master (235be8ca3f8abcb99c4f44e9d9cea8ce9c736b99) from a clean scene collection
Bisect pointed at 1565ca8eb124475df52aa849e3782a9632b8cde8 (or the next, can't run in between) as the first culprit, somewhat unsurprisingly.
I also confirmed this only happens when a sceneitem's scale_ref is different from the canvas resolution.
Just found out something in addition to this issue, if you have all of the above steps, but for one of the scenes you have a local video file, and it starts as 'stopped' when the source becomes active, even if you loaded the scene beforehand to the preview the video source will be at the incorrect resolution, but all other elements will be are the proper resolutions. To resolve this first transition from image 1 to the program, then transition back, after doing so the preview will be "paused"
I think that because the video source never plays while on the preview, it wont be loaded to the 1440p resolution. Its possible that the fix regarding 1565ca8eb124475df52aa849e3782a9632b8cde8 would fix the issue, however if not, my current idea for a fix is just to load the first frame of the video beforehand, since when the video is "stopped" it has 0 for all values in the transform.
Something to note, is that when the video pauses after transitioning from the program to the preview (a different scene was moved to program) the video will be in a state neither paused or stopped. You can see in the last image that it shows the restart button next to the stop button, if the video was paused it would instead be a play button. If stopped the buttons would remain the same, but the video would have 0 for all transforms, and the transitioning issue would occur again.
Here are the steps just in case the above didn't make sense
- (Follow all steps in original issue)
- Add a video source to the scene (Video used was 1920x1080)
- Stop the source if it is not stopped already
- Enable loop and Restart playback when source becomes active
- Video should display nothing, transforms will confirm this (If you can see a frame of the video, even if paused, push the stop button and then it should go back to no transforms)
- Transition to Program
- Video should now be at the wrong resolution but still playing
- Transition back
- Video should now be corrected in preview
- Press stop
- Transition
- The video should once again be at the wrong resolution only if you pushed stop, if you went to a different scene when transitioning it will have no issues
If you all want a video recording of this let me know and I can do that, it is also likely that fixing the original issue might resolve this one, but I wanted to at least inform you all just in case. If you all want me to make a new issue for this I can, since I know that can help with organization. Let me know if you need anything!
Scene in preview mode
Transitioning from the above to program
Transform as in image 1
Transform when fixed (Transitioned off of program)
Player when fixed (Transitioned off of program)