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 / iPadOS / tvOS | |
---|---|---|---|---|
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 | Android | macOS | iOS / iPadOS / tvOS | |
---|---|---|---|---|---|
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.
Audio Codecs
Windows | Android | macOS | iOS / iPadOS / tvOS | |
---|---|---|---|---|
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 / iPadOS / tvOS | |
---|---|---|---|---|
HEVC / H.265 | ✓ 1 | ✓ | ✓ | ✓ |
H.264 | ✓ 5 | ✓ | ✓ | ✓ |
H.263 (DivX/XVid) | ✓ | ✓ | . | ? |
MJPEG | ✓ | . | ✓ | ✓ |
WMV | ✓ | . | . | . |
VP8 | ✓ 2 4 | ✓ 4 | . | . |
VP9 | ✓ 2 4 | ✓ 4 | . | . |
Hap | ✓ | . | ✓ | . |
NotchLC | ✓ | . | . | . |
ProRes 422 | . | . | ✓ | . |
ProRes 4444 | . | . | ✓ | . |
DV | ✓ | ✓ | . | . |
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).
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 / iPadOS / tvOS
Many media formats are supported by iOS including H.264. iOS 11 adds support for H.265 (HEVC). The iPhone 7 is the first device with the hardware to support H.265.
iOS doesn’t support MP3 audio tracks in a video file, so best to use AAC instead.
It has proven difficult getting the true video decoding capabilities of iOS devices. Apple’s website has information, but we found it to be slightly inaccurate (for example we can decode 4K video on iPhone5s, which apparently can only do 1080p). It seems that if your device has a 64-bit processor then it will be able to decode 4K H.264, but older devices with 32-bit processors will not.
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 and UWP HLS features supported: https://docs.microsoft.com/en-us/windows/uwp/audio-video-camera/hls-tag-support
Windows 10 and UWP 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: