Proper Video Player Documentation

Multiple Players

Multiple ProperVideoPlayer components can play independently. Each component creates its own browser video element on WebGL or Unity VideoPlayer on other platforms, and each requires a separate output texture.

Configuration requirements#

  • Use one RenderTexture per player. Sharing a target texture can corrupt both outputs. The component and low-level bridge detect a shared texture and log an error. Auto-managed textures are created per component.
  • Keep Pause When Disabled enabled for off-screen players. Disabling the component pauses requested playback and stops its update-driven uploads. Re-enabling the component resumes playback. The media element and texture remain allocated while disabled.
  • Handle autoplay per player. Each browser media element is subject to autoplay policy. Start automatically played videos muted, then unmute in response to a user gesture when audio is required.

Plan the playback budget#

Each active player consumes a decoder and uploads a texture for each presented frame. Available hardware decoder sessions, memory bandwidth, and upload capacity vary by browser, operating system, device, resolution, frame rate, and codec. There is no portable fixed limit on simultaneous players.

Test the intended mix on the lowest-spec supported devices. Use PresentedFrames, DroppedFrames, UploadMicroseconds, and OnRecoveryAttempted alongside the browser and Unity profilers. If playback becomes unreliable, reduce source resolution or frame rate, or keep fewer players active at the same time. See Codecs & Performance.

Visibility-driven playback#

For grids, carousels, and virtualized lists, enable only the player components that should currently play and leave Pause When Disabled enabled. A paused component retains its texture, so a separately active display can continue showing the most recently uploaded frame.