No playback on Video Player on Linux

Heyo, I’m not sure how long this has been an issue on Linux for, but it would seem that there aren’t any FFMPEG executables for Linux, and that may be causing that issue.

I’ll update this post if I find some logs to give proof that it doesn’t work.

My current distribution is Kubuntu 22.04.1 LTS (Ubuntu but using the KDE plasma desktop environment).


Update: I should probably update this now that I and many other people in the comments have figured it out.

Check out this reply for a complete guide on how to get video players working completely. (Thank you Dakiny!!)
^TLDR on this one: Manually install SpookySkeleton’s or GloriousEggroll’s custom Proton-GE.

I can give a few things why I think why video players don’t work in linux;
AVPro doesn’t support linux playback on hardware, and the youtube-dl.exe binary that is shipped with VRChat doesn’t run on the official version of proton.

Let me know if I put in anything incorrect or if I should add on to this :smile:

1 Like
  • I can vouch for this problem as well. I’ve experienced this problem on both on Kubuntu 22.04 and the Steam Deck. I thought I saw a fix for this in older patch notes, but there obviously still seems to be some issues. Just know you’re not the only one.
1 Like

I just launched the game on my laptop that runs Debain 11, and it works! I dunno how, but I’ll figure it out in a bit.

Try changing the photon version to the latest one in the steam game properties

This is an issue with certain players, I’m not sure but depending on which method of video playback they use they sometimes don’t function properly

Can confirm that this still happens in the newest vr chat build, using steam deck beta os and tested with multiple proton versions, experimental, 7, GE7-54
I’m getting a black screen from videos with no audio.

1 Like

Any updates on this situation? Any fixes or workarounds?
In my case (on Mint btw), I can use video players to stream audio, but they return an error when trying to play video. This is incredibly frustrating because I can’t even participate in most club events, which are half the reason I’m on this game.

Update: I’ve installed all the related codecs and libraries I could think of, disabled vsync and set the avpro launch option but nothing has changed. I’m going to keep researching and trying things until it works.

Do other games use media foundation? I wonder if VRChat just happens to be using something uncommon.

Alright, after two days of messing around I’m beginning to understand what’s up. All info for this issue is scattered around github and protondb etc. so I’m gonna post all relevant stuff I’ve gathered here for accessibility. This is my experience on Mint, but should be relatively universal advice for popular distros.

  • VRC no longer uses youtube-dl, they now use the AVPro player which needs to be emulated alongside the game. Add
    ‘gamemoderun %command% --enable-avpro-in-proton’ to your Steam launch options. (also may need ‘–disable-hw-video-decoding’ which diverts decoding to the software, but not always necessary and can cause other bugs.)
  • The latest Proton-GE (make sure you get it from the official github!) is recommended as it includes fixes that can resolve player issues. (Videos didn’t work until I installed it.)
  • Make sure you have the latest wine (9.0+) AND latest winetricks installed. Use the winetricks dll installer to get all the DirectX/DirectShow/Windows Media Framework/Virtual C++ and related video/audio libraries. Use winecfg to set their priority to native->builtin. (I don’t know how much of this is necessary. This is just to ensure maximum compatibility.)
  • Make sure you have all the GStreamer, FFMpeg and LibAV libraries including RTSP for native compatibility.
    At this point, AVPro players should seamlessly load Youtube videos. I’m still unable to load RTSP streams (VRCDN etc.) but am scouring for info that can help with patching it.

Hope this helps for now! I’ll be back if I figure anything else out on my own.

You sure on that? I haven’t checked recently but the way it used to work is that yt-dlp is used to get a direct video link, specifically to a combined mp4 file with audio and video. Due to regular changes in websites in general the yt-dlp.exe that VRChat hands out is checked at least once every session.

yt-dlp can suggest a change to the URL given to avpro, is my understanding of how they work together.

