Video

A synced YouTube and video player for VRChat worlds, with a clean default panel and parts for building your own controls.

Updated 2026-10-22

VRChat gives a world a video player that plays. Keeping everyone on the same moment, catching up players who join later and giving people a way to queue links is left to the world. This package does all of it: a synced player, any number of screens and a control panel.

The default panel: title, progress, transport buttons, volume, the link field and the queue

Everyone sees the same frame. Late joiners land where the room is, paused if the room is paused. Pause, seek, loop and skip are synced, and volume belongs to each player. Links queue up with who added them, a playlist takes over when the queue is empty, and a lock keeps the controls with the instance owner and the people you name.

Code talks to the player the same way the panel does:

public class Cinema : UdoniteBehaviour
{
    public VideoPlayer player;
    public VRCUrl trailer;

    public override void Interact()
    {
        player.PlayUrl(trailer);
    }
}

What is here

VideoPlayer The synced player: play, queue, pause, seek, skip, lock, and every value a UI shows
VideoScreen Puts the picture on any renderer, letterboxed to its shape
VideoPlaylist Links and titles that play when the queue is empty
VideoButton, VideoLabel, VideoSlider, VideoLinkField, VideoShowWhen, VideoQueueRow The parts the default panel is made of, for a UI of your own
VideoPart The base class for writing a part of your own
Udonite > Video One menu item, Create Video Player; more screens, AudioLink and YouTube titles are buttons on the Inspector

Start with Getting started. Your own UI covers replacing the panel, and Watching together covers what players see and what to do when a video will not play.

Something went wrong Reload