This document will cover the SDK-specific error codes. The sources for these errors include:
   • Player Javascript components, and loading of said components    • Native ExoPlayer provider and the exceptions it may throw    • Native features such as Picture-In-Picture
The error codes follow a specific schema:
Name | Description |
Severity |    • Setup errors are delivered via a "setupError" event and are the most severe, these errors start with a 1. <br />    • Fatal errors are delivered via "error" events, these errors start with a 2. <br />    • Warning errors are delivered via "warning" events, these errors start with a 3. |
Category <br /><br /> Sub-category | Categories include features, providers, and other logical groups or components of the player. |
Type | Type of error identified by the last three digits of the error code. |
Code | Identifier for the error <br /><br /> Error code descriptions are listed on this page. |
Use the sections below to help you troubleshoot and programmatically handle player-related issues.
## Setup Errors
<a name="misc"></a>
### Miscellaneous
Code | Reason | Description | Displayed Message |
<a name='100000'></a> 100000 | An unknown setup error occurred. | none | Sorry, the video player failed to load. |
<a name='100001'></a> 100001 | Setup took longer than 60 seconds to complete. | Setup Timeout Error: Setup took longer than 30 seconds to complete. | Sorry, the video player failed to load. |
<a name='100011'></a> 100011 | Missing license key: the key was not found in the setup config or the `jwplayer.key ` global. | Error setting up player: Missing license key | Sorry, the video player failed to load. |
<a name='100012'></a> 100012 | Invalid license key. | Error setting up player: Invalid license key | Sorry, the video player failed to load. |
<a name='100013'></a> 100013 | Expired license key. | Error setting up player: Invalid license key | Sorry, the video player failed to load. |
<a name='100014'></a> 100014 | License key is not supported in unlimited edition. | - | Sorry, the video player failed to load. |
### Player
The player can still emit loading errors when trying to load web player assets such as `jwplayer.core.js
` and the codes and error messages for those events are documented here: <a href="https://developer.jwplayer.com/jwplayer/docs/jw8-player-errors-reference#loading-javascript-components">Player errors reference</a>.
<a name="loading-js"></a>
### Loading JS Components
Code | Reason | Name | Displayed Message |
<a name='101134'></a> 101134 | `Native-playlistitem-callback.js ` failed to load | `NATIVE_PLAYLISTITEM_CALLBACK_ERR_CODE ` | Sorry, the video player failed to load |
<a name='1011361'></a> 101136 | `Jscontext.compatibility.js ` failed to load | `CONTEXT_COMPATIBILITY_ERR_CODE ` | Failed to load a component of the player. |
<a name='101137'></a> 101137 | `Jscontext.polyfills.js ` failed to load | `CONTEXT_POLYFILLS_ERR_CODE ` | Failed to load a component of the player. |
<a name='104163'></a> 104163 | `Html5_provider_mobile.js ` failed to load | `HTML5_PROVIDER_ERR_CODE ` | Sorry, the video player failed to load |
<a name='104164'></a> 104164 | `Native_provider_pool.js ` failed to load | `NATIVE_PROVIDER_POOL_ERR_CODE ` | Sorry, the video player failed to load |
<br /> <hr />
## Player Errors
<a name="provider"></a>
### Provider
These errors are generated due to ExoPlayer exceptions.
<a name="misc"></a>
#### Miscellaneous
Code | Reason | Exception | Name | Displayed Message |
<a name='270000'></a> 270000 | Thrown to indicate that a method has been passed an illegal or inappropriate argument | `IllegalArgumentException ` | `ILLEGAL_ARGUMENT_ERROR ` | This video file cannot be played. |
<a name='270001'></a> 270001 | Signals that an I/O exception of some sort has occurred | `IOException ` | `IO_ERROR ` | This video file cannot be played. |
<a name="exoplayer2"></a>
#### Exoplayer2
Code | Reason | Exception | Name | Displayed Message |
<a name='270100'></a> 270100 | Thrown when a non-recoverable playback failure occurs | `ExoPlaybackException ` | `GENERIC_PLAYBACK_ERROR ` | This video file cannot be played. |
<a name='270101'></a> 270101 | Thrown when an attempt is made to seek to a position that does not exist in the player's Timeline | `IllegalSeekPositionException ` | `ILLEGAL_SEEK_POSITION_ERROR ` | This video file cannot be played. |
<a name='270102'></a> 270102 | Thrown when an error occurs parsing media data and metadata | `ParserException ` | `PARSER_ERROR ` | This video file cannot be played. |
<a name="datasource"></a>
#### DataSource
Code | Reason | Exception | Name | Displayed Message |
<a name='271000'></a> 271000 | Thrown when an error is encountered when trying to read from a `HttpDataSource ` | `HttpDataSourceException ` | `GENERIC_HTTP_DATA_SOURCE_ERROR ` | This video file cannot be played. |
<a name='271010'></a> 271010 | Thrown when cleartext HTTP traffic is not permitted | `CleartextNotPermittedException ` | `CLEARTEXT_NOT_ALLOWED_ERROR ` | This video file cannot be played. |
<a name='271020'></a> 271020 | Thrown when the content type is invalid | `InvalidContentTypeException ` | `INVALID_CONTENT_TYPE_ERROR ` | This video file cannot be played. |
<a name='271XXX'></a> 271XXX | Thrown when an attempt to open a connection results in a response code not in the 2xx range. Error code is generated by adding `271000+HttpStatusCode `. `HttpStatusCode ` is within the range of `400-599 ` | `InvalidResponseCodeException ` | `INVALID_RESPONSE_CODE_ERROR ` | This video file cannot be played |
<a name='271403'></a> 271403 | Thrown when an attempt to access the requested resource is forbidden
<table>
<td style="background-color:#E4EDF3"><strong>NOTE</strong>: The server throws code `271403 ` when the requested resource is restricted by JWP content protection. Content protection methods include:
- Geoblocking
- DRM
- URL signing
</table> | `InvalidResponseCodeException ` | `INVALID_RESPONSE_CODE_ERROR ` | This video file cannot be played |
<a name='271710'></a> 271710 | Thrown when an `IOException ` is encountered reading a local asset. | `AssetDataSourceException ` | `ASSET_DATA_SOURCE_ERROR ` | This video file cannot be played. |
<a name='271720'></a> 271720 | Thrown when an `IOException ` is encountered reading from a content URI. | `ContentDataSourceException ` | `CONTENT_DATA_SOURCE_ERROR ` | This video file cannot be played. |
<a name='271730'></a> 271730 | Thrown when a `FileDataSource ` encounters an error reading a file. | `FileDataSourceException ` | `FILE_DATA_SOURCE_ERROR ` | This video file cannot be played. |
<a name='271740'></a> 271740 | Thrown when an `IOException ` is encountered reading from a raw resource. | `RawResourceDataSourceException ` | `RAW_DATA_SOURCE_ERROR ` | This video file cannot be played. |
<a name="mediacodec"></a>
#### MediaCodec
Code | Reason | Exception | Name | Displayed Message |
<a name='272000'></a> 272000 | Thrown when a failure occurs in the decoder. | `MediaCodecRenderer.DecoderException ` | `GENERIC_DECODER_ERROR ` | This video file cannot be played. |
<a name='272001'></a> 272001 | Thrown when a failure occurs instantiating a decoder. | `MediaCodecRenderer.DecoderInitializationException ` | `DECODER_INIT_ERROR ` | This video file cannot be played. |
<a name='272002'></a> 272002 | Thrown when a failure occurs instantiating a decoder. | `MediaCodecRenderer.DecoderInitializationException ` | `DECODER_INIT_ERROR_UNSUPPORTED ` | This video file cannot be played. |
<a name='272003'></a> 272003 | Thrown when an error occurs querying the device for its underlying media capabilities. | `MediaCodecUtil.DecoderQueryException ` | `DECODER_QUERY_ERROR ` | This video file cannot be played |
### Media
<a name="source"></a>
#### Source
Code | Reason | Exception | Name | Displayed Message |
 | Thrown when a `ClippingMediaSource ` cannot clip its wrapped source. | `ClippingMediaSource.IllegalClippingException ` | none |  |
