Skip to content

StrangeVideo

BellaStrangeVR edited this page Jul 3, 2026 · 3 revisions

StrangeVideo

StrangeVideo is the video player management component for Strange Toolkit. It provides a unified interface for 6 popular VRChat video player systems with inline settings, automatic wiring, and built-in sync for Unity video players.

Overview

Use StrangeVideo for:

  • Managing any video player from one place
  • Quick access to common player settings without navigating deep hierarchies
  • Automatic AudioLink wiring
  • Built-in timestamp sync for Unity video players

Supported Video Players

Player Package Best For
ProTV dev.architech.protv Big theatrical spaces or event worlds with polished controls, playlists, and host/admin support
iwaSync3 dev.okunomiya.iwasync3 Performance-focused worlds needing synced playback — lightweight and efficient
USharpVideo com.merlinvr.usharpvideo Straightforward video with minimal setup — low overhead, ideal for basic screens
VizVid dev.jlchnto.vrczuid Community spaces with mixed media, watch-together features, and modular design
YamaPlayer net.yama.yamaplayer Advanced UI with playlists, queues, and streaming — great for lounges and social hubs
VideoTXL com.texelsaur.video Solid synced playback with flexible control options — reliable group watching without heavy cost

All players are optional. Strange Toolkit detects which are installed and only shows relevant options.

Properties

Property Type Description
primaryVideoPlayer BaseVRCVideoPlayer The video player component to manage
strangeHub StrangeHub Reference to the scene's StrangeHub for sync
useBuiltInSync bool Enable built-in timestamp sync (disable for players with their own sync like ProTV)
clientSyncThreshold float Time difference (seconds) before correcting client playback (default: 0.5)
masterSyncThreshold float Time difference (seconds) before master broadcasts new timestamp (default: 2.0)
syncCheckInterval float How often (seconds) the master checks sync state (default: 1.0)

Setting Up

Via the Dashboard (Recommended)

  1. Open Window > Strange Toolkit Dashboard
  2. Go to the Visuals tab
  3. In the Video section, select a player from the dropdown and click Add
  4. The status panel shows what needs wiring — click Fix buttons to auto-connect everything
  5. Adjust player settings inline without leaving the dashboard

Manual Setup

  1. Add a video player prefab to your scene
  2. Add a StrangeVideo component to any GameObject
  3. Assign the video player to primaryVideoPlayer
  4. Assign your StrangeHub to strangeHub
  5. Set useBuiltInSync to false if your player handles its own sync (ProTV, iwaSync3, etc.)

Built-in Sync

For Unity's built-in video player (or players without their own sync), StrangeVideo provides master-driven timestamp synchronization.

How It Works

  1. The master periodically checks the video timestamp
  2. If the timestamp has drifted beyond masterSyncThreshold, it writes the current time to StrangeHub.videoTimestamp and calls RequestSerialization()
  3. Clients compare their playback time against the synced timestamp
  4. If the difference exceeds clientSyncThreshold, the client seeks to the correct time
  5. On late join, the master immediately broadcasts the current timestamp
  6. If the instance master leaves, sync correctly resumes under whoever becomes the new master — it no longer silently stops for the rest of the instance

When to Disable

Set useBuiltInSync = false when using:

  • ProTV — has its own sync system
  • iwaSync3 — has its own sync system
  • USharpVideo — has its own sync system
  • VizVid — has its own sync system
  • YamaPlayer — has its own sync system
  • VideoTXL — has its own sync system

The dashboard auto-sets this when wiring a third-party player.

Custom Inspector

The StrangeVideo inspector provides:

  • Open Dashboard button — jumps to the Visuals tab video workflow
  • Video Players — lists all detected video players in scene with select buttons
  • TV Settings — inline settings for the active player (varies by player type)
  • Sync Settings — built-in sync configuration
  • AudioLink — AudioLink wiring status and controls
  • Show Raw Data — debug foldout showing all serialized fields

In-Editor Video Playback

When AVPro Video is present, StrangeVideo includes a play mode shim that enables in-editor video playback. This allows testing video URLs directly in the Unity editor without uploading to VRChat.

The shim supports URL resolution via yt-dlp for YouTube and other streaming URLs. Failed resolves (or non-HTTPS sources) now report a single, correct result instead of occasionally firing a second, contradictory callback.

Recommended: VRCVideoCacher

VRCVideoCacher is a free tool that caches VRChat videos to local disk and fixes YouTube videos from failing to load. It works alongside any video player system.

Why use it:

  • Fixes YouTube loading failures — works around bot detection that causes videos to fail
  • Caches videos locally — repeat playback is instant, no re-downloading
  • Auto-installs codecs — adds missing VP9, AV1, and AC-3 codecs for better compatibility
  • Configurable storage — set resolution limits and storage caps
  • URL blocking — block specific URLs with customizable redirects

Recommended for all VRChat users — video loading issues are common and this tool fixes most of them.

Fynn's Enhanced Fork

Fynn's fork extends VRCVideoCacher with additional features:

  • Video thumbnails — browse cached videos with thumbnail previews extracted via FFmpeg

  • Batch pre-caching — download multiple videos ahead of time with a URL list

  • Custom domain caching — cache videos from non-YouTube domains

  • Cookie management — setup wizard for logged-in YouTube playback

  • YouTube metadata — displays video titles in the cache browser via oEmbed API

  • Fynn's Fork (GitHub)

Best Practices

Player Selection

  • ProTV — best for event worlds, theatrical spaces, and host/admin control
  • VideoTXL — reliable synced playback with flexible options, good for group watching
  • YamaPlayer — advanced UI with playlists, queues, and streaming for social hubs
  • VizVid — modular design for community spaces with mixed media
  • USharpVideo — minimal setup, low overhead, ideal for basic video screens
  • iwaSync3 — lightweight and efficient, best when performance matters most

Sync Settings

  • Keep clientSyncThreshold low (0.5s) for tight sync
  • Keep masterSyncThreshold higher (2.0s) to reduce network traffic
  • Increase syncCheckInterval for less frequent sync checks

AudioLink

  • Wire AudioLink through the dashboard for automatic setup
  • The dashboard connects AudioLink to the player's audio source automatically

Clone this wiki locally