I encountered this issue yesterday, with the yt-dlp VRChat is distributing, while testing the VRC Beta, and what I usually do to fix this is download the latest compiled binary from the yt-dlp GitHub repo, replace the one in AppData, set the file to read-only, and set the integrity level to medium (since it’s an unsigned binary running under AppData\LocalLow). This is, of course, not an amazing idea, as setting the integrity level of the binary to medium creates the potential for abuse, though the risk of exploitation is likely very low - just be aware. Here’s a couple lines of PowerShell that will delete the existing yt-dlp, replace it with one you download, set it to read-only, and set the integrity level to medium with icacls:
# Replace "C:\Users\Username\Downloads\yt-dlp.exe" with the path to a known working copy of yt-dlp:
$PathToGoodYtDlp = "C:\Users\Username\Downloads\yt-dlp.exe"
Remove-Item -Path "$env:APPDATA\..\LocalLow\VRChat\VRChat\Tools\yt-dlp.exe" -Force
Copy-Item -Path $PathToGoodYtDlp -Destination "$env:APPDATA\..\LocalLow\VRChat\VRChat\Tools\yt-dlp.exe"
Set-ItemProperty -Path "$env:APPDATA\..\LocalLow\VRChat\VRChat\Tools\yt-dlp.exe" -Name IsReadOnly -Value $true
icacls "$env:APPDATA\..\LocalLow\VRChat\VRChat\Tools\yt-dlp.exe" /setintegritylevel medium
I couldn’t figure out what the issue was with the yt-dlp VRC downloads - much like your example in the logs, it looks like yt-dlp is resolving videos correctly, but the failing URL from the VRC yt-dlp is slightly different than the working one I get from using my own yt-dlp binary.