Supported video and audio formats reference


πŸ“˜

This article is for customers who self-host their content.

If you are cloud-hosting your content, read Video Preparation to ensure that your videos are properly processed by JW Player.


JWP's player tries to recognize a file format by its extension (such as .mp4 for MP4 videos). If the extension of your files is not recognized, the player will display an error. However, if you know your file is in a supported format, you can use the type configuration option to force the player to recognize the file as being of that format. See the Configuration Options Reference for more info.

The following sections explain the video and audio files and streaming protocols that you must use when preparing your self-hosted streams for playback.



Self-hosted streaming protocols

  • Two video file types: MP4 and WebM
  • Three audio file types: AAC, MP3 and Vorbis
  • Two streaming protocols: HLS and DASH
  • RSS feeds, using enclosures or the Media or JWPlayer extension
  • JSON feeds
  • Mobile SDK supported formats

🚧

RTMP and YouTube are not supported in JW8.



Supported Video Files

Below you will find more detailed information about supported file types according to video resolution, frame-rate, browser, and operating system.

  • MP4 videos using the H.264 video codec and the AAC audio codec. MP4 is of high quality and can be played in all browsers and devices. It is today's video format of choice. The newest codec, H.265, is also supported by the player, but it requires the viewer to be using desktop hardware released after 2015, running either Windows 10+ or Mac's High Sierra operating system.

  • WebM videos using the VP8 or VP9 video codec and the Vorbis or Opus audio codec. WebM is royalty free and of comparable quality to MP4. It has limited browser and device support.
MP4WEBM
Mimetypevideo/mp4video/webm
Internet Explorer 11+HTML5N/A
ChromeHTML5HTML5
FirefoxHTML5HTML5
Safari on MacHTML5N/A
Safari on iOSHTML5N/A
Chrome for AndroidHTML5HTML5


4K Video

JW Player is fully capable of handling 4K video in HTML5 mode. However, please be aware that the ability to play content is highly dependent on hardware and connection speed. We suggest minimum specs similar to the following:

  • 2013 or later multicore Intel or AMD processor

  • A video card capable of outputting 4K signal. Check your manufacturer’s website to confirm that your video card can output 4K. We suggest cards similar to the following:
    • Nvidia GeForce 650 Ti
    • AMD Radeon 7XXX
    • Intel 4000+ Series Graphics
    • An internet connection capable of consistent 25Mb download

4K video can be very taxing on a system and its internet connection. Quality of playback may therefore vary from system to system.



60FPS Content

Much like 4K content, JW Player is also capable of handling video in 60FPS, though it is more taxing on hardware and bandwidth. Both of these requirements are effectively doubled, compared to 30FPS variants, since there are twice as many frames being rendered in the same time period. As with 4K, please keep this in mind when targeting your media's audience.



Supported Audio Files

  • AAC: AAC is of high quality and supported by all browsers and devices.
  • MP3: Though not as good in quality as AAC, MP3 is very widely used. Many existing audio libraries are encoded in MP3.
  • Vorbis: Vorbis is royalty-free, but has limited browser and device support.
ACCMP3VORBIS
Extension(s)aac, m4a, f4amp3ogg, oga
Mimetypeaudio/mp4audio/mpegaudio/ogg
Internet Explorer 11+HTML5HTML5n/a
ChromeHTML5HTML5HTML5
FirefoxHTML5HTML5HTML5
Safari for MacHTML5HTML5n/a
Safari for iOSHTML5HTML5n/a
Chrome for AndroidHTML5HTML5HTML5


Streaming Protocols

JW8 supports two types of streaming protocols:

  • MPEG's DASH protocol, using XML manifests and split media files. Like HLS, DASH utilizes standard HTTP, making it both easy to deploy, and firewall-resilient. See DASH Support for more info.

  • Apple's HLS protocol, using .m3u8 manifest files, TS media, and fragmented .mp4 files. HLS builds upon standard HTTP, making it easy to deploy and firewall resilient. See HLS Support.

🚧

Adobe's RTMP protocol is not supported in JW Player 8.

