Video players: Difference between revisions

From VRChat Wiki
Video codecs and containers: Added some new rows, mostly pertaining to Opus
Video compatibility: different checkmark emoji, should stand out from the questionmark cells better.
Line 49: Line 49:
| align="center" |?
| align="center" |?
| align="center" style="border-right-color:white;" |?
| align="center" style="border-right-color:white;" |?
| align="center" |✔️
| align="center" |
| align="center" style="border-right-color:white;" |✔️
| align="center" style="border-right-color:white;" |
| align="center" |✔️
| align="center" |
| align="center" style="border-right-color:white;" |✔️
| align="center" style="border-right-color:white;" |
| align="center" |?
| align="center" |?
| align="center" style="border-right-color:white;" |?
| align="center" style="border-right-color:white;" |?
| align="center" |✔️
| align="center" |
| align="center" style="border-right-color:white;" |✔️
| align="center" style="border-right-color:white;" |
| align="center" |✔️
| align="center" |
| align="center" style="border-right-color:white;" |✔️
| align="center" style="border-right-color:white;" |
| align="center" |✔️
| align="center" |
| align="center" style="border-right-color:white;" |✔️
| align="center" style="border-right-color:white;" |
|-
|-
!H.265
!H.265
Line 69: Line 69:
| align="center" style="border-right-color:white;" |?
| align="center" style="border-right-color:white;" |?
<ref name="hevc_video_extentions" group="note" />
<ref name="hevc_video_extentions" group="note" />
| align="center" |✔️
| align="center" |
| align="center" style="border-right-color:white;" |✔️
| align="center" style="border-right-color:white;" |
| align="center" |✔️
| align="center" |
| align="center" style="border-right-color:white;" |✔️
| align="center" style="border-right-color:white;" |
| align="center" |?
| align="center" |?
| align="center" style="border-right-color:white;" |?
| align="center" style="border-right-color:white;" |?
| align="center" |✔️
| align="center" |
| align="center" style="border-right-color:white;" |✔️
| align="center" style="border-right-color:white;" |
| align="center" |✔️
| align="center" |
| align="center" style="border-right-color:white;" |✔️
| align="center" style="border-right-color:white;" |
| align="center" |❌
| align="center" |❌
<ref group="note">sound was played, but screen was staying dark</ref>
<ref group="note">sound was played, but screen was staying dark</ref>
Line 89: Line 89:
| align="center" |?
| align="center" |?
| align="center" style="border-right-color:white;" |?
| align="center" style="border-right-color:white;" |?
| align="center" |✔️
| align="center" |
| align="center" style="border-right-color:white;" |✔️
| align="center" style="border-right-color:white;" |
| align="center" |✔️
| align="center" |
| align="center" style="border-right-color:white;" |✔️
| align="center" style="border-right-color:white;" |
| align="center" |?
| align="center" |?
| align="center" style="border-right-color:white;" |?
| align="center" style="border-right-color:white;" |?
| align="center" |✔️
| align="center" |
| align="center" style="border-right-color:white;" |✔️
| align="center" style="border-right-color:white;" |
| align="center" |✔️
| align="center" |
| align="center" style="border-right-color:white;" |✔️
| align="center" style="border-right-color:white;" |
| align="center" |❌
| align="center" |❌
| align="center" style="border-right-color:white;" |✔️
| align="center" style="border-right-color:white;" |
|-
|-
!VP9
!VP9
Line 107: Line 107:
| align="center" |?
| align="center" |?
| align="center" style="border-right-color:white;" |?
| align="center" style="border-right-color:white;" |?
| align="center" |✔️
| align="center" |
| align="center" style="border-right-color:white;" |❌
| align="center" style="border-right-color:white;" |❌
| align="center" |✔️
| align="center" |
| align="center" style="border-right-color:white;" |❌
| align="center" style="border-right-color:white;" |❌
| align="center" |?
| align="center" |?
| align="center" style="border-right-color:white;" |?
| align="center" style="border-right-color:white;" |?
| align="center" |✔️
| align="center" |
| align="center" style="border-right-color:white;" |✔️
| align="center" style="border-right-color:white;" |
| align="center" |✔️
| align="center" |
| align="center" style="border-right-color:white;" |✔️
| align="center" style="border-right-color:white;" |
| align="center" |❌
| align="center" |❌
| align="center" style="border-right-color:white;" |❌
| align="center" style="border-right-color:white;" |❌
Line 125: Line 125:
| align="center" |?
| align="center" |?
| align="center" style="border-right-color:white;" |?
| align="center" style="border-right-color:white;" |?
| align="center" |✔️
| align="center" |
| align="center" style="border-right-color:white;" |❌
| align="center" style="border-right-color:white;" |❌
<ref name=":0" group="note">on some machines, no sound plays</ref>
<ref name=":0" group="note">on some machines, no sound plays</ref>
| align="center" |✔️
| align="center" |
| align="center" style="border-right-color:white;" |✔️
| align="center" style="border-right-color:white;" |
| align="center" |?
| align="center" |?
| align="center" style="border-right-color:white;" |?
| align="center" style="border-right-color:white;" |?
| align="center" |✔️
| align="center" |
| align="center" style="border-right-color:white;" |✔️
| align="center" style="border-right-color:white;" |
| align="center" |✔️
| align="center" |
| align="center" style="border-right-color:white;" |✔️
| align="center" style="border-right-color:white;" |
| align="center" |❌
| align="center" |❌
| align="center" style="border-right-color:white;" |❌
| align="center" style="border-right-color:white;" |❌
Line 144: Line 144:
| align="center" |?
| align="center" |?
| align="center" style="border-right-color:white;" |?
| align="center" style="border-right-color:white;" |?
| align="center" |✔️
| align="center" |
| align="center" style="border-right-color:white;" |✔️
| align="center" style="border-right-color:white;" |
| align="center" |✔️
| align="center" |
| align="center" style="border-right-color:white;" |✔️
| align="center" style="border-right-color:white;" |
| align="center" |?
| align="center" |?
| align="center" style="border-right-color:white;" |?
| align="center" style="border-right-color:white;" |?
| align="center" |✔️
| align="center" |
| align="center" style="border-right-color:white;" |✔️
| align="center" style="border-right-color:white;" |
| align="center" |✔️
| align="center" |
| align="center" style="border-right-color:white;" |✔️
| align="center" style="border-right-color:white;" |
| align="center" |✔️
| align="center" |
| align="center" style="border-right-color:white;" |✔️
| align="center" style="border-right-color:white;" |
|-
|-
!AV1
!AV1
Line 162: Line 162:
| align="center" |?
| align="center" |?
| align="center" style="border-right-color:white;" |?
| align="center" style="border-right-color:white;" |?
| align="center" |✔️
| align="center" |
| align="center" style="border-right-color:white;" |✔️
| align="center" style="border-right-color:white;" |
| align="center" |?
| align="center" |?
| align="center" style="border-right-color:white;" |?
| align="center" style="border-right-color:white;" |?
Line 180: Line 180:
| align="center" |?
| align="center" |?
| align="center" style="border-right-color:white;" |?
| align="center" style="border-right-color:white;" |?
| align="center" |✔️
| align="center" |
| align="center" style="border-right-color:white;" |❌
| align="center" style="border-right-color:white;" |❌
| align="center" |✔️
| align="center" |
| align="center" style="border-right-color:white;" |❌
| align="center" style="border-right-color:white;" |❌
| align="center" |?
| align="center" |?
| align="center" style="border-right-color:white;" |?
| align="center" style="border-right-color:white;" |?
| align="center" |✔️
| align="center" |
| align="center" style="border-right-color:white;" |✔️
| align="center" style="border-right-color:white;" |
| align="center" |✔️
| align="center" |
| align="center" style="border-right-color:white;" |✔️
| align="center" style="border-right-color:white;" |
| align="center" |❌
| align="center" |❌
| align="center" style="border-right-color:white;" |❌
| align="center" style="border-right-color:white;" |❌
Line 198: Line 198:
| align="center" |?
| align="center" |?
| align="center" style="border-right-color:white;" |?
| align="center" style="border-right-color:white;" |?
| align="center" |✔️
| align="center" |
| align="center" style="border-right-color:white;" |❌
| align="center" style="border-right-color:white;" |❌
<ref name=":0" group="note" />
<ref name=":0" group="note" />
| align="center" |✔️
| align="center" |
| align="center" style="border-right-color:white;" |✔️
| align="center" style="border-right-color:white;" |
| align="center" |?
| align="center" |?
| align="center" style="border-right-color:white;" |?
| align="center" style="border-right-color:white;" |?
| align="center" |✔️
| align="center" |
| align="center" style="border-right-color:white;" |✔️
| align="center" style="border-right-color:white;" |
| align="center" |✔️
| align="center" |
| align="center" style="border-right-color:white;" |✔️
| align="center" style="border-right-color:white;" |
| align="center" |❌
| align="center" |❌
| align="center" style="border-right-color:white;" |❌
| align="center" style="border-right-color:white;" |❌
Line 236: Line 236:
| align="center" |?
| align="center" |?
| align="center" style="border-right-color:white;" |?
| align="center" style="border-right-color:white;" |?
| align="center" |✔️
| align="center" |
| align="center" style="border-right-color:white;" |✔️
| align="center" style="border-right-color:white;" |
| align="center" |?
| align="center" |?
| align="center" style="border-right-color:white;" |?
| align="center" style="border-right-color:white;" |?
Line 273: Line 273:
| align="center" |?
| align="center" |?
| align="center" style="border-right-color:white;" |?
| align="center" style="border-right-color:white;" |?
| align="center" |✔️
| align="center" |
| align="center" style="border-right-color:white;" |❌
| align="center" style="border-right-color:white;" |❌
| align="center" |✔️
| align="center" |
| align="center" style="border-right-color:white;" |❌
| align="center" style="border-right-color:white;" |❌
| align="center" |?
| align="center" |?
| align="center" style="border-right-color:white;" |?
| align="center" style="border-right-color:white;" |?
| align="center" |✔️
| align="center" |
| align="center" style="border-right-color:white;" |❌
| align="center" style="border-right-color:white;" |❌
| align="center" |✔️
| align="center" |
| align="center" style="border-right-color:white;" |❌
| align="center" style="border-right-color:white;" |❌
| align="center" |✔️
| align="center" |
| align="center" style="border-right-color:white;" |❌
| align="center" style="border-right-color:white;" |❌
|-
|-
Line 291: Line 291:
| align="center" |?
| align="center" |?
| align="center" style="border-right-color:white;" |?
| align="center" style="border-right-color:white;" |?
| align="center" |✔️
| align="center" |
| align="center" style="border-right-color:white;" |❌
| align="center" style="border-right-color:white;" |❌
| align="center" |✔️
| align="center" |
| align="center" style="border-right-color:white;" |❌
| align="center" style="border-right-color:white;" |❌
| align="center" |?
| align="center" |?
| align="center" style="border-right-color:white;" |?
| align="center" style="border-right-color:white;" |?
| align="center" |✔️
| align="center" |
| align="center" style="border-right-color:white;" |❌
| align="center" style="border-right-color:white;" |❌
| align="center" |✔️
| align="center" |
| align="center" style="border-right-color:white;" |❌
| align="center" style="border-right-color:white;" |❌
| align="center" |✔️
| align="center" |
| align="center" style="border-right-color:white;" |❌
| align="center" style="border-right-color:white;" |❌
|-
|-
Line 309: Line 309:
| align="center" |?
| align="center" |?
| align="center" style="border-right-color:white;" |?
| align="center" style="border-right-color:white;" |?
| align="center" |✔️
| align="center" |
| align="center" style="border-right-color:white;" |❌
| align="center" style="border-right-color:white;" |❌
| align="center" |✔️
| align="center" |
| align="center" style="border-right-color:white;" |❌
| align="center" style="border-right-color:white;" |❌
| align="center" |?
| align="center" |?
| align="center" style="border-right-color:white;" |?
| align="center" style="border-right-color:white;" |?
| align="center" |✔️
| align="center" |
| align="center" style="border-right-color:white;" |❌
| align="center" style="border-right-color:white;" |❌
| align="center" |✔️
| align="center" |
| align="center" style="border-right-color:white;" |❌
| align="center" style="border-right-color:white;" |❌
| align="center" |✔️
| align="center" |
| align="center" style="border-right-color:white;" |❌
| align="center" style="border-right-color:white;" |❌
|-
|-
Line 327: Line 327:
| align="center" |?
| align="center" |?
| align="center" style="border-right-color:white;" |?
| align="center" style="border-right-color:white;" |?
| align="center" |✔️
| align="center" |
| align="center" style="border-right-color:white;" |❌
| align="center" style="border-right-color:white;" |❌
| align="center" |✔️
| align="center" |
| align="center" style="border-right-color:white;" |❌
| align="center" style="border-right-color:white;" |❌
| align="center" |?
| align="center" |?
| align="center" style="border-right-color:white;" |?
| align="center" style="border-right-color:white;" |?
| align="center" |✔️
| align="center" |
| align="center" style="border-right-color:white;" |❌
| align="center" style="border-right-color:white;" |❌
| align="center" |✔️
| align="center" |
| align="center" style="border-right-color:white;" |❌
| align="center" style="border-right-color:white;" |❌
| align="center" |✔️
| align="center" |
| align="center" style="border-right-color:white;" |❌
| align="center" style="border-right-color:white;" |❌
|-
|-
Line 345: Line 345:
| align="center" |?
| align="center" |?
| align="center" style="border-right-color:white;" |?
| align="center" style="border-right-color:white;" |?
| align="center" |✔️
| align="center" |
| align="center" style="border-right-color:white;" |❌
| align="center" style="border-right-color:white;" |❌
| align="center" |✔️
| align="center" |
| align="center" style="border-right-color:white;" |❌
| align="center" style="border-right-color:white;" |❌
| align="center" |?
| align="center" |?
| align="center" style="border-right-color:white;" |?
| align="center" style="border-right-color:white;" |?
| align="center" |✔️
| align="center" |
| align="center" style="border-right-color:white;" |❌
| align="center" style="border-right-color:white;" |❌
| align="center" |✔️
| align="center" |
| align="center" style="border-right-color:white;" |❌
| align="center" style="border-right-color:white;" |❌
| align="center" |✔️
| align="center" |
| align="center" style="border-right-color:white;" |❌
| align="center" style="border-right-color:white;" |❌
|-
|-
Line 363: Line 363:
| align="center" |?
| align="center" |?
| align="center" style="border-right-color:white;" |?
| align="center" style="border-right-color:white;" |?
| align="center" |✔️
| align="center" |
| align="center" style="border-right-color:white;" |❌
| align="center" style="border-right-color:white;" |❌
| align="center" |✔️
| align="center" |
| align="center" style="border-right-color:white;" |❌
| align="center" style="border-right-color:white;" |❌
| align="center" |?
| align="center" |?
| align="center" style="border-right-color:white;" |?
| align="center" style="border-right-color:white;" |?
| align="center" |✔️
| align="center" |
| align="center" style="border-right-color:white;" |❌
| align="center" style="border-right-color:white;" |❌
| align="center" |✔️
| align="center" |
| align="center" style="border-right-color:white;" |❌
| align="center" style="border-right-color:white;" |❌
| align="center" |❌
| align="center" |❌
Line 382: Line 382:
| align="center" |?
| align="center" |?
| align="center" style="border-right-color:white;" |?
| align="center" style="border-right-color:white;" |?
| align="center" |✔️
| align="center" |
| align="center" style="border-right-color:white;" |❌
| align="center" style="border-right-color:white;" |❌
| align="center" |✔️
| align="center" |
| align="center" style="border-right-color:white;" |❌
| align="center" style="border-right-color:white;" |❌
| align="center" |?
| align="center" |?
| align="center" style="border-right-color:white;" |?
| align="center" style="border-right-color:white;" |?
| align="center" |✔️
| align="center" |
| align="center" style="border-right-color:white;" |❌
| align="center" style="border-right-color:white;" |❌
| align="center" |✔️
| align="center" |
| align="center" style="border-right-color:white;" |❌
| align="center" style="border-right-color:white;" |❌
| align="center" |❌
| align="center" |❌
Line 401: Line 401:
| align="center" |?
| align="center" |?
| align="center" style="border-right-color:white;" |?
| align="center" style="border-right-color:white;" |?
| align="center" |✔️
| align="center" |
| align="center" style="border-right-color:white;" |❌
| align="center" style="border-right-color:white;" |❌
| align="center" |✔️
| align="center" |
| align="center" style="border-right-color:white;" |❌
| align="center" style="border-right-color:white;" |❌
| align="center" |?
| align="center" |?
| align="center" style="border-right-color:white;" |?
| align="center" style="border-right-color:white;" |?
| align="center" |✔️
| align="center" |
| align="center" style="border-right-color:white;" |❌
| align="center" style="border-right-color:white;" |❌
| align="center" |✔️
| align="center" |
| align="center" style="border-right-color:white;" |❌
| align="center" style="border-right-color:white;" |❌
| align="center" |❌
| align="center" |❌
Line 419: Line 419:
| align="center" |?
| align="center" |?
| align="center" style="border-right-color:white;" |?
| align="center" style="border-right-color:white;" |?
| align="center" |✔️
| align="center" |
| align="center" style="border-right-color:white;" |❌
| align="center" style="border-right-color:white;" |❌
| align="center" |?
| align="center" |?
Line 437: Line 437:
| align="center" |?
| align="center" |?
| align="center" style="border-right-color:white;" |?
| align="center" style="border-right-color:white;" |?
| align="center" |✔️
| align="center" |
| align="center" style="border-right-color:white;" |❌
| align="center" style="border-right-color:white;" |❌
| align="center" |?
| align="center" |?
Line 455: Line 455:
| align="center" |?
| align="center" |?
| align="center" style="border-right-color:white;" |?
| align="center" style="border-right-color:white;" |?
| align="center" |✔️
| align="center" |
| align="center" style="border-right-color:white;" |❌
| align="center" style="border-right-color:white;" |❌
| align="center" |?
| align="center" |?

