I’m not really expecting a solution from posting this; really just more wondering if anyone else is encountering this specific issue. Also disclaimer I’m running Linux and I understand that VRChat is not officially supported under Linux.
This post wound up becoming absurdly large and overly detailed, so I’ll give a tl;dr version up front and if anyone happens to want the detailed version I can post that as a reply. So, the basics:
Video players stopped working around 15 May, but not the usual way (the ‘usual way’ being yt-dlp unable to resolve video url because of youtube api changes)
Tried a few different Proton versions; most players would say they were playing but nothing would actually play
ProTV3 in particular would cause the game to hard-crash
VRChat logs stopped at “Playing (url) with API MediaFoundation”
System logs showed VRChat.exe segfaulting on proton’s ntdll.so lib
Disabled video entirely for a while (chmod 000 yt-dlp.exe) 'cos I didn’t want to deal with it.
Updated system last weekend, saw a new Proton get installed, reenabled yt-dlp.exe and tried the new Proton, to mixed results:
Avatar Test Chamber running ProTV3: immediate segfault crash again
Cozy Boat running USharpVideo: An older video played fine (albeit at 360p), a second video caused the same segfault crash
Hokyl Night running iwaSync3 with a default MaxResolution of 720p: Every video I threw at it played flawlessly
Additional observation: The “resolved” video stream URLs are significantly different between players for the same video and/or depending on resolution.
So, yeah. That’s weird; it seems like seemingly out of nowhere any attempts to play video above 720p cause a segfault. I realize the number of people running VRC under linux is pretty small as-is, but has anyone else had this happen to them?
For reference: CachyOS, 9070XT, proton-cachyos-slr 11.0.20260521
Unfortunately, a week later, I’m still not getting a ‘new’ yt-dlp.exe from VRChat; any time I delete the existing one to force a re-download, it’s an identical binary to the one I had before posting this topic, and still outputs URLs that cause VRC to segfault and die when the requesting video player asks for a 1080p video stream. (I did find it’s not just ProTV3; anything that requests a 1080p video causes a segfault.)
I’m sure the support staff would not approve, but I got sick of it and wrote a thin shim program in Rust that intercepts outbound calls to yt-dlp.exe and replaces the -f flag with a known-good format string (the one from an iwaSync3 player set to 720p max resolution). Everything else gets passed along to the ‘real’ yt-dlp and its stdout is handed back up to VRC. It doesn’t work for live streams (ie, LoFiGirl or ChillHop), and I don’t care enough to figure out why at this point. The code’s on github though (foxboxpdx/ytdlp-shim) if anyone wants to see what it does or try it out.
Regardless, it’s weird and a pain in the butt but at least this way I don’t have to scramble to chmod 000 yt-dlp.exe whenever I’m loading into a new world before the video player crashes me.