Codec | Unity | AVPro | Quest Unity | Quest AVPro
H264 | yes | yes | yes | yes
H265 | yes* | yes* | yes | yes³
VP8 | yes | yes | yes | yes³
VP9² | NO | yes | yes | yes³
AV1 | NO | yes¹ | skipped | skipped
.MP3 | NO | yes | skipped | yes
.flac | NO | NO | skipped | skipped
.ogg | NO | yes | skipped | yes
AAC.m4a| NO | yes | skipped | yes
WMP = Windows Media Player
Unity = UnityEngine.Video.VideoPlayer,
Requests to webm files are from UnityPlayer User-Agent
Otherwise MP4 playback is handed off to WMFSDK (Windows Media Foundation)
On Quest all the requests come from ExoPlayer specifically user-agent like
AVProMobileVideo/2023.1.2p4-1290--Release (Linux;Android 10) ExoPlayerLib/2.18.0
* H.265 requires HEVC Video Extensions on Windows.
¹ AV1 requires AV1 Video Extensions on Windows, which is free.
² Windows Store has a free "VP9 Video Extensions", I do not have this installed
³ I'm sure these work, so I haven't tested yet.
Having to go bother to get the Video Extensions seems odd to me, because many GPUs have HEVC encoding and decoding support.
This is just with testing static files. I haven’t tested h265, VP8, VP9 with AVPro players on Quest yet, but I assume they will be yes, because the Unity requests have AVPro User-Agent
April 7th revision: WMP can use LAV Filters, and “Movies & TV” doesn’t allow me to drop files into it. So I’m tossing the WMP column. Testing with the “Movies & TV” application seems to be a good way to see if the codec will work inside VRChat though. VRChat is where the decision to use “Media Foundation” or “DirectShow” with AVPro is made.
If you’re interesting in LAVFilters: winget install Nevcairiel.LAVFilters