<a name='274000'></a> 274000 | Thrown when a live playback falls behind the available media window. | `BehindLiveWindowException ` | `BEHIND_LIVE_WINDOW_ERROR ` |  |
<a name='274001'></a> 274001 | Thrown when a `MergingMediaSource ` cannot merge its sources. | `MergingMediaSource.IllegalMergeException ` | `ILLEGAL_MERGE_ERROR ` |  |
<a name='274002'></a> 274002 | Thrown if the input format was not recognized. | `UnrecognizedInputFormatException ` | `INPUT_FORMAT_ERROR ` |  |
<a name="audio"></a>
#### Audio
Code | Reason | Exception | Name | Displayed Message |
<a name='274100'></a> 274100 | Thrown when an audio decoder error occurs. | `AudioDecoderException ` | `AUDIO_DECODER_ERROR ` | This video file cannot be played. |
<a name='274101'></a> 274101 | Exception thrown when a processor can't be configured for a given input audio format. | `AudioProcessor.UnhandledAudioFormatException ` | `UNHANDLED_AUDIO_FORMAT_ERROR ` |  |
<a name='274001'></a> 274001 | Thrown when a `MergingMediaSource ` cannot merge its sources. | `MergingMediaSource.IllegalMergeException ` | `ILLEGAL_MERGE_ERROR ` | This video file cannot be played. |
<a name='274102'></a> 274102 | Thrown when a failure occurs configuring the sink. | `AudioSink.ConfigurationException ` | `AUDIOSINK_CONFIG_ERROR ` | This video file cannot be played. |
<a name='274103'></a> 274103 | Thrown when a failure occurs initializing the sink. | `AudioSink.InitializationException ` | `AUDIOSINK_INIT_ERROR ` | This video file cannot be played. |
<a name='274104'></a> 274104 | Thrown when a failure occurs writing to the sink. | `AudioSink.WriteException ` | `AUDIOSINK_WRITE_ERROR ` | This video file cannot be played. |
<a name='274105'></a> 274105 | Thrown when the audio track has provided a spurious timestamp, if `DefaultAudioSink.failOnSpuriousAudioTimestamp ` is set. | `DefaultAudioSink.InvalidAudioTrackTimestampException ` | `INVALID_AUDIO_TIMESTAMP_ERROR ` | This video file cannot be played. |
<a name="hls"></a>
#### HLS
Code | Reason | Exception | Name | Displayed Message |
<a name='274200'></a> 274200 | Thrown when it is not possible to map a `TrackGroup ` to a `SampleQueue `. | `SampleQueueMappingException ` | `SAMPLE_MAPPING_ERROR ` |  |
<a name='274201'></a> 274201 | Thrown when the media sequence of a new snapshot indicates the server has reset. | `HlsPlaylistTracker.PlaylistResetException ` | `HLS_PLAYLIST_RESET_ERROR ` |  |
<a name='274202'></a> 274202 | Thrown when a playlist is considered to be stuck due to a server side error. | `HlsPlaylistTracker.PlaylistStuckException ` | `HLS_PLAYLIST_STUCK_ERROR ` |  |
<a name="smoothstreaming"></a>
#### SmoothStreaming
Code | Reason | Exception | Name | Displayed Message |
<a name='274300'></a> 274300 | Thrown if a required field is missing. | `SsManifestParser.MissingFieldException ` | `SS_MISSING_FIELD_ERROR ` |  |
<a name="dash"></a>
#### DASH
Code | Reason | Exception | Name | Displayed Message |
<a name='274600'></a> 274600 | Thrown when a live playback's manifest is stale and a new manifest could not be loaded. | `DashManifestStaleException ` | `DASH_MANIFEST_STALE_ERROR ` |  |
<a name="drm"></a>
### DRM
Code | Reason | Exception | Name | Displayed Message |
<a name='276000'></a> 276000 | Thrown when a non-platform component fails to decrypt data. | `DecryptionException ` | `DRM_DECRYPTION_ERROR ` | There was a problem providing access to protected content. |
<a name='276001'></a> 276001 | Signals that the `DrmInitData ` does not contain scheme data for the required UUID. | `DefaultDrmSessionManager.MissingSchemeDataException ` | `DRM_MISSING_SCHEME_DATA_ERROR ` | There was a problem providing access to protected content. |
<a name='276002'></a> 276002 | Wraps the throwable which is the cause of the error state. | `DrmSession.DrmSessionException ` | `DRM_SESSION_ERROR ` | There was a problem providing access to protected content. |
<a name='276003'></a> 276003 | Thrown when the DRM keys loaded into an open session expire. | `KeysExpiredException ` | `DRM_KEY_EXPIRED_ERROR ` | There was a problem providing access to protected content. |
<a name='276004'></a> 276004 | Thrown when the requested DRM scheme is not supported. | `UnsupportedDrmException ` | `DRM_UNSUPPORTED_ERROR ` | There was a problem providing access to protected content. |
<a name='276005'></a> 276005 | Thrown when a crypto error occurs while queueing a secure input buffer. | `CryptoException ` | `DRM_CRYPTO_ERROR ` | There was a problem providing access to protected content. |
<br /> <hr />
<a name="warnings"></a>
## Warnings
<a name="loading-js-warnings"></a>
### Loading JS Component
Code | Reason | Name | Displayed Message |
<a name='301138'></a> 301138 | `Mobile_workarounds.js ` failed to load | `MOBILE_WORK_AROUND_ERR_CODE ` | Failed to load a component of the player |
<a name='304165'></a> 304165 | `Casting-provider-sdk.js ` failed to load | `CASTING_PROVIDER_ERR_CODE ` | Failed to load a component of the player |
<a name='305010'></a> 305010 | `Casting-plugin-sdk.js ` failed to load | `CASTING_PLUGIN_ERR_CODE ` | Failed to load a component of the player |
<a name='305011'></a> 305011 | `Dai-plugin-sdk.js ` failed to load | `DAI_PLUGIN_ERR_CODE ` | Failed to load a component of the player |
<a name='305012'></a> 305012 | `Ima-plugin-sdk.js ` failed to load | `IMA_PLUGIN_ERR_CODE ` | Failed to load a component of the player |
<a name='305013'></a> 305013 | `Related.js ` failed to load | `RELATED_PLUGIN_ERR_CODE ` | Failed to load a component of the player |
<a name="native-warnings"></a>
### Native
<a name="pip-warnings"></a>
### PiP
Code | Reason | Name | Displayed Message |
<a name='309100'></a> 309100 | Default Pip unsupported error | `ERROR_PIP_UNSUPPORTED ` |  |
<a name='309101'></a> 309101 | Warning for when PiP can't be registered due to low API level | `ERROR_PIP_UNAVAILABLE_DUE_TO_API ` |  |
<a name='309102'></a> 309102 | PiP warning for when activity is not registered | `ERROR_PIP_ACTIVITY_NOT_REGISTERED ` | Activity was not registered for picture in picture |
<a name='309103'></a> 309103 | PiP warning for when entering PiP mode failed | `ERROR_ENTERING_PIP_MODE_FAILED ` | There was an error entering picture in picture |
<a name='309104'></a> 309104 | PiP warning for when the set aspect ratio is not within limits | `ERROR_PIP_ASPECT_RATIO_OUTSIDE_LIMITS ` | The provided aspect ratio is too extreme and must be greater then 0.41. and less than 2.39. It will be replaced with the closest viable ratio |
<a name='309105'></a> 309105 | PiP warning for when we attempt to enter PiP mode multiple times | `ERROR_PIP_MODE_ALREADY_ENABLED ` | Attempting to enter PiP mode while PiP mode was already enabled. |
<a name="metadata-warnings"></a>
### Metadata
<a name="subtitles-warnings"></a>
#### Subtitles
Code | Reason | Exception | Name | Displayed Message |
<a name='373100'></a> 373100 | Thrown when an error occurs decoding subtitle data. | `SubtitleDecoderException ` | `SUBTITLE_DECODE_ERROR ` |  |