ProTV 3.0 is in public beta. Please check out the new documentation website here: https://protv.dev
This thread may contain some outdated information. Please visit the above site for more up-to-date documentation for the latest version of ProTV. Thank you!
Overview
ProTV is a donation-funded, open-source asset designed to make working with video players a less painful process by providing a solid security structure and enabling extensibility with an event driven plugin system.
Table Of Contents:
- Introduction and Overview [You are here]
- Core Architecture Deep Dive
- Plugins Overview
- MediaControls Plugin Deep Dive
- Playlist Plugin Deep Dive
- Queue Plugin Briefing
- Skybox Plugin Briefing
- How to integrate AudioLink
- So you want to make your own Plugin? Tips, Tricks and Best Practices
- Bad with code? How to use UdonGraph with ProTV
- Have questions about Quest compatibility? Understanding URLs
How do I get ProTV?
Open the following page and click the big blue button to add 3.0 to your creator companion.
https://protv.dev/start
If you cannot use the Creator Companion (eg: on a Mac/Linux env), there are alternative installation options listed in that start page linked.
The older 2.3 LTS is available on booth and gumroad if needed.
What is ProTV exactly?
At its core, ProTV is a central management script that brokers the state and activity of video players that are connected to it. It is capable of handling multiple video players by swapping between them and retaining proper sync to other users while doing so. Based on the state and activity of the management script, it will propagate events and data to other udon scripts that have registered themselves as a listener.
Monetary support for the project also accepted on Ko-Fi
How do I use it?
If you are looking for an out-of-the-box solution that doesn’t take much if any effort to add to your world, check out the Packages/ArchiTech.ProTV/Samples/Prefabs folder after importing. This is a selection of TVs that should #justwork. They also support multiple independent copies[1] in-world, no problem. Though if you want something a bit more custom, please continue reading though the guides to get a full grasp of how the ProTV system is setup.
[1] Note: do be aware that in excess of 8 ProTV instances in a world, some performance loss may become apparent during simultaneous use.
How does it work?
The primary driver behind this asset is the TVManager.cs script (aka “main script”). When the developer is setting up the world with a new TV, they will need to first declare what video players the main script will manage. This is done by attaching either a Unity Player or AVPro Video Player script into the scene and adding the VPManager.cs script to that same game object. Then drag the game object to the Video Players array of the TVManager script inspector. Repeat until the desired video players are connected. This is the fundamental setup.
With this completed, the main script will now broker state and activity between the connected video players and any udon behavior that declares itself a listener to the main script.
How can I customize it for my needs?
Here are some useful documentation pages to help:
If you are wanting to customize the audio sources a lot, I highly recommend you have a look at the below world for ideas and general setup for certain audio considerations and situations outside the common use-cases.