My bad, you’re right. I set up a log last night and saw yt-dlp being used. I guess the major difference is how yt-dl is implemented in the mix now(?) I’m just going off random info from threads…
But!.. While reading over this github thread again
(VRChat (438100) · Issue #1199 · ValveSoftware/Proton · GitHub) I literally just noticed something I must have glossed over a few times. There is a legit well-maintained fork of Proton-GE with an RTSP patch. (Releases · SpookySkeletons/proton-ge-rtsp · GitHub)
Also, it looks like using MPEG-TS instead is the solution. Hopefully, club owners/MCs will pick up on this and everyone will be able to enjoy music events equally in the near future!

2 Likes

Post 1 of detailed guide to Get VR working with Video Players on Linux.
(New posters can only post 5 links and I registered simply to post this.)

Install KDE Plasma Desktop (Linux Mint)
Note: this doesn’t seem to matter. Many guide say you MUST use KDE but I’ve gotten this working with Linux Mint Cinnamon default GNOME.
I don’t Gnome give it a try without then in doubt install? ٩(^‿^)۶

To install KDE Plasma on Linux Mint, run the following command:

sudo apt install kde-plasma-desktop

After installation, log out, and choose KDE from the session options at the login screen.

Ensure Correct Drivers
YOU MUST USE PROPRIETARY DRIVERS. don’t bother trying use the Open source ones - it will not work. Trust me I tried. That said please feel free to prove me wrong, I wish they did work!

Go to Menu > Control Center > Administration > Driver Manager.

Select the correct driver for your system.

Headset Setup in Developer Mode

Your VR headset must be in Developer Mode for some configurations. Follow this YouTube guide.

Installing ALVR (for Streaming VR to the Headset)

Follow this YouTube guide for installing ALVR.

If you can’t find ALVR in the apps, note that it’s hidden under “Unknown Sources” after the Quest software v54 update. To locate it:

Go to the “Search apps” bar.

Click on the search bar and pull down the “All” menu to find it.

Set Steam VR Beta:

Open Steam VR Properties > Betas and choose SteamVR Beta Update.

Let it update and restart Steam.

See Next Post- this tutorial was split as I’m unable to post more than 5 links.
This forum seems to think code is links. (゚ヮ゚)
------------>

Post 2 of detailed guide to Get VR working with Video Players on Linux.
(New posters can only post 5 links and I registered simply to post this.)

(〃^∇^)ノ Right where were we…

Configure Steam VR with Proton

Install ProtonUp-Qt from this GitHub link:

Open ProtonUp-Qt and click Show Game List.

Look at the compatibility suggestion. foir Vrchat its proton-experimental for Vrchat

You need to install

Steam-Play-None FOR Vrchat

AND proton_experimental FOR Steam VR

!Install using ProtonUp-Qt. SET USING PREFERENCES ON STEAM AND VRCHAT.!

Note!
ALVR uses FFmpeg for all encoders. you must have it installed. it probably is… but check with

sudo add-apt-repository universe
sudo apt update
sudo apt install ffmpeg

Restart Steam

SPECIAL NOTE FOR VIDEO PLAYERS. <—
Video players issue have nothing to do with alvr, it’s proton not working properly with video players if you want proton that works with video players, use
GE-Proton9-11-rtsp15

Best Configuration Recap: <— YOU WANT THIS ONE. ヽ(゜∇゜)ノ

works in VR with working TV. :tv:

If you jumped to this comment but are installing everything for first time see first post above ^
Otherwise here is the best working setup! Enjoy!

Vrchat Compatibility: GE-Proton9-11

Vrchat Launch options: blank

Steam VR Compatibility: blank

Steam VR Launch options
~/.local/share/Steam/steamapps/common/SteamVR/bin/vrmonitor.sh %command%

UPDATE: you seem to no longer need the Steam VR Launch command. Try blank first then if it won’t load put it in.

(>‘o’)> Blank means leave it blank. Do not type anything in.
Don’t type the word “blank” as a option!!

Desktop (Working):

Setup works for desktop but is only provided as a fallback if Best Configuration does not work. Will not work for VR.

  • VRChat Compatibility: GE-Proton8-25

  • VRChat Launch Options: blank

  • SteamVR Compatibility: blank

  • SteamVR Launch Options: blank

VR (Working Setup With no video):

This works for VR. You can do everything except play videos.
VIDEOS WILL NOT WORK WITH THIS SETUP.

Video when played plays audio (so it it loading!) but has no picture.

Check if you can see Vrchat in your headset.

If you cannot - see if the headset is playing any video.

you can use the Vr View built into Steam VR

to check if the headset is working.

Fix Blank picture in headset

If you can see the Steam Home in VR View but the picture is blank, do the following:

Go to Steam VR Properties > General > Launch Options.

Enter the following command:

~/.local/share/Steam/steamapps/common/SteamVR/bin/vrmonitor.sh %command%

If Vrchat plays now GREAT. Now check a video player.

If videos aren’t working in VRChat, you need to emulate the AVPro player. Do the following:

In Steam Launch Options for VRChat, (Geveral > Launch Options) add the following command:

gamemoderun %command% --enable-avpro-in-proton

while this setup worked perfectly for desktop VRchat crashed while using a headset. It seems like compatability settings in Vrchat changed.

Make sure Steam VR is not trying to update! If it is LET IT.

Run Flow (your steps to play Vrchat)

1: open Steam

2: If using Wired ALVR open ADBForwarder

3: open ALVR (it’s in your home folder)
connect headset and look inside

4 :press the notification to allow USB to connect in your headset (look inside)

5: look at ALVR. When it says Connected you’re ready.

6: Return to ALVR and press “Launch steam VR” if it shows. You can also launch steam Vr manually, but this way you can see if ALVR is connected easier.

7: Wait for ALVL to connect
ALVR IS WIRELESS BY THE WAY.

Special mention USB/wired Setup for ALVR

ALVR Wired With USB Setup
open Home > abd forwarder
open terminal
drag ADBForwarder into terminal

what you want to see
Platform: Linux
ADBForwarder started.

ADBForwarder
Connected device: (numbers and letters)
Successfully forwarded device: (same numbers and letters)

cool! don’t close this terminal.
go to Home > ALVR Launcher. Open ALVR Launcher with clicking.
press launch
Make sure steam is open > press Launch Steam VR

Do not skip this step. ALVR Wired will not work if you skip this.
Switch the connection streaming protocol to TCP in Settings > Connection.

If your headset is detected, click “Trust.” Click “Edit”, “Add new” and change the IP address to 127.0.0.1

Some guides show a . at the end! do NOT add that! (☉‿☉)
127.0.0.1 NOT 127.0.0.1. ← no period.

If your headset is not detected, click “Add device manually” and use the IP address 127.0.0.1 Use the hostname displayed on your headset screen.

You should be able to set the IP manually from Add Device Manually, looking in headset and setting the number where the XXXX is then clicking add new and setting 127.0.0.1

In my case I could not get ALVR to connect this way. I picked Trust from the detected device then tried to edit the IP.

For some infernal reason adding manually was not working. it was connecting via qifi relentlessly! this was fixed by
clicking edit, setting the IP to 127.0.0.1 clicking Add New setting THAT to 127.0.0.1
clicking save, closing ALVR and clicking edit where it now only had one IP.
Odd. Strange. Worked.

Permission Denied?
Two possible causes for this
1:(one time setup)
ADBForwarder (home > ADBForwarder (folder) or ADBForwarder
ALVR Launcher (home > alvr_launcher_linux> (folder) file ALVR Launcher
doesn’t have properties (tab) > permissions (tab) allow executing file as program (checkmark) selected.

2: you have ALVR open already, close it.

Anti cheat errors
just close Vrchat > and reopen. If keeps happening Close Vrchat AND CLOSE STEAMVR OR YOU WILL GET STUCK IN FOREVER UPDATESgo to properties > Installed files > Verify Integrity of Game Files
after its done make sure Compatibility did not change!

8: Start Vrchat
Open Vrchat from steam and choose launch with VR
(ノ◕ヮ◕)ノ*:・゚✧

Final notes

Where are my photos?!

/Home/.local/share/Steam/steamapps/compatdata/ANUMBER/pfx/drive_c/users/steamuser/Pictures/VRChat
When you get to
/Home/.local/share/Steam/steamapps/compatdata you will see quite a few folders. Do a search in this folder for Vrchat because the camera images are saved VRChat this will let you see which folder has your camera images. Once you find it favorite that folder.

Laggy? Crashy?
turn off Anti Ailisaing.
Graphics Quality > Anti-aliasing
Some worlds I set it to 2x but its usually off. SO MUCH BETTER.

Cups of coffee consumed while testing, crashing, crying and making this guide 26
Time and effort 2 months.
Hope it helps you!!!
:hearts:₊·◟(˶╹̆ꇴ╹̆˵)◜‧

1 Like

Thank you so much for this!! You should totally repost that into the Tutorials, Tools and Resources categorey!!

Script To Launch Faster!
I’ve been playing with a script to get everything to work faster.
Intended for when it all works manually, this will save you so much time having to open all the things Linux requires to play.

Requirements
Python Should be installed?
Note! you use python3 for linux.
Tinker
apt-get install python3-tk
1: save the code as whatever.py (example startvr.py)
2: go to properties > permissions > check “allow execute file as program”

When you want to play
1: open a terminal in the directory
(for mint just left click where it is > open in terminal)

2: type python name.py example python vr.py
3: press enter. you will see a box pop up with buttons!
4: click RUN ALL
it’s going to try to open ADB forwarder (assuming wired)
then open ALVR Launcher
Then open Steam VR
Then Open Vrchat

All in one click
And if something gums up the buttons are there to open each item individually.

import tkinter as tk
import subprocess
import time

def run_adbforwarder():
    subprocess.Popen(["gnome-terminal", "--working-directory=" + HOME + "/adbforwarder", "--", "bash", "-c", "./ADBForwarder; exec bash"])

def run_alvr_launcher():
    subprocess.Popen(["gnome-terminal", "--", "bash", "-c", f"cd '{HOME}/alvr_launcher_linux' && './ALVR Launcher'; exec bash"])

def run_steamvr():
    subprocess.Popen([f"{HOME}/.local/share/Steam/ubuntu12_32/steam", "-srt-logger-opened", "steam://rungameid/250820"])

def run_vrchat():
    subprocess.Popen([f"{HOME}/.local/share/Steam/ubuntu12_32/steam", "steam://rungameid/438100"])

def run_all():
    run_adbforwarder()
    time.sleep(5)
    run_alvr_launcher()
    time.sleep(5)
    run_steamvr()
    time.sleep(5)
    run_vrchat()

# Create the main window
root = tk.Tk()
root.title("VR Launcher")

# Define HOME variable
HOME = subprocess.getoutput("echo $HOME")

# Create buttons
btn_adb = tk.Button(root, text="Open ADBForwarder", command=run_adbforwarder)
btn_alvr = tk.Button(root, text="Open ALVR Launcher", command=run_alvr_launcher)
btn_steamvr = tk.Button(root, text="Open SteamVR", command=run_steamvr)
btn_vrchat = tk.Button(root, text="Open VRChat", command=run_vrchat)
btn_run_all = tk.Button(root, text="RUN ALL", command=run_all)

# Place buttons in the window
btn_adb.pack(pady=5)
btn_alvr.pack(pady=5)
btn_steamvr.pack(pady=5)
btn_vrchat.pack(pady=5)
btn_run_all.pack(pady=20)

# Run the Tkinter event loop
root.mainloop()