Revision as of 01:08, 20 February 2026

V · EThis is an official VRChat information page!
It is reviewed and approved by the VRCWiki Team. Learn how to contribute to this page by reading the Contribution Guide.
V · EThis page is a stub.
You can help the VRChat Wiki by improving it.
[Reason: This page is not yet complete! You can contribute, by expanding and proofreading, in accordance with the Manual of Style.]

Video players are prefabs in VRChat worlds, using Udon, that allow users to share, or stream video content simultaneously. VRChat officially uses two types of video players in their SDK, VRCAVProVideoPlayer, and VRCUnityVideoPlayer[1]. However, there are different community-created video player prefabs, with different user interfaces, and preferences. All video players utilize world audio, and most video players have a volume slider on the user interface.

Video compatibility

Using VRChat's default settings, video players can play videos from their list of trusted sources, such as YouTube and Twitch. However, by toggling "Allow Untrusted URLs" in your settings, videos from most sources should be able to play and be watched, and as long as it's a supported video format, or stream codec, by the player.

Playing videos not from the video player allowlist[2] in Public instances may be limited, unless the world creator has that domain or host whitelisted.

Video codecs and containers

If hosting video yourself, VRChat may or may not be able to play various filetypes, depending on the user's platform. This also varies depending on whether the player is using AVPro or Unity video player.

