Question / Help OBS Virtual Cam - bad video quality in Teams, Skype, ...

Sepia

New Member
Hello,

i try to use Fuji Xt3 + CamLink 4k + OBS + Virtual Cam +Teams/Skype.

After a long way to get Virtual Cam in the Tools Menu of OBS and as selectable Cam in Skype/Teams now I have problems with the quality of the stream in Teams.

If I use CamLink 4K directly as Cam in Teams the resolution and quality is fine (FHD).
When I use OBS + VirtualCam as Cam in Teams, the result looks like bad scaled / scaling algorithm in low resolution(while in OBS itself it look fine, 1080p).

I tried different input output resolutions, scaling algorothms, bitstreams in OBS...
Smaler OBS output resolutions result in better not good feeds in Teams/Skype.

Any tipps for me how to get the 1080p out of OBS into Teams/Skype?

May thanks and best regards
Bo

Setup: Fuji XT3, CamLink4k, Win10, OBS 24.05, VirtualCam 2.0x, Skype/Teams
 

Sepia

New Member
21:50:16.138: CPU Name: Intel(R) Core(TM) i5-6600K CPU @ 3.50GHz
21:50:16.138: CPU Speed: 3504MHz
21:50:16.138: Physical Cores: 4, Logical Cores: 4
21:50:16.138: Physical Memory: 32692MB Total, 25638MB Free
21:50:16.138: Windows Version: 10.0 Build 18362 (revision: 720; 64-bit)
21:50:16.138: Running as administrator: false
21:50:16.138: Aero is Enabled (Aero is always on for windows 8 and above)
21:50:16.138: Windows 10 Gaming Features:
21:50:16.138: Game DVR: On
21:50:16.143: Sec. Software Status:
21:50:16.145: Kaspersky Anti-Virus: enabled (AV)
21:50:16.145: Windows Defender Antivirus: disabled (AV)
21:50:16.146: Windows-Firewall: enabled (FW)
21:50:16.146: Current Date/Time: 2020-04-09, 21:50:16
21:50:16.146: Browser Hardware Acceleration: true
21:50:16.146: Portable mode: false
21:50:16.541: OBS 24.0.0-rc5 (64-bit, windows)
21:50:16.541: ---------------------------------
21:50:16.563: ---------------------------------
21:50:16.563: audio settings reset:
21:50:16.563: samples per sec: 44100
21:50:16.563: speakers: 2
21:50:16.564: ---------------------------------
21:50:16.564: Initializing D3D11...
21:50:16.564: Available Video Adapters:
21:50:16.566: Adapter 0: NVIDIA GeForce GTX 980
21:50:16.566: Dedicated VRAM: 4250206208
21:50:16.566: Shared VRAM: 4255508480
21:50:16.566: output 0: pos={0, 0}, size={2560, 1440}, attached=true
21:50:16.569: Loading up D3D11 on adapter NVIDIA GeForce GTX 980 (0)
21:50:16.623: D3D11 loaded successfully, feature level used: b000
21:50:17.072: ---------------------------------
21:50:17.072: video settings reset:
21:50:17.072: base resolution: 1920x1080
21:50:17.072: output resolution: 1920x1080
21:50:17.072: downscale filter: Bilinear
21:50:17.072: fps: 25/1
21:50:17.072: format: NV12
21:50:17.072: YUV mode: 709/Full
21:50:17.072: NV12 texture support enabled
21:50:17.074: Audio monitoring device:
21:50:17.074: name: Standard
21:50:17.074: id: default
21:50:17.074: ---------------------------------
21:50:17.087: [CoreAudio encoder]: Adding CoreAudio AAC encoder
21:50:17.088: Failed to load 'en-US' text for module: 'decklink-ouput-ui.dll'
21:50:17.136: [AMF] AMF Test failed due to one or more errors.
21:50:17.136: Failed to initialize module 'enc-amf.dll'
21:50:17.166: [obs-browser]: Version 2.7.6
21:50:17.175: NVENC supported
21:50:17.226: Failed to load 'de-DE' text for module: 'obs-virtualoutput.dll'
21:50:17.243: VLC found, VLC video source enabled
21:50:17.250: No blackmagic support
21:50:17.260: ---------------------------------
21:50:17.260: Loaded Modules:
21:50:17.260: win-wasapi.dll
21:50:17.260: win-mf.dll
21:50:17.260: win-ivcam.dll
21:50:17.260: win-dshow.dll
21:50:17.260: win-decklink.dll
21:50:17.260: win-capture.dll
21:50:17.260: vlc-video.dll
21:50:17.260: text-freetype2.dll
21:50:17.260: rtmp-services.dll
21:50:17.260: obs-x264.dll
21:50:17.260: obs-vst.dll
21:50:17.260: obs-virtualoutput.dll
21:50:17.260: obs-transitions.dll
21:50:17.260: obs-text.dll
21:50:17.260: obs-qsv11.dll
21:50:17.260: obs-outputs.dll
21:50:17.260: obs-filters.dll
21:50:17.260: obs-ffmpeg.dll
21:50:17.260: obs-browser.dll
21:50:17.260: image-source.dll
21:50:17.260: frontend-tools.dll
21:50:17.260: enc-amf.dll
21:50:17.260: decklink-ouput-ui.dll
21:50:17.260: coreaudio-encoder.dll
21:50:17.260: ---------------------------------
21:50:17.260: ==== Startup complete ===============================================
21:50:17.274: All scene data cleared
21:50:17.274: ------------------------------------------------
21:50:17.339: WASAPI: Device 'Lautsprecher (Realtek High Definition Audio)' initialized
21:50:17.391: WASAPI: Device 'Mikrofon (Realtek High Definition Audio)' initialized
21:50:17.437: adding 46 milliseconds of audio buffering, total audio buffering is now 46 milliseconds (source: Mic/Aux)
21:50:17.437:
21:50:17.918: ---------------------------------
21:50:17.918: [DShow Device: 'CamLink 4k'] settings updated:
21:50:17.918: video device: Cam Link 4K
21:50:17.918: video path: \\?\usb#vid_0fd9&pid_0066&mi_00#6&341279d&0&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\global
21:50:17.918: resolution: 1920x1080
21:50:17.918: fps: 25.00 (interval: 400000)
21:50:17.918: format: NV12
21:50:17.950: using video device audio: no
21:50:17.950: separate audio filter
21:50:17.950: sample rate: 44100
21:50:17.950: channels: 2
21:50:17.950: audio type: Capture
21:50:18.088: Switched to scene 'TUI Chat 1080p'
21:50:18.088: ------------------------------------------------
21:50:18.089: Loaded scenes:
21:50:18.089: - scene 'Corona Bo':
21:50:18.089: - source: 'CamLink 4k' (dshow_input)
21:50:18.089: - source: 'Bild 4' (image_source)
21:50:18.089: - source: 'Rechts Unten' (image_source)
21:50:18.089: - source: 'Priv Cam' (text_gdiplus)
21:50:18.089: - source: 'Bild 5' (image_source)
21:50:18.089: - scene 'Pep':
21:50:18.089: - source: 'CamLink 4k' (dshow_input)
21:50:18.089: - scene 'TUI Chat 1080p':
21:50:18.089: - source: 'CamLink 4k' (dshow_input)
21:50:18.089: - source: 'Cam' (text_gdiplus)
21:50:18.089: - source: 'Logo' (image_source)
21:50:18.089: - source: 'Risse' (image_source)
21:50:18.089: - source: 'Links unten' (image_source)
21:50:18.089: - source: 'Rechts Unten' (image_source)
21:50:18.089: - scene 'TUI Chat 2 - virus':
21:50:18.089: - source: 'CamLink 4k' (dshow_input)
21:50:18.089: - source: 'Cam' (text_gdiplus)
21:50:18.089: - source: 'Logo' (image_source)
21:50:18.089: - source: 'Rechts Unten' (image_source)
21:50:18.089: - source: 'Links unten' (image_source)
21:50:18.089: - source: 'Risse' (image_source)
21:50:18.089: - source: 'Rechts Oben' (image_source)
21:50:18.089: - source: 'Bild 6' (image_source)
21:50:18.089: - scene 'TUI Chat 2k':
21:50:18.089: - source: 'CamLink 4k' (dshow_input)
21:50:18.089: - source: 'Cam' (text_gdiplus)
21:50:18.089: - source: 'Logo' (image_source)
21:50:18.089: - source: 'Risse' (image_source)
21:50:18.089: - source: 'Links unten' (image_source)
21:50:18.089: - source: 'Rechts Unten' (image_source)
21:50:18.089: - source: 'Rechts Oben' (image_source)
21:50:18.089: ------------------------------------------------
21:51:02.251: starting virtual-output on VirtualCam'1'
21:54:01.833: adding 185 milliseconds of audio buffering, total audio buffering is now 232 milliseconds (source: CamLink 4k)
21:54:01.833:
21:55:01.889: ==== Shutting down ==================================================
21:55:01.895: Switched to scene '(null)'
21:55:01.935: WASAPI: Device 'Lautsprecher (Realtek High Definition Audio)' Terminated
21:55:01.940: WASAPI: Device 'Mikrofon (Realtek High Definition Audio)' Terminated
21:55:01.945: All scene data cleared
21:55:01.945: ------------------------------------------------
21:55:01.968: Output 'VirtualOutput': stopping
21:55:01.968: Output 'VirtualOutput': Total frames output: 5992
21:55:01.968: Output 'VirtualOutput': Total drawn frames: 5993
21:55:01.973: virtual-output stop
21:55:02.000: Freeing OBS context data
21:55:02.028: [Scripting] Total detached callbacks: 0
 

