Video players: Difference between revisions
RavenWorks (talk | contribs) →Video codecs and containers: Add data for Steam Deck and Android |
updated video codecs and containers matrix for quest 2 |
||
| (3 intermediate revisions by 2 users not shown) | |||
| Line 1: | Line 1: | ||
{{Noticebox/Official}}{{Noticebox/Stub|This page is not yet complete! You can contribute, by expanding and proofreading, in accordance with the [[VRCWiki:Manual of Style|Manual of Style]].}} | {{Noticebox/Official}} | ||
{{Noticebox/Stub|This page is not yet complete! You can contribute, by expanding and proofreading, in accordance with the [[VRCWiki:Manual of Style|Manual of Style]].}} | |||
'''Video players''' are [[Prefabs|prefabs]] in VRChat [[Worlds|worlds]], using [[Udon]], that allow users to share, or stream video content simultaneously. VRChat officially uses two types of video players in their [[VRChat SDK|SDK]], ''VRCAVProVideoPlayer'', and ''VRCUnityVideoPlayer''<ref>[https://creators.vrchat.com/worlds/udon/video-players/ Video Players | VRChat Creation] on ''creators.vrchat.com; retrieved December 7, 2024</ref>. However, there are different [[Community:Video players|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 players''' are [[Prefabs|prefabs]] in VRChat [[Worlds|worlds]], using [[Udon]], that allow users to share, or stream video content simultaneously. VRChat officially uses two types of video players in their [[VRChat SDK|SDK]], ''VRCAVProVideoPlayer'', and ''VRCUnityVideoPlayer''<ref>[https://creators.vrchat.com/worlds/udon/video-players/ Video Players | VRChat Creation] on ''creators.vrchat.com; retrieved December 7, 2024</ref>. However, there are different [[Community:Video players|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. | ||
| Line 6: | Line 7: | ||
Using VRChat's default [[Settings|settings]], video players can play videos from their list of [[Trusted URLs|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. | Using VRChat's default [[Settings|settings]], video players can play videos from their list of [[Trusted URLs|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<ref>[https://creators.vrchat.com/worlds/udon/video-players/www-whitelist/ Video Player Allowlist] on ''creators.vrchat.com''; retrieved December 7, 2024.</ref> in | Playing videos not from the video player allowlist<ref>[https://creators.vrchat.com/worlds/udon/video-players/www-whitelist/ Video Player Allowlist] on ''creators.vrchat.com''; retrieved December 7, 2024.</ref> in public [[Instances|instances]] may be limited, unless the world creator has that domain or host whitelisted. | ||
=== Video codecs and containers === | === Video codecs and containers === | ||
| Line 23: | Line 24: | ||
! colspan=2 style="border-right-color:white;" |Quest 2 | ! colspan=2 style="border-right-color:white;" |Quest 2 | ||
! colspan=2 style="border-right-color:white;" |Quest 3 | ! colspan=2 style="border-right-color:white;" |Quest 3 | ||
! colspan=2 style="border-right-color:white;" |Android<ref group="note"> | ! colspan=2 style="border-right-color:white;" |Android<ref group="note">URL's must use the <code>https</code> protocol</ref> | ||
! colspan=2 style="border-right-color:white;" |iOS | ! colspan=2 style="border-right-color:white;" |iOS | ||
|- | |- | ||
| Line 53: | Line 54: | ||
| 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 73: | Line 74: | ||
| 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 80: | Line 81: | ||
| align="center" style="border-right-color:white;" |✅ | | align="center" style="border-right-color:white;" |✅ | ||
| align="center" |❌ | | align="center" |❌ | ||
<ref group="note"> | <ref group="note" name=":1">Load succeeded with audio, but video did not display</ref> | ||
| align="center" style="border-right-color:white;" |❌ | | align="center" style="border-right-color:white;" |❌ | ||
<ref group="note"> | <ref group="note" name=":2">Load succeeded, but video or audio did not display/play</ref> | ||
|- | |- | ||
!VP8 | !VP8 | ||
| Line 93: | Line 94: | ||
| 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 111: | Line 112: | ||
| 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 127: | Line 128: | ||
| 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">On some hardware, no audio plays</ref> | ||
| align="center" |✅ | |||
| 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 148: | Line 149: | ||
| 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;" | | <ref name=":1" group="note" /> | ||
| 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 166: | Line 168: | ||
| 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;" | | <ref name=":1" group="note" /> | ||
| align="center" | | | align="center" style="border-right-color:white;" |❌ | ||
| align="center" style="border-right-color:white;" | | | align="center" |✅ | ||
| 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 184: | Line 187: | ||
| 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;" | | <ref name=":1" group="note" /> | ||
| 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 203: | Line 207: | ||
| 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;" | | <ref name=":1" group="note" /> | ||
| 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 219: | Line 224: | ||
| align="center" |❌ | | align="center" |❌ | ||
| align="center" style="border-right-color:white;" |❌ | | align="center" style="border-right-color:white;" |❌ | ||
<ref group="note" name="videoyessoundno">video | <ref group="note" name="videoyessoundno">Load succeeded with video, but audio did not play</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;" | | <ref name=":3" group="note" /> | ||
| align="center" | | | align="center" style="border-right-color:white;" |❌ | ||
| align="center" style="border-right-color:white;" | | | align="center" |❌ | ||
<ref name="videoyessoundno" group="note" /> | |||
| align="center" style="border-right-color:white;" |✅ | |||
| align="center" |❌ | | align="center" |❌ | ||
<ref name="videoyessoundno" group="note" /> | <ref name="videoyessoundno" group="note" /> | ||
| 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;" | | <ref name=":2" group="note" /> | ||
| align="center" style="border-right-color:white;" |❌ | |||
<ref name=":2" group="note" /> | |||
|- | |- | ||
!AV1 | !AV1 | ||
| Line 241: | Line 250: | ||
| 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;" | | <ref name=":1" group="note" /> | ||
| align="center" | | | align="center" style="border-right-color:white;" |❌ | ||
| align="center" style="border-right-color:white;" | | | align="center" |✅ | ||
| 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 260: | Line 270: | ||
| 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;" | | <ref name=":1" group="note" /> | ||
| align="center" | | | align="center" style="border-right-color:white;" |❌ | ||
| align="center" style="border-right-color:white;" | | | align="center" |✅ | ||
| 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;" | | <ref name=":1" group="note" /> | ||
| align="center" style="border-right-color:white;" |❌ | |||
<ref name=":2" group="note" /> | |||
|- | |- | ||
! - | ! - | ||
| Line 278: | 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;" |❌ | ||
| Line 296: | 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;" |❌ | ||
| Line 314: | 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;" |❌ | ||
| Line 332: | 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;" |❌ | ||
| Line 350: | 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;" |❌ | ||
| Line 368: | Line 381: | ||
| 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 375: | Line 388: | ||
| align="center" style="border-right-color:white;" |❌ | | align="center" style="border-right-color:white;" |❌ | ||
| align="center" |❌ | | align="center" |❌ | ||
<ref group="note"> | <ref group="note" name=":3">Loading did not finish</ref> | ||
| align="center" style="border-right-color:white;" |❌ | | align="center" style="border-right-color:white;" |❌ | ||
|- | |- | ||
| Line 387: | Line 400: | ||
| 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 394: | Line 407: | ||
| align="center" style="border-right-color:white;" |❌ | | align="center" style="border-right-color:white;" |❌ | ||
| align="center" |❌ | | align="center" |❌ | ||
<ref group="note"> | <ref group="note">Load succeeded, but audio did not play</ref> | ||
| align="center" style="border-right-color:white;" |❌ | | align="center" style="border-right-color:white;" |❌ | ||
|- | |- | ||
| Line 406: | 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" |✅ | ||
| align="center" style="border-right-color:white;" |❌ | | align="center" style="border-right-color:white;" |❌ | ||
| Line 424: | 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" |✅ | ||
| align="center" style="border-right-color:white;" | | | align="center" style="border-right-color:white;" |❌ | ||
| align="center" |✅ | |||
| align="center" style="border-right-color:white;" |❌ | |||
| align="center" |❌ | |||
| align="center" style="border-right-color:white;" |❌ | |||
|- | |- | ||
! - | ! - | ||
| Line 442: | 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" |✅ | ||
| align="center" style="border-right-color:white;" | | | align="center" style="border-right-color:white;" |❌ | ||
| align="center" |✅ | |||
| align="center" style="border-right-color:white;" |❌ | |||
| align="center" |✅ | |||
| align="center" style="border-right-color:white;" |❌ | |||
|- | |- | ||
! - | ! - | ||
| Line 460: | Line 473: | ||
| 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" style="border-right-color:white;" |❌ | |||
| align="center" |❌ | |||
| align="center" style="border-right-color:white;" |❌ | |||
|- | |- | ||
! - | ! - | ||
| Line 478: | Line 491: | ||
| 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" style="border-right-color:white;" |❌ | |||
| align="center" |✅ | |||
| align="center" style="border-right-color:white;" |❌ | |||
|- | |- | ||
! - | ! - | ||
| Line 496: | Line 509: | ||
| 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 514: | Line 527: | ||
| 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 532: | Line 545: | ||
| 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 550: | Line 563: | ||
| 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 561: | Line 574: | ||
<references group="note" /> | <references group="note" /> | ||
== | ==SDK== | ||
Video players can be added to VRChat worlds with the SDK's <code>VRCAVProVideoPlayer</code> or <code>VRCUnityVideoPlayer</code> prefabs. They can be found in: ''Packages\com.vrchat.worlds\Samples\UdonExampleScene\Prefabs\VideoPlayers''. | |||
Alternatively, there are different community-created video player prefabs that can be used instead. | |||
==Official resources== | ==Official resources== | ||
| Line 572: | Line 587: | ||
* [[Trusted URLs]] | * [[Trusted URLs]] | ||
* [[Udon]] | * [[Udon]] | ||
==References== | ==References== | ||
<references /> | |||
[[Category:Video players]] | [[Category:Video players]] | ||
[[Category:Needs images]] | [[Category:Needs images]] | ||
Latest revision as of 17:37, 10 May 2026
[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 | ? | ? | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ |
| VP8 | Vorbis | WebM | ? | ? | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ |
| VP9 | Vorbis | WebM | ? | ? | ✅ | ❌ | ✅ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ |
| VP9 | Vorbis | MKV | ? | ? | ✅ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ |
| AV1 | AAC | MP4 | ? | ? | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| AV1 | AAC | MKV | ? | ? | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ |
| AV1 | Vorbis | WebM | ? | ? | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ |
| AV1 | Vorbis | MKV | ? | ? | ✅ | ❌ | ✅ | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ |
| AV1 | Vorbis | MP4 | ? | ? | ❌ | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ | ✅ | ❌ | ✅ | ❌ | ❌ |
| AV1 | Opus | MKV | ? | ? | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ |
| AV1 | Opus | MP4 | ? | ? | ❌ | ❌ | ✅ | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ |
| - | AAC | M4A | ? | ? | ✅ | ❌ | ✅ | ❌ | ✅ | ❌ | ✅ | ❌ | ✅ | ❌ | ✅ | ❌ |
| - | AAC | MP4 | ? | ? | ✅ | ❌ | ✅ | ❌ | ✅ | ❌ | ✅ | ❌ | ✅ | ❌ | ✅ | ❌ |
| - | FLAC | FLAC | ? | ? | ✅ | ❌ | ✅ | ❌ | ✅ | ❌ | ✅ | ❌ | ✅ | ❌ | ✅ | ❌ |
| - | FLAC | MP4 | ? | ? | ✅ | ❌ | ✅ | ❌ | ✅ | ❌ | ✅ | ❌ | ✅ | ❌ | ✅ | ❌ |
| - | MP3 | MP3 | ? | ? | ✅ | ❌ | ✅ | ❌ | ✅ | ❌ | ✅ | ❌ | ✅ | ❌ | ✅ | ❌ |
| - | MP3 | MP4 | ? | ? | ✅ | ❌ | ✅ | ❌ | ✅ | ❌ | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ |
| - | Vorbis | OGG | ? | ? | ✅ | ❌ | ✅ | ❌ | ✅ | ❌ | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ |
| - | Vorbis | MKV | ? | ? | ✅ | ❌ | ✅ | ❌ | ✅ | ❌ | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ |
| - | Vorbis | WEBM | ? | ? | ✅ | ❌ | ✅ | ❌ | ✅ | ❌ | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ |
| - | Opus | OPUS | ? | ? | ✅ | ❌ | ✅ | ❌ | ✅ | ❌ | ✅ | ❌ | ✅ | ❌ | ✅ | ❌ |
| - | Opus | WebM | ? | ? | ✅ | ❌ | ✅ | ❌ | ✅ | ❌ | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ |
| - | Opus | MP4 | ? | ? | ❌ | ❌ | ✅ | ❌ | ✅ | ❌ | ✅ | ❌ | ✅ | ❌ | ✅ | ❌ |
| - | MP3 | PLS | ? | ? | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | ? | ? |
| - | AAC | PLS | ? | ? | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | ? | ? |
| - | MP3 | M3U | ? | ? | ✅ | ❌ | ✅ | ❌ | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | ? | ? |
| - | AAC | M3U | ? | ? | ✅ | ❌ | ✅ | ❌ | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | ? | ? |
- ↑ URL's must use the
httpsprotocol - ↑ 2.0 2.1 Requires HEVC Video Extensions to be installed
- ↑ 3.0 3.1 3.2 3.3 3.4 3.5 3.6 3.7 Load succeeded with audio, but video did not display
- ↑ 4.0 4.1 4.2 4.3 Load succeeded, but video or audio did not display/play
- ↑ 5.0 5.1 On some hardware, no audio plays
- ↑ 6.0 6.1 6.2 6.3 Load succeeded with video, but audio did not play
- ↑ 7.0 7.1 Loading did not finish
- ↑ Load succeeded, but audio did not play
SDK
Video players can be added to VRChat worlds with the SDK's VRCAVProVideoPlayer or VRCUnityVideoPlayer prefabs. They can be found in: Packages\com.vrchat.worlds\Samples\UdonExampleScene\Prefabs\VideoPlayers.
Alternatively, there are different community-created video player prefabs that can be used instead.
Official resources
- Video Players on creators.vrchat.com
- Video Player Allowlist on creators.vrchat.com
- Udon Video Sync Player on creators.vrchat.com
See also
References
- ↑ Video Players | VRChat Creation on creators.vrchat.com; retrieved December 7, 2024
- ↑ Video Player Allowlist on creators.vrchat.com; retrieved December 7, 2024.