(This table is a work in progress, please fill in other platforms as you're able. Platform compatibility can be tested within this community world.)

Win 10 Win 11 Steam Deck Quest 2 Quest 3 Android[note 1] iOS
Video Audio Container AVPro Unity AVPro Unity AVPro Unity AVPro Unity AVPro Unity AVPro Unity AVPro Unity
H.264 AAC MP4 ? ? ? ?
H.265 AAC MP4 ?

[note 2]

?

[note 2]

? ?

[note 3]

[note 4]

VP8 Vorbis WebM ? ? ? ?
VP9 Vorbis WebM ? ? ? ?
VP9 Vorbis MKV ? ?

[note 5]

? ?
AV1 AAC MP4 ? ? ? ?
AV1 AAC MKV ? ? ? ? ? ? ? ? ? ? ? ?
AV1 Vorbis WebM ? ? ? ?
AV1 Vorbis MKV ? ?

[note 5]

? ?
AV1 Vorbis MP4 ? ?

[note 6]

? ? ? ? ? ? ? ? ? ?
AV1 Opus MKV ? ? ? ? ? ? ? ? ? ? ? ?
AV1 Opus MP4 ? ?

[note 6]

? ? ? ? ? ? ? ? ? ?
- AAC M4A ? ? ? ?
- AAC MP4 ? ? ? ?
- FLAC FLAC ? ? ? ?
- FLAC MP4 ? ? ? ?
- MP3 MP3 ? ? ? ?
- MP3 MP4 ? ? ? ?

[note 7]

- Vorbis OGG ? ? ? ?

[note 8]

- Vorbis MKV ? ? ? ?
- Vorbis WEBM ? ? ? ? ? ? ? ? ? ? ? ?
- Opus OPUS ? ? ? ? ? ? ? ? ? ? ? ?
- Opus WebM ? ? ? ? ? ? ? ? ? ? ? ?
- Opus MP4 ? ? ? ? ? ? ? ? ? ? ? ?
  1. needs always to be served over https
  2. 2.0 2.1 Requires HEVC Video Extensions to be installed
  3. sound was played, but screen was staying dark
  4. video loading was succeed, but there was no sound nor screen content
  5. 5.0 5.1 on some machines, no sound plays
  6. 6.0 6.1 video played, sound did not
  7. loading was not finished in a brief time
  8. the resource was loaded but played no sound

In the SDK

You can add video players to your VRChat world with the SDK's VRCAVProVideoPlayer or VRCUnityVideoPlayer. The easiest way to put a Video Player in your Udon world is by using one of the Prefabs, which you can find in: Packages/VRChat SDK - Worlds/Samples/UdonExampleScene/Prefabs/VideoPlayers.

Official resources

See also

References

  1. Video Players | VRChat Creation on creators.vrchat.com; retrieved December 7, 2024
  2. Video Player Allowlist on creators.vrchat.com; retrieved December 7, 2024.