Sepia

New Member
And the settings :-)
 

Attachments

  • Settings1.png
    Settings1.png
    263.8 KB · Views: 3,551
  • Settings2.png
    Settings2.png
    154.1 KB · Views: 3,488
  • Settings3.png
    Settings3.png
    319.2 KB · Views: 2,840

MrSpock

Member
welcome to to club... i am sitting now almost a week on this issue. no one knows, no one answers. More and more users having this issue.

Last results:
 

RobinSeaver

New Member
I think I'm finding that video quality is suffering due to limited upstream bandwidth. I'm only getting 1.5Mbit per second but trying to show 1080p
 

Sepia

New Member
Github OBS Virtcam Issue:

If I feed Teams directly with CamLink stream I have 1080p.
If I switch to CamLink --> OBS --> Virtual Cam --> Teams I have maybe 640p?
 

MrSpock

Member
Github OBS Virtcam Issue:

If I feed Teams directly with CamLink stream I have 1080p.
If I switch to CamLink --> OBS --> Virtual Cam --> Teams I have maybe 640p?

unfortinatly i can not try, since Camlink is sold out everywhere in Germany ...

I just saw on the Zoom Page, they do not offer 1080P streaming for all users, even if you Pay!

I had some better results by using older versions of NDI and Virtual Cam! At least in the preview, Skype now looks ok but in a Stream still unusable.