HLS (Direct/Manifest)DASH (Direct/Manifest)
Extension.m3u8.mpd
Mimetypeapplication/vnd.apple.mpegurlapplication/dash+xml
Media formatsΒ Β Β β€’ CMAF
Β Β Β β€’ Fragmented .mp4 (non-CMAF)
Β Β Β β€’ MPEG-TS
Β Β Β β€’ CMAF1
Β Β Β β€’ Fragmented .mp4 (non-CMAF)
Β Β Β β€’ MPEG-TS
HTML5Desktop
Β Β Β β€’ Chrome
Β Β Β β€’ Edge
Β Β Β β€’ Firefox
Β Β Β β€’ IE 11 on Windows 8.1+
Β Β Β β€’ Safari (Mac)

Mobile Web
Β Β Β β€’ Chrome (Android)
Β Β Β β€’ Safari (iOS)
Desktop
Β Β Β β€’ Chrome
Β Β Β β€’ Edge
Β Β Β β€’ Firefox
Β Β Β β€’ IE11 on Windows 8.1+
Β Β Β β€’ Safari (Mac)2

Mobile Web
Β Β Β β€’ Chrome (Android)

1. CMAF DRM is only supported for DASH CMAF streams.
2. DASH playback in Safari for Mac requires JW Player 8.2.0+.



Playlist Feeds

JW Player support playlist feeds in both RSS/XML format, and JSON format.

An RSS feed is a basic XML file, used to load a playlist with one or more media items into JW Player. For each entry, JW Player can read metadata, poster image, media sources and text tracks from the feed. Loading of RSS feeds differs slightly from other formats, since they use the playlist option instead of file. More information can be found on our RSS feed article.

A JSON feed formatted in the same way as our embedded playlists and can be loaded as external files.



Mobile SDKs' Supported Formats

Both mobile SDKs use the native media engine to render assets on their respective devices. So our SDK by definition supports the formats that these native frameworks support.

Android

For Android, this means ExoPlayer, which lists its supported formats in their documentation here.

iOS

For iOS, this means AVPlayer. However, there is no static documentation listing the framework's supported formats. Instead, you will need to capture the supported formats from the framework itself.

To do this, you can open an Xcode Playground, and run the following snippet (for the supported file types as formats):

import PlaygroundSupport
import AVFoundation

AVURLAsset
    .audiovisualTypes()
    .map({$0.rawValue})
    .filter({!$0.hasPrefix("dyn")})
    .sorted()
    .forEach({print($0)})

The console should print out something like this:

com.apple.coreaudio-format
com.apple.itunes.audible
com.apple.m4a-audio
com.apple.m4v-video
com.apple.mpeg-4-ringtone
com.apple.protected-mpeg-4-audio
com.apple.protected-mpeg-4-audio-b
com.apple.quicktime-movie
com.audible.aa-audiobook
com.audible.aax-audiobook
com.microsoft.waveform-audio
com.sony.wave64
org.3gpp.adaptive-multi-rate-audio
org.xiph.flac
public.3gpp
public.3gpp2
public.aac-audio
public.ac3-audio
public.aifc-audio
public.aiff-audio
public.au-audio
public.avi
public.enhanced-ac3-audio
public.m3u-playlist
public.mp2
public.mp3
public.mp4a-loas
public.mpeg-4
public.mpeg-4-audio
public.pls-playlist

Alternatively, you can get the supported types as filename extensions with this:

import PlaygroundSupport
import AVFoundation

AVURLAsset
    .audiovisualTypes()
    .compactMap({ UTType($0.rawValue)?.preferredFilenameExtension })
    .sorted()
    .forEach({print($0)})

The console output in this case should look like

3g2
3gp
aa
aac
aax
ac3
aifc
aiff
amr
au
avi
caf
eac3
flac
itt
loas
m1a
m2a
m3u
m4a
m4b
m4p
m4r
m4v
mov
mp1
mp2
mp3
mp4
mp4
mpa
mqv
pls
ttml
vtt
vtt
w64
wav
webvtt
xhe

You can find out more about these types in the Apple docs on AVFileType.