The project is on GitHub now!
I will no longer support this project myself moving forward.

The Wolfe Video Player (Udon) Prefab is a synced video player built in C# for VRChat SDK3 Worlds.

This prefab was created by Nisha Wolfe, and is available for use in any VRChat world.

This prefab is completely free, though if you want to support me, you can throw a few bucks to me at my Ko-fi page.

If you do end up using this prefab, please keep the 'About' text unchanged.

This software falls under the CC BY-SA License, please review LICENSE.txt included in the package for details.

Wolfe Video Player 3.0.x has only been tested with the Unity 2019 build of VRChat.

Example World
If you would like to try out the video player before downloading it youself, you can check out the example world.


The example world is hosted on VRChat, though all of the assets can be downloaded below as well.
Minimum Requirements
The following are the minimum requirements this prefab was tested with
Please note that you should always use the most recent version of the VRChat SDK & Udon Sharp when possible.

-- Unity version 2019.4.29f1
-- VRChat SDK3 - Worlds (2021.
-- Udon Sharp (v0.20.2)
How to Install

New World

1. Create a new Unity project
2. Install the .
3. Setup the VRC Scene Descriptor and other VRChat world requirements.
4. Import the Custom Package "WolfeVideoPlayerUdon.3.0.2.unitypackage" (3.0.2 being the most recent version)
5. Drag the "WolfeVideoPlayerPrefab" prefab into the world.
6. Within the Scene Hirearchy, select the "VideoController" and set the Video URL to the default video for your world.

Existing World

1. Backup your Unity Project (This is EXTREMELY important)
2. Ensure the properly
3. Import the Custom Package "WolfeVideoPlayerUdon.3.0.2.unitypackage" (3.0.2 being the most recent version)
4. Drag the "WolfeVideoPlayerPrefab" prefab into the world.
5. Within the Scene Hirearchy, select the "VideoController" and set the Video URL to the default video for your world.

How to Use

The Udon Video Player controls can be seperated into two categories, local and synced controls.
The locks next to the sliders will lock the sliders, preventing them from being accidently changed.

Synced Controls

Only the object owner can modify these controls (Note: The object owner can be different from the world master)

Pause/Play button - This button will pause or play the video for everyone in the world.

Timestamp Slider - This slider will allow you to set the current time of the video for everyone in the world.

Local Controls

These controls will only affect the local user modifying them.

Volume - Adjusts the volume for the video locally.

Brightness - Adjusts the video brightness locally.

Sync to Owner - Forces the local video to reload, and sync to the object owner.

Become Owner - Makes the player into the object owner, allowing them to modify the Synced Controls.

Load - Loads the current URL in the URL Field, also makes the player into the object owner.


Lock Controls - Sets the world master to the object owner, and locks the "Become Owner" and "LOAD" buttons

Owner: - Displays the current object owner.

Video Errors: - Displays any errors that occured while loading the video.

? - Toggles the About box.

Video Queue

The Video Queue is not required for the Video Player to function.
It allows up to 30 videos to be queued up by any player.
Once the currently playing video completes, the next video in the queue will automatically play.

Clear Queue - Deletes every item in the current queue.

Lock Queue - Locks the Video Queue so no one other than the World Master can add, remove, or skip items in the queue.

Add - Adds the currently entered URL into the queue at the end.

Skip - Skips to the next item in the queue. This will stop playing the current video and play Queue item 1.

What's Included

Wolfe Video Player (Udon) prefab

- Wolfe Video Player
- Wolfe Video Player Control Panel
- TV & Soundbar 3D Model (Free to use)
- Remote Control Model (Free to use)

Example World

- Wolfe Video Player prefab
- Toggle button for TV screen
- Portable Video Player with toggle button
- Mirror button (Of course)

Remote Control

The remote control can be used to toggle a portable Video Control Panel.
Using the remote control will show/hide the portable control panel in front of the player that activates it.

Installation Guide

2. Drag the Remote Control prefab into the world
3. Within the Hierarchy, inspect "VideoPlayerPanelRemote" (Located under "RemoteControl")
4. Drag the "VideoController" (Located under "WolfeVideoPlayerPrefab") object from the hirearchy into the "Video Controller" option for the Udon Behavior.
5. Within the Hierarchy, inspect "VideoController" (Located under "WolfeVideoPlayerPrefab")
6. Expand the "Video Player Panels" menu and increase the "Size" variable by 1.
7. Drag the "VideoPlayerPanelRemote" (Located under "RemoteControl") object from the hirearchy into the last "Element" option for the Udon Behavior.


The Karaoke Addon allows you to define a set of videos that players can select from when using the Video Player.


Installation Guide

1. Import the WolfeKaraoke Prefab
2. In the "WolfeKaraoke" --> "Prefabs" folder, drag the "Wolfe Karaoke" prefab asset into the scene.
3. Set the "Wolfe Player Controller" within the new object

Adding Songs

1. In the Hirearchy, navigate to "Wolfe Karaoke" --> "Karaoke Canvas" --> "Viewport" --> "Scroll Parent (Add Songs under here)"
2. Drag a new "Karaoke Song" prefab as a child of the Scroll Parent.
3. Set the song's URL and other details you want shown.

Does the video Player work with CyanEmu?

no, as of 8/5/2021 cyanemu does not fully support VRChat Video Players. the best way to test confirm that the player works is by using the "build & run" button on the vrchat control panel.

I cannot load videos other than Youtube in the player

Custom URLs require the "Allow Untrusted URLs" option within the VRChat Settings menu. Please read up on the VRChat Documentation for this and ensure you understand what enabling this will do.

I cannot hear any audio with the Video Player

Currently, VRChat has an obscure bug with the Vive Deluxe Audio Strap that causes the audio to not be played for AVPro Video Players.
Until VRChat fixes this, a workaround 'solution' is to start VRChat without the Vive Deluxe Audio Strap plugged in, and once loaded plug it in. This is not guarenteed to work, but should resolve some issues.

I'm getting errors when importing the video Player

The initial import may throw Udon errors, if you are able to "Build & Test" it should be running fine.
You can also save and quit the Unity Project, and see if it throws errors again when you load the project.
If you are still concerend about the errors, feel free to contact me (My info is at the top of this page).

Does the video player support RTMP?

No. Unfortunately, AVPro Player does not support RTMP, so there is no way to support this.
Note: this may be outdated, it has not been tested in a while.

Is this video player Oculus Quest compatable?

As of 2.0.0, It is. However keep in mind that Oculus Quest does not currently support Youtube Videos, as they require youtubedl which is not bundled with the Quest version of VRChat.
You can, however, play directly .mp4 videos with the player, and it will show up for Oculus Quest users.
Just ensure you are using a Quest Compatable Material for the screen (The included Example_Screen_Quest will work on Quest).

Can I use multiple Wolfe Video Players in the same world?

Yes, you will need to use seperate materials for each video player, but they will work completely independantly from eachother.




- Modified all Udon Sync variables to use 'Manual' sync mode.

- Increased the maximum URL lengh to 512 (It can go higher if needed)

- Added "Example_Screen_Quest" for Oculus Quest compatability.

- Added Video Queue


- Fixed issue with Livestreams (Twitch) not always being automatically detected.




- Removed reference to non-normal map texture on remote

- Fixed issue with long youtube videos being recognized as Livestreams.

- Fixed issue where not all youtube url timestamps would be recognized.

- Fixed Player Crash when adding letters after a youtube timestamp.



- Added Realtime Video lighting to the Example World, As seen here

- Added Post Processing to the Example World


- Fixed 'About' text being incorrect



- Added toggle for the Realtime Video lighting in the Example World, as it caused too much lag.


- Fixed new AVPro version not showing proper end time on videos.

- Added a temporary workaround for scrubbing, due to a VRChat bug





- Fixed false-positive errors showing up int he Console when publishing the world.



- Entire codebase was rewritten from scratch.

- Added code comments and descriptions to all functions within the main controller

- Added "WolfeHooks" to better help integration with external scripts.

- Removed all instances of Update() within the code.

- Added a string that shows the currently playing video URL.


- Fixed video double-playing on world load



- Added "WolfeKaraoke" Addon


- Fixed Mute button on the mini-player not working

- Fixed URL Input fields Navigation being set to "Automatic", now set to None



- Added null checks for Video Player Panels to prevent some errors when set improperly.


- Fixed rare Video Player crash when livestreams are loaded.