Will try teams tomorrow!

The big question is, have you tried streaming your desktop over the Camlink with readable results in 1080P?
 

Sepia

New Member
Hi, I ordered CamLink 4k at Amazon.de with "Wir werden Dich infomieren wenn wir eine Liefertermin haben bladiblub ..." It tooks 9 days in total...

Text is in Teams via OBS + OBS VirtCam not to read. ...
 

Sepia

New Member
Two examples shots from teams video conference preview that shows the dif.
 

Attachments

  • CamLink direct to Teams.JPG
    CamLink direct to Teams.JPG
    308 KB · Views: 3,736
  • CamLink to OBS to Teams.JPG
    CamLink to OBS to Teams.JPG
    295.2 KB · Views: 3,733

Sepia

New Member
I use now NDI Tools (Wlan Video) + NDI Plugin in OBS for 1080p.
The Plugin is similar to OBS VirtCam Plugin.
Aditionally you neet the (Win10) NDI Tools installed and started in the background.

Both plugins are not 100% stable with CamLink4k + Fuji - but 90% ;-)
 

scyto

New Member
This is a bug in teams windows client. I have the same issue with XsplitBroadcaster.
It seems all these virtual cameras offer up a set of resolutions and color formats to teams (via dshow i believe?).

For example if 640x360 is offered to Teams client in addition to higher OR lower resolutions it picks this resolution instead of an optimal resolution.

Workarounds:
  1. Use the web based teams client, it seems to pick from the list of internally offered resolutions correctly
  2. Modify the list of offered resolutions:
    1. on xsplit this can be done by commenting out the problematic resolution in an XML configuration file
    2. this doesn't seem possible on OBS Studio virtual output plugin - devs ?
If you work for a large company that has enteprise support with Microsoft I suggest you make your IT dept bug it with Microsoft. I did. the more they get it escalated the better. do not use MS forums, they are no help (i already tried that).
 
Last edited:

YellowKiwi

New Member
Scyto seems to be on the right path. I try in a browser and I got good result and within the Windows desktop client is just 640x360.

I look a bit in the sources files and found in this file :https://github.com/Fenrirthviti/obs-virtual-cam/blob/master/src/virtual-source/virtual-cam.cpp on line 243-246.

Code:
format_list.push_back(struct format(1920, 1080, 333333));
format_list.push_back(struct format(1280, 720, 333333));
format_list.push_back(struct format(960, 540, 333333));
format_list.push_back(struct format(640, 360, 333333));


Maybe be I will try to spin off the dev environment this week to look at this a little more.
 

scyto

New Member
@YellowKiwi nice work on the source code; if the official Virtual Camera offers that 640x360 it risks the same issue.
If its easy to compile yourself a private version without that 640x360 it would validate if it is that resolution excplictly or some thing else... but only if it is easy, if not, the web client work around is a good one.
 

YellowKiwi

New Member
@YellowKiwi nice work on the source code; if the official Virtual Camera offers that 640x360 it risks the same issue.
If its easy to compile yourself a private version without that 640x360 it would validate if it is that resolution excplictly or some thing else... but only if it is easy, if not, the web client work around is a good one.

The native camera should output the same resolution as your OBS settings, you can read a bit more there.
https://github.com/obsproject/obs-studio/pull/3087
Teams have been tested, I hope for the feature in August when I will be teaching online.
 

scyto

New Member
@YellowKiwi thanks, coding is a bit beyond me, but looking at the source file changes including the libdshowcpature dll it looks like there are no hard coded resolutions offered and it just uses the output resolution. Did i get that right? If so I agree this should step around the issue with teams. Thanks for your help.
 

scyto

New Member
One more note - this can affect physical devices too. I just realized this issue also affects my Logitech brio camera when used natively with teams binary client.
 
Top