AgoraIO / OBS

46 stars 35 forks source link

Resolution/frame is not correct when streaming from OSX #20

Open b2bear opened 3 years ago

b2bear commented 3 years ago

When we stream from OSX with OBS studio version 25.0.7-38-g09e3e6ed, the resolution/frame is not correct.

To repro:

expected:

actually:

b2bear commented 3 years ago

See https://imgur.com/a/teiCNRs

The bottom image is the client's view.

sbd021 commented 3 years ago

Do you remember the channel name? Can you get agora sdk log located in %localAppdata%/Agora/obs32(or obs64)?

sbd021 commented 3 years ago

Check osx render mode whether it's fit mode

b2bear commented 3 years ago

~/Library/Application Support/obs-studio/logs/cat "2020-12-17 21-00-38.txt"

21:00:38.419: CPU Name: Intel(R) Core(TM) i7-6820HQ CPU @ 2.70GHz 21:00:38.419: CPU Speed: 2700MHz 21:00:38.419: Physical Cores: 4, Logical Cores: 8 21:00:38.419: Physical Memory: 16384MB Total 21:00:38.419: OS Name: Mac OS X (NSMACHOperatingSystem) 21:00:38.419: OS Version: Version 10.15.7 (Build 19H2) 21:00:38.419: Kernel Version: 19.6.0 21:00:38.423: hotkeys-cocoa: Getting keyboard keys failed 21:00:38.423: hotkeys-cocoa: Getting keyboard keys failed 21:00:38.423: hotkeys-cocoa: Using layout 'com.apple.keylayout.US' 21:00:38.424: Portable mode: false 21:00:38.545: OBS 25.0.7-38-g09e3e6ed (mac) 21:00:38.545: --------------------------------- 21:00:38.546: --------------------------------- 21:00:38.546: audio settings reset: 21:00:38.546: samples per sec: 44100 21:00:38.546: speakers: 2 21:00:38.547: --------------------------------- 21:00:38.547: Initializing OpenGL... 21:00:39.442: Loading up OpenGL on adapter ATI Technologies Inc. AMD Radeon Pro 455 OpenGL Engine 21:00:39.442: OpenGL loaded successfully, version 4.1 ATI-3.10.18, shading language 4.10 21:00:39.548: --------------------------------- 21:00:39.548: video settings reset: 21:00:39.548: base resolution: 405x720 21:00:39.548: output resolution: 404x720 21:00:39.548: downscale filter: Bicubic 21:00:39.548: fps: 24000/1001 21:00:39.548: format: NV12 21:00:39.548: YUV mode: 601/Partial 21:00:39.548: NV12 texture support not available 21:00:39.548: Audio monitoring device: 21:00:39.548: name: Default 21:00:39.548: id: default 21:00:39.549: --------------------------------- 21:00:39.550: Failed to load 'en-US' text for module: 'decklink-ouput-ui.so' 21:00:39.557: os_dlopen(libpython3.7m.dylib->libpython3.7m.dylib): dlopen(libpython3.7m.dylib, 257): image not found 21:00:39.557: 21:00:39.557: [Python] Could not load library: libpython3.7m.dylib 21:00:39.563: agora_loaded 21:00:39.616: A DeckLink iterator could not be created. The DeckLink drivers may not be installed 21:00:39.616: No blackmagic support 21:00:39.671: [VideoToolbox encoder]: Adding VideoToolbox H264 encoders 21:00:39.720: [obs-browser]: Version 2.8.6 21:00:39.729: VLC found, VLC video source enabled 21:00:39.729: --------------------------------- 21:00:39.729: Loaded Modules: 21:00:39.729: vlc-video.so 21:00:39.729: text-freetype2.so 21:00:39.729: rtmp-services.so 21:00:39.729: obs-x264.so 21:00:39.729: obs-vst.so 21:00:39.729: obs-transitions.so 21:00:39.729: obs-outputs.so 21:00:39.729: obs-libfdk.so 21:00:39.729: obs-filters.so 21:00:39.729: obs-ffmpeg.so 21:00:39.729: obs-browser.so 21:00:39.729: mac-vth264.so 21:00:39.729: mac-syphon.so 21:00:39.729: mac-decklink.so 21:00:39.729: mac-capture.so 21:00:39.729: mac-avcapture.so 21:00:39.729: mac-agora.so 21:00:39.729: linux-jack.so 21:00:39.729: image-source.so 21:00:39.729: frontend-tools.so 21:00:39.729: decklink-ouput-ui.so 21:00:39.729: coreaudio-encoder.so 21:00:39.729: --------------------------------- 21:00:39.729: os_dlopen(../obs-plugins/obs-browser->../obs-plugins/obs-browser.so): dlopen(../obs-plugins/obs-browser.so, 257): image not found 21:00:39.729: 21:00:39.729: ==== Startup complete =============================================== 21:00:39.740: All scene data cleared 21:00:39.740: ------------------------------------------------ 21:00:39.763: coreaudio: device 'Built-in Microphone' initialized 21:00:39.763: [Loaded global audio device]: 'Mic/Aux' 21:00:39.792: Video Capture Device: Selected device 'FaceTime HD Camera (Built-in)' 21:00:39.793: Video Capture Device: Using preset 1280x720 21:00:39.826: Switched to scene 'Scene' 21:00:39.826: ------------------------------------------------ 21:00:39.826: Loaded scenes: 21:00:39.826: - scene 'Scene': 21:00:39.834: - source: 'Text (FreeType 2)' (text_ft2_source_v2) 21:00:39.834: - source: 'Video Capture Device' (av_capture_input) 21:00:39.834: - source: 'Window Capture' (window_capture) 21:00:39.834: ------------------------------------------------ 21:00:40.411: adding 23 milliseconds of audio buffering, total audio buffering is now 23 milliseconds (source: Mic/Aux) 21:00:40.411: 21:01:17.965: --------------------------------- 21:01:17.965: video settings reset: 21:01:17.965: base resolution: 1280x720 21:01:17.965: output resolution: 1280x720 21:01:17.965: downscale filter: Bicubic 21:01:17.965: fps: 24000/1001 21:01:17.965: format: NV12 21:01:17.965: YUV mode: 601/Partial 21:01:17.965: NV12 texture support not available 21:01:17.969: Settings changed (outputs, video) 21:01:17.969: ------------------------------------------------ 21:01:30.437: --------------------------------- 21:01:30.437: video settings reset: 21:01:30.437: base resolution: 720x1280 21:01:30.437: output resolution: 720x1280 21:01:30.437: downscale filter: Bicubic 21:01:30.437: fps: 24000/1001 21:01:30.437: format: NV12 21:01:30.437: YUV mode: 601/Partial 21:01:30.437: NV12 texture support not available 21:01:30.438: Settings changed (outputs, video) 21:01:30.438: ------------------------------------------------ 21:02:56.082: ==== Shutting down ================================================== 21:02:56.085: Switched to scene '(null)' 21:02:56.346: All scene data cleared 21:02:56.346: ------------------------------------------------ 21:02:56.352: Output 'simple_agora_raw_output_info': stopping 21:02:56.353: Output 'simple_agora_raw_output_info': Total frames output: 1552 21:02:56.353: Output 'simple_agora_raw_output_info': Total drawn frames: 1553 21:02:56.468: Freeing OBS context data 21:02:56.471: [Scripting] Total detached callbacks: 0 21:02:56.476: == Profiler Results ============================= 21:02:56.476: run_program_init: 1583.83 ms 21:02:56.476: ┣OBSApp::AppInit: 4.301 ms 21:02:56.476: ┃ ┗OBSApp::InitLocale: 2.132 ms 21:02:56.476: ┗OBSApp::OBSInit: 1469.27 ms 21:02:56.476: ┣obs_startup: 4.729 ms 21:02:56.476: ┗OBSBasic::OBSInit: 1342.58 ms 21:02:56.476: ┣OBSBasic::InitBasicConfig: 0.256 ms 21:02:56.476: ┣OBSBasic::ResetAudio: 0.084 ms 21:02:56.476: ┣OBSBasic::ResetVideo: 1002.31 ms 21:02:56.476: ┣OBSBasic::InitOBSCallbacks: 0.012 ms 21:02:56.476: ┣OBSBasic::InitHotkeys: 0.08 ms 21:02:56.476: ┣obs_load_all_modules: 180.036 ms 21:02:56.476: ┃ ┣obs_init_module(coreaudio-encoder.so): 0.006 ms 21:02:56.476: ┃ ┣obs_init_module(decklink-ouput-ui.so): 0.698 ms 21:02:56.476: ┃ ┣obs_init_module(frontend-tools.so): 3.952 ms 21:02:56.476: ┃ ┣obs_init_module(image-source.so): 0.009 ms 21:02:56.476: ┃ ┣obs_init_module(linux-jack.so): 0.002 ms 21:02:56.476: ┃ ┣obs_init_module(mac-agora.so): 0.038 ms 21:02:56.476: ┃ ┣obs_init_module(mac-avcapture.so): 51.16 ms 21:02:56.476: ┃ ┣obs_init_module(mac-capture.so): 0.004 ms 21:02:56.476: ┃ ┣obs_init_module(mac-decklink.so): 0.11 ms 21:02:56.476: ┃ ┣obs_init_module(mac-syphon.so): 0.002 ms 21:02:56.476: ┃ ┣obs_init_module(mac-vth264.so): 53.608 ms 21:02:56.476: ┃ ┣obs_init_module(obs-browser.so): 0.072 ms 21:02:56.476: ┃ ┣obs_init_module(obs-ffmpeg.so): 0.01 ms 21:02:56.476: ┃ ┣obs_init_module(obs-filters.so): 0.028 ms 21:02:56.476: ┃ ┣obs_init_module(obs-libfdk.so): 0.002 ms 21:02:56.476: ┃ ┣obs_init_module(obs-outputs.so): 0.006 ms 21:02:56.476: ┃ ┣obs_init_module(obs-transitions.so): 0.009 ms 21:02:56.476: ┃ ┣obs_init_module(obs-vst.so): 0.015 ms 21:02:56.476: ┃ ┣obs_init_module(obs-x264.so): 0.002 ms 21:02:56.476: ┃ ┣obs_init_module(rtmp-services.so): 1.052 ms 21:02:56.476: ┃ ┣obs_init_module(text-freetype2.so): 0.015 ms 21:02:56.476: ┃ ┗obs_init_module(vlc-video.so): 0.781 ms 21:02:56.476: ┣OBSBasic::ResetOutputs: 10.306 ms 21:02:56.476: ┣OBSBasic::CreateHotkeys: 0.052 ms 21:02:56.476: ┣OBSBasic::InitService: 0.158 ms 21:02:56.476: ┣OBSBasic::InitPrimitives: 0.103 ms 21:02:56.476: ┗OBSBasic::Load: 99.671 ms 21:02:56.476: obs_hotkey_thread(25 ms): min=0 ms, median=0 ms, max=0.061 ms, 99th percentile=0.001 ms, 100% below 25 ms 21:02:56.476: audio_thread(Audio): min=0.008 ms, median=0.05 ms, max=3.628 ms, 99th percentile=0.573 ms 21:02:56.476: obs_graphics_thread(41.7083 ms): min=0.116 ms, median=1.168 ms, max=35.594 ms, 99th percentile=3.22 ms, 100% below 41.708 ms 21:02:56.476: ┣tick_sources: min=0.001 ms, median=0.018 ms, max=26.905 ms, 99th percentile=0.072 ms 21:02:56.476: ┣output_frame: min=0.103 ms, median=0.678 ms, max=10.159 ms, 99th percentile=1.215 ms 21:02:56.476: ┃ ┗gs_context(video->graphics): min=0.103 ms, median=0.678 ms, max=10.158 ms, 99th percentile=1.214 ms 21:02:56.476: ┃ ┣render_video: min=0.017 ms, median=0.626 ms, max=9.995 ms, 99th percentile=1.125 ms 21:02:56.476: ┃ ┃ ┗render_main_texture: min=0.013 ms, median=0.622 ms, max=9.992 ms, 99th percentile=1.118 ms 21:02:56.476: ┃ ┗gs_flush: min=0.025 ms, median=0.045 ms, max=1.476 ms, 99th percentile=0.262 ms 21:02:56.476: ┗render_displays: min=0 ms, median=0.435 ms, max=23.717 ms, 99th percentile=2.241 ms 21:02:56.476: OBSBasic::ResetOutputs: min=0.161 ms, median=0 ms, max=0.2 ms, 99th percentile=0.2 ms 21:02:56.476: OBSBasic::ResetVideo: min=56.129 ms, median=0 ms, max=74.044 ms, 99th percentile=74.044 ms 21:02:56.476: obs_graphics_thread(41.7083 ms): min=0.592 ms, median=1.119 ms, max=4.26 ms, 99th percentile=3.408 ms, 100% below 41.708 ms 21:02:56.476: ┣tick_sources: min=0.012 ms, median=0.017 ms, max=0.094 ms, 99th percentile=0.074 ms 21:02:56.476: ┣output_frame: min=0.197 ms, median=0.653 ms, max=1.195 ms, 99th percentile=1.104 ms 21:02:56.476: ┃ ┗gs_context(video->graphics): min=0.197 ms, median=0.652 ms, max=1.194 ms, 99th percentile=1.104 ms 21:02:56.476: ┃ ┣render_video: min=0.092 ms, median=0.61 ms, max=1.142 ms, 99th percentile=1.053 ms 21:02:56.476: ┃ ┃ ┗render_main_texture: min=0.089 ms, median=0.606 ms, max=1.137 ms, 99th percentile=1.048 ms 21:02:56.476: ┃ ┗gs_flush: min=0.026 ms, median=0.037 ms, max=0.168 ms, 99th percentile=0.13 ms 21:02:56.476: ┗render_displays: min=0.273 ms, median=0.406 ms, max=3.112 ms, 99th percentile=2.496 ms 21:02:56.476: obs_graphics_thread(41.7083 ms): min=0.146 ms, median=1.501 ms, max=10.89 ms, 99th percentile=3.531 ms, 100% below 41.708 ms 21:02:56.476: ┣tick_sources: min=0.002 ms, median=0.017 ms, max=0.193 ms, 99th percentile=0.059 ms 21:02:56.476: ┣output_frame: min=0.128 ms, median=0.895 ms, max=10.339 ms, 99th percentile=1.384 ms 21:02:56.476: ┃ ┣gs_context(video->graphics): min=0.128 ms, median=0.735 ms, max=10.338 ms, 99th percentile=1.186 ms 21:02:56.476: ┃ ┃ ┣render_video: min=0.019 ms, median=0.718 ms, max=10.331 ms, 99th percentile=1.173 ms 21:02:56.476: ┃ ┃ ┃ ┣render_main_texture: min=0.015 ms, median=0.611 ms, max=1.54 ms, 99th percentile=0.999 ms 21:02:56.476: ┃ ┃ ┃ ┣render_convert_texture: min=0.021 ms, median=0.028 ms, max=9.022 ms, 99th percentile=0.096 ms, 0.753152 calls per parent call 21:02:56.476: ┃ ┃ ┃ ┗stage_output_texture: min=0.058 ms, median=0.082 ms, max=0.726 ms, 99th percentile=0.341 ms, 0.753152 calls per parent call 21:02:56.476: ┃ ┃ ┣gs_flush: min=0 ms, median=0.001 ms, max=0.557 ms, 99th percentile=0.108 ms 21:02:56.476: ┃ ┃ ┗download_frame: min=0 ms, median=0.003 ms, max=0.044 ms, 99th percentile=0.006 ms, 0.753152 calls per parent call 21:02:56.476: ┃ ┗output_video_data: min=0.136 ms, median=0.177 ms, max=1.663 ms, 99th percentile=0.326 ms, 0.752667 calls per parent call 21:02:56.476: ┗render_displays: min=0.001 ms, median=0.545 ms, max=8.2 ms, 99th percentile=2.484 ms 21:02:56.476: video_thread(video): min=0.18 ms, median=0.955 ms, max=2.793 ms, 99th percentile=1.494 ms 21:02:56.476: ================================================= 21:02:56.476: == Profiler Time Between Calls ================== 21:02:56.476: obs_hotkey_thread(25 ms): min=25.015 ms, median=28.452 ms, max=32.275 ms, 12.5633% within ±2% of 25 ms (0% lower, 87.4367% higher) 21:02:56.476: obs_graphics_thread(41.7083 ms): min=36.767 ms, median=41.711 ms, max=46.736 ms, 30.8696% within ±2% of 41.708 ms (35.4348% lower, 33.6957% higher) 21:02:56.476: obs_graphics_thread(41.7083 ms): min=37.001 ms, median=41.538 ms, max=46.542 ms, 31.5436% within ±2% of 41.708 ms (36.2416% lower, 32.2148% higher) 21:02:56.476: obs_graphics_thread(41.7083 ms): min=36.867 ms, median=41.67 ms, max=46.718 ms, 48.8113% within ±2% of 41.708 ms (25.6186% lower, 25.5701% higher) 21:02:56.476: ================================================= 21:02:56.503: Number of memory leaks: 3

b2bear commented 3 years ago

How can we check "osx render mode"?

b2bear commented 3 years ago

"YXxByxvZpVZlREmAyCVZ" is one of the channels we tested.

plutoless commented 3 years ago

@b2bear we see from backend you are using websdk. while you are playing the stream it has an option to decide if you want the video fit the container or fill the container, maybe you can check that out?