TVManager Settings
This is a breakdown of all the options available on the TVManager component and what they are used for.
Autoplay Settings
-
Autoplay Main URL
Pretty straight forward. This field is a place to put a media url that you wish to automatically start upon first load into the world. This only is true for the instance owner (aka master) upon first visit of a new instance (which is then synced to any late-joiners). Leave empty to not have any autoplay. -
Autoplay Alternate URL
This field is the complementary url field to the above one. Quest users default to using the alternate url, but will fall back to the main url if it's not present. Leave both this and the above field empty to not have any autoplay. -
Autoplay Title
If you want your autoplay urls to not display the domain name, you can specify a custom text to be made available to UIs instead. -
Autoplay Loop
Makes the autoplay URL implicitly loop. This is equivalent to adding#loopto the end of the autoplay URL.
Default TV Settings
-
Default Manager
This is a dropdown of the video managers from which to pick the manager that the TV starts off selected with. -
Default Volume
Pretty straight forward. This specifies what the volume should be for the TV at load time between 0% and 100% (represented as a 0.0 to 1.0 decimal) -
Start With 2D Audio
Flag to specify if the TV should initialize with stereo audio mode or full spatial audio mode. -
Start with Video Disabled
Flag to specify if the TV should, well, start with the video disabled. This halts the blit process thus affects all Rendering Options. -
Start with Audio MutedFlag to specify if the TV should, well, start with the audio muted. This requires calling the_UnMuteaction to hear audio.
Sync Options
-
Sync To Owner
This setting determines whether the TV will sync with the data that the owner delivers. Untick if you want the TV to be local only (like for a music player or something). -
Automatic Resync Interval
This option defines how many seconds to wait before attempting to resync. This affects two separate things.- First is the Audio/Video sync. This particularly affects AVPro for long form videos (like movies) where after some time or excessive CPU hitching (such as repeated alt-tabbing) can cause the audio to eventually become out-of-sync with the video (usually it's the video that falls behind).
- Second is the Owner sync. This is where the owner of the current video determines the target timestamp that everyone should be at. ProTV has a loose owner sync mechanism where it will only try to enforce sync at critical points (like switching videos, the owner seeks to a new time in the video, owner pauses the video for everyone, etc).
The default value of 300 seconds is usually good enough for most cases, and shouldn't need to be changed unless for a specific need.
-
Play Drift Threshold
This value determines how far away from the tv owner that non-owners are allowed to drift (aka de-sync). When this delta threshold is exceeded, the non-owner will be forcefully seek'd to the owner's timestamp. If you don't want to have a forced resync threshold, set this value toInfinity(yes the actual word) to disable the automated enforcement. -
Pause Drift Threshold
This is more so a visual feedback feature where if the video is paused locally but the video owner is still playing, the video will update the current playback timestamp every some number of seconds determined by this option. If you don't want the video to resync while paused, set this value toInfinity(yes the actual word) to have it never update until the user resumes the video. One way to view it is as a live slideshow of what is currently playing. This is intended to allow people to see what is visible on the TV without actually having the media actively running. Can be useful for moderators to see what is playing without having the actual video running.
Sync Tweaks
-
Sync Manager Selection
This setting, when combined withSync To Ownerwill sync the active video player selection to other users. -
Sync Volume Control
This setting, when combined withSync To Ownerwill sync the owner's volume to other users. -
Sync Audio Mode
This setting, when combined withSync To Ownerwill sync the owner's audio mode to other users. -
Sync Video 3D Mode
This setting, when combined withSync To Ownerwill sync the owner's current 3D video settings to other users. -
Allow Local Tweaks
When this setting is enabled any of the other sync tweak settings will update allow non-owners to still modify tweaks that are synced.
When this is disabled, all non-owners will not be allowed to change any of the tweaks that are synced. For example, without the setting ifSync Volume Controlis enabled, when the owner volume changes, it will update for all players but they can still change their volume locally. With the setting disabled, non-owners won't be allowed to change the volume slider at all.
Media Load Options
-
Play Video After Load
This setting determines whether or not the media that has been loaded will automatically start to play, or require manually clicking the play button to start it. This affects all video loads, including any autoplay media. -
Buffer Delay After Load
If you wish to have the TV implicitly wait some period of time before allowing the media to play (eg: give the media extra time to buffer)
Note: There will always be a minimum of 0.5 seconds of buffer delay to ensure necessary continuity of the TV's internals. -
Implicit Replay Duration
Media will implicitly loop once, if no explicit loop was specified, when the duration of the media is less than this value.
This is useful for things like short memes or clips where the video loading might be slower for other users and they missed most of the video. -
Max Allowed Loading Time
This specifies the maximum time that a media should be allowed to take to load. If this time is exceeded, the media error event will be triggered with aVideoError.PlayerError. -
Live Media Reload Interval
This specifies how often (in minutes) a livestream should automatically reload. If set to 0, no auto-reload will occur. The recommended value is 10-15 minutes. -
Prefer Alternate Url For Quest
This setting makes the quest/android platform prioritize the Alternate Urls over the Main Urls. If no alternate url is provided, it will gracefully fallback to the main url. If you wish to repurpose the dichotomy of the main/alt for whatever reason (such as a sub/dub or some other dichotomy), you will very likely want to disable this setting -
Enable Reload Keybind
This setting enables the keybind to reload the current video. Equivalent to clicking the reload button on a UI. Defaults to F5, but can be changed.
Security Options
-
Auth Plugin
You may optionally provide an instance of a TVAuthPlugin to the TV for running security checks through. ProTV comes with an useful auth plugin:TVManagedWhitelist.
If you want to learn about implementing your own authentication plugin, check out the Auth Plugin Documentation -
Allow Master Control
This is a setting that specifies whether or not the instance master is allowed to lock down the TV to master use only. This will prevent all other users from being able to tell the TV to play something else. This is enabled by default. NOTE: The instance owner will always have access to take control no matter what. -
Locked By Default
This is a setting that specifies whether or not the TV is master locked from the start. This only affects when the first user joins the instance as master. The locked state is synced for non-owners/late-joiners after that point. This is disabled by default.
Security Tweaks
-
Allow First Master Control
When this setting is enabled, the TV will remember the first user to join the instance and treat that person as an implicit authorized user for the lifetime of the instance. This setting is helpful for group instances or public instances where there is no Udon recognizable instance owner. (The VRChat UI may specify a group or world author as owning the instance, but Udon itself does not acknowledge them as the actual instance owner). This is enabled by default. -
First Master Super User
Combine this withAllow First Master Controlto grant the first user in the instance Super User status instead of just Authorized status. This is disabled by default. -
Instance Owner Super User
Determines whether the instance owner (aka instance creator of an invite or friends instance) should be treated as a Super user or just a regular authorized user. This is enable by default. -
Super User Lock Override
This setting determines whether a Super user can lock out regular authorized users from the TV. When this is enabled and a Super user activates the TV lock, all non-super users will be unable to activate the TV lock. This is effectively an "admin override" of sorts and can be helpful for when authorized users are doing undesired shenanigans with the TV. When this is disabled, super users can still take ownership of the TV by activating the TV lock, but it will not prevent other authorized users from taking ownership back. This is disabled by default. -
Disallow Unauthorized Users
When this setting is enabled, all non-authorized users will be unable to take control of the TV, even when the TV's lock state is unlocked. This setting is not necessary under some scenarios. Each world creator will need to determine the necessity of this option. This is disabled by default. -
PlayState Change Takes Ownership
This option makes the Play/Pause/Stop actions initiated by a user to immediately take ownership if they are authorized to do so. This effectively turns those buttons into a "Global" action where anyone (who meets the authorization requirements) can change the play state of the video for anyone else by taking ownership and syncing the play state to everyone else. -
[Experimental] Enable Auto-Ownership
This experimental feature is intended to deal with auto-transfer of ownership to a properly authorized user when the current owner is NOT considered authorized. For example, if the TV is locked and allow master control is disabled, when someone who passes the IsAuthorized checks is found in the instance, that player will automatically attempt to take ownership of the TV game object to ensure a valid authorized user is always in control of the TV.
There are known issues with this, it is currently not advised to use unless you know what you are doing. -
Authorized Users Log Trace
This option forces all authorized users to set the logging level to Trace (most detailed logs) for the TV.
This is helpful for post-mortem auditing when things go unexpectedly awry and is enabled by default. -
Super Users Log Trace
This is similar to theAuthorized Users Log Traceoption, but applies only to super users.
If the previous setting is enabled, this setting doesn't do anything, as super users are considered authorized implicitly.
Domain Whitelist
-
Enable Domain Whitelist
A flag for whether to enforce the domain whitelist check. This is disabled by default. -
Domain Whitelist
This is a list of domains for urls which, when the prior flag is enabled, the TV will adhere to and will only allow playing urls from said domains. This is very similar to VRChat's canonical URL Whitelist, except that it is handled on a per TV basis. The default list consists of VRChat's url whitelist domains plus a few additional ones. You can add and remove the entries as you see fit for each TV instance you have.
The domains are searched using an 'ends with' fuzzy check. This enables subdomain passthrough for urls. For example:bandcamp.comenables the passthrough of all subdomains of bandcamp likestessie.bandcamp.com, which is necessary due to bandcamp creating a subdomain for every artist on the site. Similarlyyoutube.comenables the passthrough ofwww.youtube.com.
Error/Retry Options
-
Default Retry Count
This is the number of times a URL should be implicitly reloaded if the media fails to load. If the URL specifies an explicitretry=Xhash param value, it will be used instead. -
Repeating Retry Delay
This value specifies how long to wait between each retry when a URL fails to load. This only applies to multiple sequential failures after the first retry attempt. -
Retry Using Alternate Url
This flag makes the TV attempt to load the alternate (or main if on quest) URL if the main (or alternate if on quest) URL fails to load the first time. It will only attempt it if the other URL is present and different than the current one. Because it has graceful fallback logic, this feature is enabled by default.