Reference

Every member of the video player, its parts and the editor setup API, with the rule attached to each.

Updated 2026-10-22

Everything lives in Udonite.Video; the editor API is Udonite.Video.Editor.VideoSetup.

VideoPlayer

Sits on the same GameObject as VRChat's AVPro or Unity video player, because VRChat sends video events only to behaviours on that object.

Inspector

Field
player The VRChat video player that plays
avPro On when player is AVPro
capture AVPro only: set up by Create Video Player
target Unity player only: set up by Create Video Player
speakers The AudioSources that volume and mute set
playlist Plays when the queue is empty. Optional
autoplay Starts the playlist when the instance opens
startLocked Opens the instance locked
moderators Display names that may always control the player and change the lock
tolerance Seconds a client may drift before it seeks back. 1 by default
startVolume Each player's volume until they change it, from 0 to 1

Commands

Every command that changes the video checks the lock first. A refused call changes nothing and shows a notice in Status for four seconds.

Member
PlayUrl(VRCUrl) Plays a link now, keeping the queue
Enqueue(VRCUrl) Adds a link to the queue, or plays it when nothing is playing. Up to 20 entries
PlayEntry(int) Plays a playlist entry
PlayFromQueue(int) Plays a queue entry now and takes it out of the queue
Play() Resumes, or starts the next queued or playlist video when nothing is playing
Pause() Pauses for everyone. Live streams cannot pause
TogglePause() Pause while playing, Play otherwise
Seek(float) Seeks to a fraction of the video, from 0 to 1
SeekTo(float) Seeks to a position in seconds
Skip() Plays the next queued or playlist video, or stops
Stop() Stops for everyone, keeping the queue
Reload() Reloads the link on this client only, and seeks back to the room
SetLooping(bool) Loops the current video for everyone
SetLocked(bool) Locks or unlocks. Only the instance owner, the master and moderators may
RemoveFromQueue(int) Takes one entry out of the queue
ClearQueue() Empties the queue
SetVolume(float) This player's own volume, from 0 to 1
SetMuted(bool) This player's own mute

State

Member
int Revision Moves whenever anything a UI shows changes, except the clock
int State Idle, Loading, Playing, Paused or Failed, constants on VideoPlayer
bool IsIdle, IsLoading, IsPlaying, IsPaused, HasFailed The same, one at a time
bool HasVideo A link is set, whether or not it plays yet
bool IsLive Playing a stream with no end, which cannot pause or seek
bool CanSeek Playing or paused, and not live
bool Showing A picture is on the screens
string Title The playlist title, or a short label for a pasted link
string AddedBy Who added the current video, or empty for the playlist
string Url The current link
string Status A notice, a problem, or Loading, Playing, Live, Paused or Nothing playing
string Problem Why the last load failed, until the next one
float Position Seconds into the video on this client
float Duration Its length in seconds, or 0 when it is live
float Progress Position over duration, from 0 to 1
bool Looping, bool Locked The synced settings
float Volume, bool Muted This player's own audio
int QueueCount Entries waiting
string QueueTitle(int), string QueueAddedBy(int) One entry
string NextTitle What plays next, from the queue or an unshuffled playlist
int PlaylistEntry The playlist entry playing, or NoEntry
string OwnerName Who owns the player right now
bool CanControl, bool CanModerate What the local player may do
bool MayControl(VRCPlayerApi), bool MayModerate(VRCPlayerApi) The same, for anyone
Texture Picture The current frame, for a screen of your own

VideoScreen

Put it on any renderer whose material uses Udonite/Video/Screen. It letterboxes the video into aspect, the surface's width over its height. Any number of screens can show one player.

VideoPlaylist

Field
urls The links, in order
titles A title per link. An empty one shows the link
shuffle Picks the next entry at random, never the one playing
repeat Starts again after the last entry. On by default

Parts

Every part has player, and derives from VideoPart.

Part Fields
VideoButton command, button, icon, activeSprite, inactiveSprite, activeColor, inactiveColor. Run() runs the command from code
VideoLabel field, text (TextMeshPro), legacyText, prefix, emptyText
VideoSlider mode (Seek or Volume), slider
VideoLinkField field, enterPlaysNow
VideoShowWhen condition, invert, targets, spinner, spinSpeed
VideoQueueRow index, content, title, detail, detailPrefix, playButton, removeButton

VideoPart itself has Refresh(), which a subclass must implement, and Tick() and Connect(), which it may override. Connect runs once when the player is ready, before the first Refresh.

Plain functions the player uses on link text, usable from your own code too.

Member
float StartSeconds(string) The start time a link asks for with t= or start=, or 0
string YouTubeId(string) The video id of any YouTube link shape, or empty
string Label(string) The short label a pasted link is shown with

Editor

The menu item and the Inspector buttons are wrappers over VideoSetup, so an editor script or an agent can do the same without clicking. Each call returns what it made, and an Add call returns what is already there instead of making a second one.

Member
CreatePlayer(Vector3, Quaternion, VideoBackend) A full player. VideoBackend.Unity for direct files only
AddScreen(VideoPlayer, Renderer) Another screen on any renderer
AddControls(VideoPlayer), AddOverlay(VideoPlayer) The default panel, or the screen's status overlay, on a player that lacks it
AddPlaylist(VideoPlayer, bool autoplay) A playlist on the player
AddToPlaylist(VideoPlaylist, string link, string title) One entry
FetchTitles(VideoPlaylist) Fills missing titles of YouTube entries from YouTube
SetModerators(VideoPlayer, string[], bool startLocked) Who may always control it
ConnectAudioLink(VideoPlayer) Points the scene's AudioLink at the speaker
Apply() Compiles every Udonite behaviour, so values set from a script reach the Udon programs

The menu item's path is VideoMenu.Create, for EditorApplication.ExecuteMenuItem.

Something went wrong Reload