Supported Media
In general the most common format that is supported are MP4 files with H.264 encoding for video and AAC encoding for audio. This format is supported across all platforms though not necessarily all bit-rates and profiles.
AVPro Video doesn't include native support for any codecs (except for Hap and NotchLC) and relies on codecs that are natively supported by the operating system. The tables below give a fairly accurate idea of what we expect to be supported. On Windows 3rd party codecs can be installed via DirectShow and Media Foundation and are supported.
Container Formats
Container formats are file formats that contain audio, video, text or metadata tracks. An important distinction to realise is that these file formats and are separate for the audio and video codecs. It is not enough to say a video is in 'MP4' format as this format contains tracks which are encoded using different codecs.
Windows | Android | macOS | iOS / tvOS / visionOS | |
---|---|---|---|---|
MP4 | ✓ | ✓ | ✓ | ✓ |
MOV | ✓ | . | ✓ | ✓ |
MKV | ✓ 1 | ✓ | . | . |
WebM | ✓ 2 | ✓ | . | . |
AVI | ✓ | . | . | . |
MP3 | ✓ | ✓ | ✓ | ✓ |
AAC | ✓ | ✓ | ✓ | ✓ |
WAV | ✓ | . | . | . |
CAF | . | . | ✓ | ? |
1 Requires Windows 10 for native support. Otherwise DirectShow API can be used with LAV Filters.
2 Requires Windows 10 (1607 Anniversary and above) for native support. Otherwise DirectShow API can be used with LAV Filters.
Streaming Formats
AVPro Video supports several streaming protocol depending on the platform:
Windows | UWP 7 | Android | macOS | iOS / tvOS / visionOS | |
---|---|---|---|---|---|
HTTP Progressive |
|||||
MP4 | ✓ | ✓ | ✓ | ✓ | ✓ |
Adaptive |
|||||
HLS (m3u8) | ✓ 1 | ✓ 1 | ✓ | ✓ | ✓ |
MPEG-DASH (mpd) | ✓ 1 | ✓ 1 | ✓ 4 | . | . |
Microsoft Smooth Streaming (ism) | ✓ 1 | ✓ 1 | . | . | . |
Real-time |
|||||
RTSP | ~ 2 | . | ✓ 5 | . | . |
RTMP | ~ 3 | . | ✓ 6 | . | . |
1 Requires Windows 10 for native support, or using DirectShow with suitable 3rd party filter (eg LAV Filters).
2 Limited native support. Read Microsoft notes about support here: https://docs.microsoft.com/en-us/windows/win32/medfound/supported-protocols. Generally only support ASF, MP3 and PCM media types, but support seems improved from Windows 10 build 1803 onwards (as in added H.264 support), but it's not documented (parsing is handled by mfnetsrc.dll).
3 Only using DirectShow with suitable 3rd party filter (eg LAV Filters).
4 Using ExoPlayer API only.
5 Using ExoPlayer API, or MediaPlayer API (but not fully featured).
6 Using ExoPlayer API only. Known issues surrounding address resolution.
7 Platform no longer officially supported, info here for reference only.
Audio Codecs
Windows | Android | macOS | iOS / tvOS / visionOS | |
---|---|---|---|---|
AAC | ✓ | ✓ | ✓ | ✓ |
MP3 | ✓ | ✓ | ✓ | ✓ 3 |
FLAC | ~ 1 | ✓ | ✓ | ✓ |
AC3 | ✓ | ? | ✓ | ✓ |
WMA | ✓ | . | . | . |
MIDI | ✓ | ? | ✓ | ✓ |
Vorbis | . | ✓ | . | . |
Opus | ~ 2 | ✓ | . | . |
ALAC (Apple Lossless) | . | . | ✓ | ✓ |
µLAW | ✓ | . | ✓ | ✓ |
ADPCM | ✓ | . | ✓ | ✓ |
Linear PCM | ✓ | ✓ | ✓ | ✓ |
1 Requires Windows 10 for native support. Otherwise DirectShow API can be used with LAV Filters.
2 Requires Windows 10 Windows 10 1607 Anniversary and above.
3 Audio files only, not supported as audio tracks inside MP4 files
Video Codecs
Windows | Android | macOS | iOS / tvOS / visionOS | |
---|---|---|---|---|
HEVC / H.265 | ✓ 1 | ✓ | ✓ | ✓ |
MV-HEVC | . 7 | . 7 | ✓ | ✓ |
H.264 | ✓ 5 | ✓ | ✓ | ✓ |
H.263 (DivX/XVid) | ✓ | ✓ | . | ? |
MJPEG | ✓ | . | ✓ 6 | ✓ 6 |
WMV | ✓ | . | . | . |
VP8 | ✓ 2 4 | ✓ 4 | . | . |
VP9 | ✓ 2 4 | ✓ 4 | . | . |
Hap | ✓ | . | ✓ | . |
NotchLC | ✓ | . | . | . |
ProRes 422 | . | . | ✓ | . |
ProRes 4444 | . | . | ✓ | . |
Lagarith | ✓ 3 | . | . | . |
Huffyuv | ✓ 3 | . | . | . |
Uncompressed RGBA | ✓ 3 | . | ✓ | . |
Uncompressed YUV | ✓ 3 | . | . | . |
Uncompressed R10K | . | ✓ | . | . |
Uncompressed V210 | . | ✓ | . | . |
Uncompressed 2VUY | . | ✓ | . | . |
1 HEVC requires Windows 10 for native support, but the codec no longer ships with Windows and requires a download from Microsoft Store 12. Otherwise DirectShow API can be used with LAV Filters.
2 Yes, only in Windows 10 and only 4:2:0. Native VP9 support only comes in Yes in Windows 10 1607 Anniversary Update and above, but it may be available before that via Intel GPU drivers. If you use DirectShow and 3rd party filter then 4:4:4 can be supported. Using Media Foundation no audio codecs (Vorbis or Opus) are supported and will cause the video to fail to load if included.
3 Using DirectShow API and with codec installed.
4 Transparency is not supported, unless packing is used.
5 H.264 on Windows only supports 4:2:0 and 8-bit (unless using DirectShow with 3rd party decoder such as LAV Filters). 6 MJPEG is only supported in a mov file. 7 On platforms that support HEVC, MV-HEVC encoded media will playback the hero eye which is usually the left.
Android
Android supports many media formats. For a complete list check the Android MediaPlayer documentation here: https://developer.android.com/guide/appendix/media-formats.html and the ExoPlayer documentation here: https://google.github.io/ExoPlayer/supported-formats.html
HEVC (H.265) support was officially added in Android 5.0 (Lollipop) but only as a software decoding implementation on older devices.
We have found that using GearVR on Samsung Galaxy S6 and S7 that H.265 codec works best, with a resolution of 3840x1920 at 30fps, or 2048x2048 at 60fps.
A list of media-player related Android chipsets and which formats they support for hardware decoding: http://kodi.wiki/view/Android_hardware
iOS / tvOS / visionOS
In order for local video files to be recognised they must have the correct extension. This must be one of mp4, mov, qt, and m3u8. If the extension is not recognised or is missing then the file will not play.
For remote files you must ensure your server is correctly configured and replies with the correct Content-Type set in the response header. For instance this could be "application/vnd.apple.mpegurl" for HLS and "video/mp4" for mp4 files.
Video files with mp3 audio tracks are not supported.
macOS
Many media formats are supported by macOS including H.264, HEVC, ProRes 422 and ProRes 4444.
macOS Yosemite (10.10) added support for
- DV
- Uncompressed R10k
- Uncompressed v210
- Uncompressed 2vuy
macOS High Sierra (10.13) added support for
- HEVC (H.265)
- Flac
- Opus (only as a .caf file)
Windows
A full list of natively supported formats can be found here: https://msdn.microsoft.com/en-us/library/windows/desktop/dd757927(v=vs.85).aspx
https://msdn.microsoft.com/en-us/windows/uwp/audio-video-camera/supported-codecs
H.264 decoder supports up to profile L5.1, but Windows 10 supports above L5.1 profile: https://msdn.microsoft.com/en-us/library/windows/desktop/dd797815(v=vs.85).aspx
H.265 decoder specs are here: https://msdn.microsoft.com/en-us/library/windows/desktop/mt218785(v=vs.85).aspx
Windows 10 adds native support for the following formats:
- H.265 / HEVC
- MKV
- FLAC
- HLS Adaptive Streaming
- MPEG-DASH
Windows 10 HLS features supported: https://docs.microsoft.com/en-us/windows/uwp/audio-video-camera/hls-tag-support
Windows 10 MPEG-DASH features supported: https://docs.microsoft.com/en-us/windows/uwp/audio-video-camera/dash-profile-support
Windows 10 Fall Update seems to remove native H.265 / HEVC support for some users and requires them to download the free HEVC Video Extension. Before update KB4056892 (4 Jan 2018), users also had to open a H.265 video in the Films & TV app after a restart before AVPro Video could play H.265 videos. This update seems to fix that however.
Windows UWP
Details on media supported by this platform can be found is platform are here:
https://msdn.microsoft.com/library/windows/apps/ff462087(v=vs.105).aspx
https://msdn.microsoft.com/en-us/windows/uwp/audio-video-camera/supported-codecs
WebGL
Support for WebGL platform is still varied and depends on the platform and browser support. Some formats such as AVI file container are not supported at all. As with all other platforms, H.264 video in an MP4 container is the most widely supported format.
Adaptive streaming (such as HLS and MPEG-DASH) is not supported natively by all browsers, but we have seen it working in the Microsoft Edge and Safari browsers. For the best compatibility we have added the ability to include 3rd party javascript libraries to handle these (dash.js and hls.js). See the streaming section for how to implement these.
For best compatibility make sure to force WebGL 1.0 by going to Player Settings > Other Settings > Auto Graphics API and removing WebGL 2.0. Failure to do so can make videos on Chrome not render.
On newer versions of Safari videos are not allows to auto-play unless given permission by the user (in the preferences menu). This doesn’t affect videos that have no audio track so this may be a workaround. More details can be found here: https://webkit.org/blog/7734/auto-play-policy-changes-for-macos/
Some resources about the supported formats: