Hi Tupper, I’m not sure this is entirely accurate. Webcam support in Wine/Proton is working fine for other applications. If you want to verify you can run a basic webcam viewer app such as Release tCamView v1.3.7 · augamvio/tCamView · GitHub tCamView (Download the protable/zip version) from within Wine or Proton (Via protontricks)and the webcam image comes through as intended. VRchat can see webcams on the host system under Proton, but for reasons only you guys can really dig in to, refuses to establish the image stream and will time out, returning a message that the device is busy or incompatible. can also confirm same behavior using OBS Virtual Webcam to rule out a device specific quirk…
Echoing the same thing as Ronnie, other programs have been able to use the webcam just fine for years (VNyan and Warudo in particular) both in Proton and base-Wine, so I’m not sure about whatever “hooks” are mentioned here.
VRC sees the V4L2 UVC webcam just fine, it just doesn’t (seem to ever try) grabbing an image.
I seem to have the same issue. My OS is Ubuntu 24.04 and I use the patched proton that fixes video players not working in VRC (GE-Proton9-22-rtsp17-1). I installed the tCamViewer in the same proton environment as VRC and it runs flawlessly, meaning I can see the webcam stream. My webcam is Logitech Brio and even though VRChat detects it, it just fails to turn on and the white LED indicating that the webcam is in use never turns on.
I am also using GE-Proton-22-rtsp17-1 and while it can recognize the camera, it doesn’t turn on the camera or grab an image. I am also using V4L2-loopback as the standard for cameras. I tried using the OBS Virtual Camera as well, without success.
from my testing alongside log reading i’ve discovered these two
trace:loaddll: … AVProVideo.dll: VRChat is not using a simple, direct method to access my camera. It’s using a third-party Unity Engine plugin called “AVPro Video”. This plugin is responsible for all video capture and playback. The problem isn’t just with Proton and VRChat, it’s specifically with how AVProVideo interacts with Proton.
fixme:mfplat:video_processor_ProcessMessage and fixme:mfplat:media_engine_IsSeeking: These lines confirm that AVProVideo is trying to use the Media Foundation (mfplat) framework. This is Microsoft’s modern library for handling multimedia tasks. The fixme tag means that Proton has encountered a function within Media Foundation that it hasn’t fully implemented yet. It’s trying to continue, but it’s hitting unimplemented parts of the API.
solutions as of now are either running vrchat in a virtual machine
waiting for proton to add the missing API
vrchat changes how it handle access to cameras for Linux users
i would send the entire log but its 485k lines and nobody is reading all this lol
VRChat’s EAC doesn’t allow you to run it in A VM (without some qemu hackery I guess)
but this is super useful information regardless.
I can see 2 potential paths forward.
Opening a bug on Proton/Wine to fix/improve AVPro implementations (Will probably never happen or will take 10+ years for an upstream solution like everything else)
VRC Could add support for VMC-Protocol so that face tracking can be done externally in a known, working face and upper body tracker (Probably easier to implement) such as XR Animator which is Electron based and works fine on Linux.
Hopefully they fix this, as it’s quite disappointing having everything ready for selfie expression and it not working because of the missing APIs while not being able to do anything about it makes me quite sad. While I know the VRChat developers can’t fix the missing APIs on Wine/Proton directly (and it will probably take a while to get the fixes for it; hopefully GE Proton gives a patch for it), could we maybe use other ways to obtain the camera feed for the tracking? As far as I know, the problem is the used API (AVPro) not interacting well with Proton, so is it possible to use another way? Maybe IP-based? or just an AVPro alternative that works for webcams under Proton?
(I’m not super experienced with this, but I really want this fixed.)
This is also what I’ve found after having spent 2 days with this issue. VRChat (underlying software of) is trying to use Media Foundation with the camera, but this has never been implemented into Proton 9, 10, GE 10-23, and others probably too. I’ve also noticed that when not selecting to force the use of a specific version, no webcams get registered in the choose menu at all.
The probable reason why VRChat specifically does not work, is because it’s most likely using exclusively Media Foundation. There is in fact another, implemented (as far as I know) API called DirectShow. While the modules for this (quartz.dll and qcap.dll) do seem to get loaded, I think that VRChat is not using it as a fallback. And if they are there is something wrong with that.
Two things to keep in mind: First, I do not have experience with Unity, I’m only theoretically speaking, with the data that I can get my hands on. I do not know whether what I’m saying is actually possible to do, and whether it’s actually to do with VRChat, or just Proton. Second, this is still a windows-only game. I think it’s not impossible, but is unlikely that they’re going to fix this issue, simply because it is niche.
I’ve now also dug through the logs of VRChat itself and I found two other things. VRChat initializes AVProVideoCapture in the loading process. I don’t really know implications of this, but it happens while the user is still waiting on the startup screen. Second thing is that whenever you start the camera there’s an estimated 2.5 milion miliseconds or around 41 minutes of end-to-end latency, which doesn’t seem quite right.
That’s about all I have right now. Oh yeah and I’m using OBS Virtual Camera, tried both directly and converted to MJPEG through ffmpeg.
The lacking AVPro is missing all the way up to Wine, so Proton-GE won’t accept the bug report, as it’s an upstream problem to be fixed. (Not their problem)
Proton at the Valve Level is probably also unlikely to resolve this directly as it is an issue from Upstream wine at its core. They might be coerced in to adding and upstream submitting a solution, but I get the feeling that the proton devs are much too busy working on FEX for the Steam Frame right now.
It’d honestly be better if VRChat just added VMC-Protocol as an alternative to direct webcam capture, this is already a Unity framework that can be pulled in and it generates the appropriate IK data needed to animate the armature and blend shapes as far as I know.
This solution also benefits people who aren’t affected by this issue as it lets them use their favorite face tracking/vTuber software of choice for the tracking, if they for some reason have a preference.
I am running Arch Linux and am tired of Dual Booting for the sole purpose of using Face Tracking. So i’ve been checking this thread from time to time.
That said - I have run into a few people who apparently have tricked their game into running on Unreal Engine instead of Unity. One such person claimed to be on Linux with this method and using Selfie Expression….. But i’d imagine that is a breach of TOS.
One of them were some VRC TikToker. I suppose the best bet would be to figure out what VRC Tikokers there are who solely play on Linux and narrow it down haha
Could this bug gain a bit more attention by the developers? this thread alone has 1.7k+ views and yet there hasn’t been any confirmation or acknowledgment by the developers ):
yeah. i very recently started playing vrc bc of friends, and its quite depressing to not be able to use the selfie expression feature, esp considering it would be an easy fix apparently (according to what was said in this thread). I hope they’ll fix it eventually, and i figure they will bc of ppl who use steam deck and how much steam is investing in compat w steam deck.