> ## Documentation Index
> Fetch the complete documentation index at: https://developer.bitmovin.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Player Configuration

Configuration options for the Bitmovin Player

## PlayerConfig

> Interface

The entry point to the player configuration is the [PlayerConfig](https://developer.bitmovin.com/playback/reference/web-sdk-player-config#playerconfig) interface, which is passed into the
constructor of the player. There are several ways to do this:

1. When the full player is loaded from the CDN via `<source>` tag:

```js
const player = new bitmovin.player.Player(container, config);
```

2. Whe the player is loaded from the CDN via <https://requirejs.org/|RequireJS>:

```js
requirejs(['<cdn_url>'], (bitmovinplayer) => {
  const player = new bitmovinplayer.Player(container, config);
});
```

3. When the player is imported from NPM:

```ts
import { Player } from 'bitmovin-player';
const player = new Player(container, config);
```

Example configuration:

```js
{
  key: 'INSERTPROVIDEDKEYHERE',
  playback: {
    autoplay: false,
    muted: false
  },
  style: {
    width: '90%',
    aspectratio: '16/9',
  },
  events: {
    [PlayerEvent.SourceLoaded]: myFunc,
    [PlayerEvent.Play]: () => {
      // do some awesome stuff
    },
    [PlayerEvent.Error]: myErrorHandlingFunc
  },
  tweaks: {
    startup_threshold?: 5;
  },
  advertising: {
    adBreaks: [{
      tag: {
        url: 'http://your.ad.provider/manifest.xml',
        type: 'vast',
      },
    }],
  }
}
```

Example source:

```js
player.load({
  dash: 'https://path/to/mpd/file.mpd',
  hls: 'https://path/to/hls/playlist/file.m3u8',
  smooth: 'https://path/to/manifest/file/Manifest',
  progressive: [{
    url: 'http://path/to/mp4',
    type: 'video/mp4'
  }, {
    url: 'http://path/to/webm',
    type: 'video/webm'
  }],
  poster: 'images/poster.jpg',
  drm: {
    widevine: {
      LA_URL: 'https://mywidevine.licenseserver.com/'
    },
    playready: {
      LA_URL: 'https://myplayready.licenseserver.com/'
    },
    access: {
      LA_URL: 'https://myaccess.licenseserver.com/',
      authToken: 'INSERT-YOUR-BASE64-ENCODED-AUTH-TOKEN'
    },
    primetime: {
      LA_URL: 'https://myprimetime.licenseserver.com/'
    },
    fairplay: {
      LA_URL: 'https://fairplay.licenseserver.com/',
      certificateURL: 'https://fairplay.licenseserver.com/certificate-url'
    }
  }
});
```

## Properties

### adaptation

• `Optional` **adaptation**: [`AdaptationPlatformConfig`](https://developer.bitmovin.com/playback/reference/web-sdk-adaptation#adaptationplatformconfig)

Configures the adaptation logic.

***

### advertising

• `Optional` **advertising**: [`AdvertisingConfig`](https://developer.bitmovin.com/playback/reference/web-sdk-advertising#advertisingconfig)

Allows you to define which ads you want to display and when you want to display them.
In order to play ads on your website, you need to specify an ad config.

***

### analytics

• `Optional` **analytics**: `false` | [`AnalyticsConfig`](https://developer.bitmovin.com/playback/reference/web-sdk-analytics#analyticsconfig)

Bundled Bitmovin Analytics Configuration used to specify metadata and other related info.
Can also be used to completely disable Analytics by setting this to `false`
in case the Analytics module is loaded, but Analytics is not desired.

***

### buffer

• `Optional` **buffer**: [`BufferConfig`](https://developer.bitmovin.com/playback/reference/web-sdk-buffer#bufferconfig)

Configures various buffer settings.

***

### cast

• `Optional` **cast**: [`CastConfig`](https://developer.bitmovin.com/playback/reference/web-sdk-remote-control#castconfig)

Google Cast configuration.

**Deprecated:** Use [remotecontrol](https://developer.bitmovin.com/playback/reference/web-sdk-player-config#remotecontrol) with [GoogleCastRemoteControlConfig](https://developer.bitmovin.com/playback/reference/web-sdk-remote-control#googlecastremotecontrolconfig) instead.

***

### events

• `Optional` **events**: `EventConfig`

A list of callback functions for events. Events can also be dynamically added and removed through
[on](https://developer.bitmovin.com/playback/reference/web-sdk-player-api#on) and [off](https://developer.bitmovin.com/playback/reference/web-sdk-player-api#off).

Example:

```js
events: {
  [PlayerEvent.SourceLoaded]: data => {
    console.log('version: ' + player.getVersion() + ', SourceLoaded Event data: ', data);
  },
  [PlayerEvent.Play]: data => {
    // do awesome stuff
  },
  [PlayerEvent.Error]: data => {
    console.error('An error occurred:', data);
  }
}
```

***

### hls

• `Optional` **hls**: [`HlsConfig`](https://developer.bitmovin.com/playback/reference/web-sdk-player-config#hlsconfig)

HLS specific configuration options.

**Since:** 8.238.0

***

### key

• **key**: `string`

Mandatory. A personal key can be found in the bitmovin portal and should be specified here.
Do not forget to enter all your domains (subdomains are included) in your account.

***

### licensing

• `Optional` **licensing**: [`LicensingConfig`](https://developer.bitmovin.com/playback/reference/web-sdk-player-config#licensingconfig)

Licensing configuration.

***

### live

• `Optional` **live**: [`LiveConfig`](https://developer.bitmovin.com/playback/reference/web-sdk-player-config#liveconfig)

Provide parameters specific to live streams.

For better flexibility it is also possible to define a [`LiveConfig` at source level](https://developer.bitmovin.com/playback/reference/web-sdk-source-config#live).

***

### location

• `Optional` **location**: [`LocationConfig`](https://developer.bitmovin.com/playback/reference/web-sdk-player-config#locationconfig)

This can be used to specify custom paths to bitmovinplayer-core.min.js,
and bitmovinplayer-core.min.css instead of having all files in the same folder.

***

### logs

• `Optional` **logs**: [`LogsConfig`](https://developer.bitmovin.com/playback/reference/web-sdk-player-config#logsconfig)

Can be use to fine tune logging of the player.

***

### network

• `Optional` **network**: [`NetworkConfig`](https://developer.bitmovin.com/playback/reference/web-sdk-network#networkconfig)

Network configuration.

***

### playback

• `Optional` **playback**: [`PlaybackConfig`](https://developer.bitmovin.com/playback/reference/web-sdk-player-config#playbackconfig)

Playback config settings.

***

### remotecontrol

• `Optional` **remotecontrol**: [`GoogleCastRemoteControlConfig`](https://developer.bitmovin.com/playback/reference/web-sdk-remote-control#googlecastremotecontrolconfig) | [`WebSocketRemoteControlConfig`](https://developer.bitmovin.com/playback/reference/web-sdk-remote-control#websocketremotecontrolconfig)

Remote control configuration (e.g. Chromecast)

**Since:** 7.1

***

### storage

• `Optional` **storage**: [`StorageConfig`](https://developer.bitmovin.com/playback/reference/web-sdk-player-config#storageconfig)

Allows configuration of the player's access to the Web Storage API.

**Since:** v8.91.0

***

### style

• `Optional` **style**: [`StyleConfig`](https://developer.bitmovin.com/playback/reference/web-sdk-player-config#styleconfig)

UX/UI config settings.

***

### tweaks

• `Optional` **tweaks**: [`TweaksConfig`](https://developer.bitmovin.com/playback/reference/web-sdk-player-config#tweaksconfig)

Tweaks. Use these values only if you know what you are doing.

***

### ui

• `Optional` **ui**: `any`

UI configuration that is passed to the Bitmovin Player UI if the UI module is loaded. Can also be used
to disable the UI in case the UI module is loaded but the UI is not desired.

***

## PlaybackConfig

> Interface

Config to determine the initial playback state of the Player.

All options passed in this config, will be considered as the starting state of the player, therefore no events will
be triggered signaling a potential change compared to the player default logic.

Example:

```js
playback : {
  autoplay: false,
  muted: false,
  audioLanguage: ['en', 'es', 'de'],
  subtitleLanguage: 'en',
  preferredTech: [{
    player: 'html5',
    streaming: 'dash'
  }, {
    player: 'native',
    streaming: 'hls'
  }]
}
```

## Properties

### allowDecodingErrorRecovery

• `Optional` **allowDecodingErrorRecovery**: `boolean`

Whether to allow automatic recovery from [PLAYBACK\_VIDEO\_DECODING\_ERROR](https://developer.bitmovin.com/playback/reference/web-sdk-errors#playback_video_decoding_error).

When enabled, the player reloads the current source and resumes playback at the position
where the error occurred.

**Recovery flow:**

1. A [Warning](https://developer.bitmovin.com/playback/reference/web-sdk-events#warning) with code [PLAYBACK\_VIDEO\_DECODING\_ERROR\_RECOVERY](https://developer.bitmovin.com/playback/reference/web-sdk-errors#playback_video_decoding_error_recovery)
   is dispatched to signal that a recovery attempt is starting.
2. The source is reloaded internally. Lifecycle events ([SourceLoaded](https://developer.bitmovin.com/playback/reference/web-sdk-events#sourceloaded),
   [SourceUnloaded](https://developer.bitmovin.com/playback/reference/web-sdk-events#sourceunloaded), [Play](https://developer.bitmovin.com/playback/reference/web-sdk-events#play), [Ready](https://developer.bitmovin.com/playback/reference/web-sdk-events#ready),
   [Playing](https://developer.bitmovin.com/playback/reference/web-sdk-events#playing), [Paused](https://developer.bitmovin.com/playback/reference/web-sdk-events#paused), [Seek](https://developer.bitmovin.com/playback/reference/web-sdk-events#seek),
   [Seeked](https://developer.bitmovin.com/playback/reference/web-sdk-events#seeked), [TimeShift](https://developer.bitmovin.com/playback/reference/web-sdk-events#timeshift), [TimeShifted](https://developer.bitmovin.com/playback/reference/web-sdk-events#timeshifted))
   are suppressed during this process to avoid spurious state changes in the application.
3. Player state is restored automatically after the reload: playback position (seek for VoD;
   time shift for live streams), audio track, audio quality, video quality, playback speed,
   and the active subtitle track.

**Retry behaviour:** Recovery is attempted at most once per playback position. If a
[PLAYBACK\_VIDEO\_DECODING\_ERROR](https://developer.bitmovin.com/playback/reference/web-sdk-errors#playback_video_decoding_error) occurs again at the same position (within
a 0.1-second tolerance), recovery is skipped and the error is surfaced immediately. Once
playback advances to a sufficiently different position, a new recovery attempt is allowed.

**Failure:** If the reload itself fails, the original
[PLAYBACK\_VIDEO\_DECODING\_ERROR](https://developer.bitmovin.com/playback/reference/web-sdk-errors#playback_video_decoding_error) is dispatched as a [Error](https://developer.bitmovin.com/playback/reference/web-sdk-events#error).

When set to `false`, [PLAYBACK\_VIDEO\_DECODING\_ERROR](https://developer.bitmovin.com/playback/reference/web-sdk-errors#playback_video_decoding_error) is always fired
immediately without any recovery attempt.

Default is `true`.

**Since:** 8.251.0

***

### audioCodecPriority

• `Optional` **audioCodecPriority**: `string`\[]

Specify the priority of audi codecs. If more than one audio codec is available this order will be respected
while
finding a codec which is supported by the current browser.
If there is a codec which is not in this priority list, it will be tried only if none of this list are available
/ supported Default is `['ec-4', 'ac-4', 'ec-3', 'mp4a.a6', 'ac-3', 'mp4a.a5', 'mp4a.40']`

**Since:** 7.6

***

### audioLanguage

• `Optional` **audioLanguage**: `string` | `string`\[]

Defines one or more audio languages which should be used
in the specified order on start up.

***

### autoplay

• `Optional` **autoplay**: `boolean`

Whether the player starts playing after loading a source or not (`false`, default).
Note that unmuted autoplay is blocked on several browsers, check for [Warning](https://developer.bitmovin.com/playback/reference/web-sdk-events#warning) with code
[PLAYBACK\_COULD\_NOT\_BE\_STARTED](https://developer.bitmovin.com/playback/reference/web-sdk-errors#playback_could_not_be_started) for detecting the blocking.

***

### isForcedSubtitle

• `Optional` **isForcedSubtitle**: (`subtitle`: [`SubtitleTrack`](https://developer.bitmovin.com/playback/reference/web-sdk-subtitles#subtitletrack)) => `boolean`

Determines if the subtitle should be selected by the player per default and
kept in sync with the selected audio language.
The subtitle will not appear in [list](https://developer.bitmovin.com/playback/reference/web-sdk-subtitles#list) and can't be deactivated or activated through
the API.

Per default subtitle tracks with `forced=true` will be selected.
In case of DASH these are subtitles with the role `forced_subtitle` or `forced-subtitle` and in case of HLS
subtitles with the attribute `FORCED=YES`.

#### Type declaration

▸ (`subtitle`): `boolean`

##### Parameters

| Name       | Type                                                   |
| :--------- | :----------------------------------------------------- |
| `subtitle` | [`SubtitleTrack`](https://developer.bitmovin.com/playback/reference/web-sdk-subtitles#subtitletrack) |

##### Returns

`boolean`

***

### muted

• `Optional` **muted**: `boolean`

Whether the sound is muted on startup or not (`false`, default).

***

### playsInline

• `Optional` **playsInline**: `boolean`

Whether to add the playsinline attribute to the video element or not. This stops videos immediately
going fullscreen after starting playback on iOS for example. Default is true.

***

### preferredTech

• `Optional` **preferredTech**: [`PreferredTechnology`](https://developer.bitmovin.com/playback/reference/web-sdk-player-config#preferredtechnology)\[]

An array of objects to specify the player and streaming technology order to use. If the first is
supported, this technologies are used. If not, the second is tried etc. If none of the specified combinations
are supported, then a [SOURCE\_NO\_SUPPORTED\_TECHNOLOGY](https://developer.bitmovin.com/playback/reference/web-sdk-errors#source_no_supported_technology) will be thrown.

Player technologies:

* `html5` refers to the MediaSource Extension (MSE) based JavaScript player
* `native` refers to the browser’s native capabilities are being used, e.g. playing back HLS in Safari on iOS

Currently supported combinations:

```js
{ player: 'html5', streaming: 'dash'}
{ player: 'html5', streaming: 'hls'}
{ player: 'html5', streaming: 'smooth'}
{ player: 'native', streaming: 'hls'}
{ player: 'native', streaming: 'progressive'}
```

Example:

```js
preferredTech : [{
  player: 'html5',
  streaming: 'dash'
}, {
  player: 'native',
  streaming: 'hls'
}]
```

***

### seeking

• `Optional` **seeking**: `boolean`

Whether to allow seeking or not. Default is true.

***

### subtitleLanguage

• `Optional` **subtitleLanguage**: `string` | `string`\[]

Defines one or more subtitle languages which should be used
in the specified order on start up.

***

### timeShift

• `Optional` **timeShift**: `boolean`

Enables time shift / DVR for live streams. Default is `true` (enabled). If time shift is disabled
(set to `false`), the timeline (scrub bar) will not be shown any more.

***

### videoCodecPriority

• `Optional` **videoCodecPriority**: `string`\[]

Specify the priority of video codecs for this source. If more than one video codec is available this order will
be respected while finding a codec which is supported by the current browser. If there is a codec which is not
in this priority list, it will be tried only if none of this list are available / supported.
Default is `['dvhe', 'dvh1', 'vvc', 'vvi', 'av01', 'av1', 'hevc', 'hev', 'hvc', 'vp9', 'avc']`

**Since:** 7.6

***

### volume

• `Optional` **volume**: `number`

Defines the volume level of the player when started for the first time, between 0 and 100. Default value is 100.

***

## StyleConfig

> Interface

Example:

```js
style : {
  width: '100%',
  aspectratio: '16:9',
}
```

## Properties

### aspectratio

• `Optional` **aspectratio**: `string` | `number`

The aspect ratio of the player, e.g. 16:9, 16:10, 4:3. Not more than two options of width, height,
and aspect ratio should be given. Defaults to 16:9.

***

### container

• `Optional` **container**: () => `HTMLElement`

A callback to specify the element that the player will add `style` elements to.
Defaults to the `head` element.

#### Type declaration

▸ (): `HTMLElement`

##### Returns

`HTMLElement`

***

### height

• `Optional` **height**: `string`

The height of the player. Can have any value including the unit (e.g. px, %, em, vh) usable in CSS,
e.g. 500px or 90%. Not more than two options of width, height, and aspect ratio should be given.
If no unit is give, 'px' is assumed.
If no height is given, the height is controlled via CSS aspect-ratio classes (default)

***

### uiManagerFactory

• `Optional` **uiManagerFactory**: (`playerAPI`: [`PlayerAPI`](https://developer.bitmovin.com/playback/reference/web-sdk-player-api#playerapi), `config?`: `any`) => `any`

A callback to provide a custom initialization of a `UIManager` for the Bitmovin Player Web UI.

Example:

```js
uiManagerFactory = (playerAPI, config) => {
  // create and return your custom UIManager here
  return new bitmovin.playerui.UIFactory.buildUI(playerAPI, config);
};
```

Per default `playerui.UIFactory.buildUI` will be called to create the UI.

#### Type declaration

▸ (`playerAPI`, `config?`): `any`

##### Parameters

| Name        | Type                                            |
| :---------- | :---------------------------------------------- |
| `playerAPI` | [`PlayerAPI`](https://developer.bitmovin.com/playback/reference/web-sdk-player-api#playerapi) |
| `config?`   | `any`                                           |

##### Returns

`any`

***

### width

• `Optional` **width**: `string`

The width of the player. Can have any value including the unit (e.g. px, %, em, vw) usable in CSS,
e.g. 500px or 90%. Not more than two options of width, height, and aspect ratio should be given.
If no unit is given, 'px' is assumed.
If no width is given, the width is controlled via CSS aspect-ratio classes (default)

***

## TweaksConfig

> Interface

The tweaks configuration is used as an incubator for experimental features and also contains features
implemented for specific customers that might not make it into the officially supported feature set.

Tweaks are not officially supported and are not guaranteed to be stable, i.e. their naming, functionality
and API can change at any time within the tweaks or when being promoted to an official feature and moved into
its final configuration namespace.
Tweaks are often proof-of-concepts that are quickly implemented for urgent needs of customers. They often do
not go through an architectural review and are therefore not signed and approved by the architecture team.

Example:

```js
tweaks : {
  max_buffer_level     : 20,
  query_parameters : {
    key1: 'value1',
    key2: 'value2',
    mycustomname: 'another-value'
  }
}
```

## Indexable

▪ \[key: `string`]: `any`

Tweaks are meant for experimental purpose and might often change so we allow the interface
to contain any option to avoid possible type checking failures.

## Properties

### adaptation\_set\_switching\_without\_supplemental\_property

• `Optional` **adaptation\_set\_switching\_without\_supplemental\_property**: `boolean`

Groups adaptation sets and switches between them based on their `group` attribute instead of the recommended
`SupplementalProperty` `urn:mpeg:dash:adaptation-set-switching:2016`. Default is false.

**Since:** 8.1

***

### audio\_track\_switch\_buffer\_grace\_period

• `Optional` **audio\_track\_switch\_buffer\_grace\_period**: `number`

The amount of audio buffer in seconds to preserve ahead of the playhead when switching audio tracks.
Only takes effect when [disable\_audio\_buffer\_clearing\_on\_track\_switch](https://developer.bitmovin.com/playback/reference/web-sdk-player-config#disable_audio_buffer_clearing_on_track_switch) is enabled.

Default is `2`.

**Since:** v8.251.0

***

### check\_all\_drm\_licenses\_for\_kid

• `Optional` **check\_all\_drm\_licenses\_for\_kid**: `boolean`

If set, the player checks all available DRM licenses when the key status for a KID updates.

Instead of surfacing an error once the KID becomes unusable on a license, the key status for the KID is checked
across all licenses. Only if the KID is not usable on any of the licenses an error is thrown.

Default is `true`.

**Since:** v8.140.2, v8.144.0

***

### chunked\_cmaf\_streaming

• `Optional` **chunked\_cmaf\_streaming**: `boolean`

When set, the player will use the `fetch` API (instead of `XMLHttpRequest`) to download data segments and forward
any received and complete CMAF chunks to the decoder straight away while the respective request is still ongoing.

Enabling this tweak in combination with chunked CMAF content can yield faster video startup time and seeking.
Furthermore, it can be used to achieve low-latency live streaming as it enables usage of HTTP chunked transfer
encoding (CTE).

***

### dash\_clear\_buffers\_on\_period\_switches

• `Optional` **dash\_clear\_buffers\_on\_period\_switches**: `boolean`

When set, the SourceBuffers will be cleared when transitioning from one DASH period to another, even when content
has compatible characteristics. Enabling this tweak can impact playback performance as transitions may become more
noticeable to the user, however it can also help overcome playback issues that may arise when working with DASH
streams having inconsistencies in the timing model.

Default is `false`. Buffers will only be cleared when strictly necessary, such as when transitioning from
encrypted to unencrypted content or vice versa.
However, if a [shouldRecreateSourceBuffersOnPeriodSwitch](https://developer.bitmovin.com/playback/reference/web-sdk-source-config#shouldrecreatesourcebuffersonperiodswitch) callback is defined as part of
the `SourceConfig`, the player will autonomously consider this default to be `true` instead, so that the intended
behavior of the callback is still achieved, i.e. execute on every period switch.
If your [shouldRecreateSourceBuffersOnPeriodSwitch](https://developer.bitmovin.com/playback/reference/web-sdk-source-config#shouldrecreatesourcebuffersonperiodswitch) implementation is rather intended
for disabling source buffer recreation for performance reasons, then it's recommended to set this tweak to `false`
explicitly, so that any unnecessary buffer clearings can be avoided as well. Note that in this case the callback
will only run for relevant period switches that require buffer clearing in any case (e.g. when transitioning from
encrypted to unencrypted content and vice versa).

**Since:** v8.215.0

***

### disable\_audio\_buffer\_clearing\_on\_track\_switch

• `Optional` **disable\_audio\_buffer\_clearing\_on\_track\_switch**: `boolean`

When enabled, audio track switches preserve existing audio buffer ahead of the playhead instead of clearing the
whole audio buffer, making the switch smoother by avoiding a playback interruption. The amount of buffer to
preserve can be configured via [audio\_track\_switch\_buffer\_grace\_period](https://developer.bitmovin.com/playback/reference/web-sdk-player-config#audio_track_switch_buffer_grace_period).

This only takes effect for audio track switches where the codec and DRM protection stay the same across tracks.
Switches that require a codec or DRM change will still clear the entire audio buffer regardless of this setting.

On some platforms the audible switch may be delayed and the original audio track may be briefly audible after
triggering the switch. This happens due to platform-specific handling of flushing of removed/overwritten audio
buffer and needs to be considered as a known issue when enabling this tweak.

Default is `false`.

**Since:** v8.251.0

***

### disable\_auto\_recovery\_on\_dvr\_window\_exceeded

• `Optional` **disable\_auto\_recovery\_on\_dvr\_window\_exceeded**: `boolean`

If set, the player will not handle DVR window exceeded event by its default behavior of seeking to the live edge.
This is useful in case a custom behavior is desired, such as seeking to a specific position of the DVR window.
Default is `false`, meaning that the player will seek to the live edge when the DVR window is exceeded.

**Since:** v8.221.0

***

### disable\_parallel\_segment\_loading

• `Optional` **disable\_parallel\_segment\_loading**: `boolean`

By default, the player will generally try to download audio and video segments in parallel as long as their buffer
levels are equal, while favoring the media with the lower buffer level when they differ. Also, the player will
download data and init segments concurrently.
Setting this tweak to true will instead disable parallel segment loading. In this case, the player will favor the
downloading of video segments over audio ones when their buffer levels are the same. Moreover, init and data
segments will always be downloaded sequencially if the tweak is enabled.

Default is `false`.

**Since:** v8.198.0

***

### disable\_retry\_for\_response\_status

• `Optional` **disable\_retry\_for\_response\_status**: [`ResponseStatusMap`](https://developer.bitmovin.com/playback/reference/web-sdk-network#responsestatusmap)

If a specific \[\[HttpRequestType]] has one or more HTTP status codes associated with it via this configuration
value, requests of that type will not be retried if they return one of the associated status codes.

**Since:** 8.4

Example:

```js
disable_retry_for_response_status: {
  [HttpRequestType.MANIFEST_DASH]: [ 401 ]
}
```

***

### dword\_base\_media\_decode\_timestamps

• `Optional` **dword\_base\_media\_decode\_timestamps**: `boolean`

Allows to use the Tizen module on non-Tizen platforms. This tweak requires the Tizen module to be effective.

***

### enable\_muted\_background\_playback

• `Optional` **enable\_muted\_background\_playback**: `boolean`

When calling `player.mute()` the player will normally only set the `muted` flag on the media element. Chromium
based browsers can pause muted media elements when a different tab is selected in order to safe battery.

When this flag is set to true, the player will ensure the `muted` flag is not set on the media element and
only the volume is set to 0. This prevents the browser from pausing the media element, ensuring uninterrupted
playback but may result in higher battery consumption. The player will still report the same values for
`isMuted()` and `getVolume()` as if the tweak was not set (muted = true, volume > 0).

Default is `false`.

**Since:** v8.207.0

***

### enable\_performance\_logs

• `Optional` **enable\_performance\_logs**: `boolean`

Enables additional debug logs that surface time measurements for certain operations performed in the player.
Such performance logs are prefixed with `[Performance]`.

Default is `false`.

**Since:** v8.41.0

***

### enable\_seek\_for\_live

• `Optional` **enable\_seek\_for\_live**: `boolean`

Specifies whether [seek](https://developer.bitmovin.com/playback/reference/web-sdk-player-api#seek) is allowed for live streams. By default this is not allowed.

***

### enable\_sgai\_handling

• `Optional` **enable\_sgai\_handling**: `boolean`

Enables handling of HLS Interstitials (and SGAI in general in the future).
Requires `AdvertisingCore` module to be present.

Default is `false`.

**Since:** v8.238.0

***

### fairplay\_ignore\_duplicate\_init\_data\_key\_errors

• `Optional` **fairplay\_ignore\_duplicate\_init\_data\_key\_errors**: `boolean`

If set, `keyerror` events will be ignored for Fairplay when more than one `needkey` event was triggered with
identical `initData`.

**Since:** 8.18.0

***

### force\_base\_media\_decode\_time\_rewrite

• `Optional` **force\_base\_media\_decode\_time\_rewrite**: `boolean`

If set, every BaseMediaDecodeTime in data segments will be rewritten, regardless if they exceed 32 bits or not.
The tizen or webOS module has to be present and the player should run on Tizen or webOS TV.

Using this tweak might cause some unwanted problems when content has short discontinuities (e.g. SSAI streams).
Enabling the tweak is only recommended when the playback experience is improved on testing.

***

### force\_software\_decryption

• `Optional` **force\_software\_decryption**: `boolean`

If set, software decryption is used over the browser's WebCrypto API for anything that the player manually
decrypts. E.g. for decrypting segments of DASH ClearKey-protected and HLS AES-128-encrypted streams.

Note: Proper DRM-protection such as Widevine and PlayReady is not affected by this tweak as decryption of such must
be handled by the browser's CDM.

***

### hls\_audio\_only\_threshold\_bitrate

• `Optional` **hls\_audio\_only\_threshold\_bitrate**: `number`

All HLS variants with a bitrate lower than the given bitrate in bits per second (bps) are considered audio-only
variants and removed if there is at least one with a higher bitrate.

***

### hls\_backup\_stream\_penalty\_duration

• `Optional` **hls\_backup\_stream\_penalty\_duration**: `number`

Defines the duration in seconds after which the backup stream penalization is considered to be expired.
The penalty is applied when a playlist, or one of its segments, has failed to load, and the player has
triggerd failover to a backup stream.

Default is 30 seconds.

***

### hls\_clear\_buffers\_on\_discontinuity\_switches

• `Optional` **hls\_clear\_buffers\_on\_discontinuity\_switches**: `boolean`

When set, the SourceBuffers will be cleared when transitioning from one discontinuity to another, even when content
has compatible characteristics. Enabling this tweak can impact playback performance as transitions may become more
noticeable to the user, however it can also help overcome other playback issues.

Default is `false`. Buffers will only be cleared when strictly necessary, such as when transitioning from
encrypted to unencrypted content or vice versa.

**Since:** v8.93.0

***

### hls\_parse\_manifest\_in\_worker

• `Optional` **hls\_parse\_manifest\_in\_worker**: `boolean`

When set, the player will parse the manifest in a worker thread. This can improve the performance of the player
when the manifest is large.

Default is `false`.

***

### hls\_parse\_native\_metadata

• `Optional` **hls\_parse\_native\_metadata**: `boolean`

Whether the native player used for HLS on Safari should subscribe to `cuechange` events from the metadata TextTrack
and relay ID3 events as [Metadata](https://developer.bitmovin.com/playback/reference/web-sdk-events#metadata) events.

Note: This tweak has no effect if the MSE-based player (i.e. [Html5](https://developer.bitmovin.com/playback/reference/web-sdk-player-api#html5)) is used.

Default is `true`.

**Since:** v8.158.0

***

### hls\_sync\_segment\_playback\_time\_via\_media\_sequence

• `Optional` **hls\_sync\_segment\_playback\_time\_via\_media\_sequence**: `boolean`

When set, the playback times of the segments between HLS playlist are synced using
media sequence number during quality switch.

Default is `false`.

***

### ignore\_mp4\_edts\_box

• `Optional` **ignore\_mp4\_edts\_box**: `boolean`

If enabled, Edit (`edts`) boxes in MP4 segments which would introduce a segment start time offset are filtered from
segments before forwarding them to the decoder. This is required as browsers are handling such boxes differently.
This flag ensures consistent cross-browser behavior in this matter and is enabled by default.

**Since:** 8.3

***

### impressionServer

• `Optional` **impressionServer**: `string`

Sets the impression server to the given URL if allowlisted.
Default is the bitmovin impression server URL.

***

### infinite\_retries\_for\_live

• `Optional` **infinite\_retries\_for\_live**: `boolean`

If a live stream becomes unreachable during playback, i.e. requests are failing for segments and/or HLS playlists,
the player will not throw an error after all qualities have been tried if the tweak is set. Instead, it will keep
trying and, in case the stream comes back online, the player will resume playback.
If the tweak is disabled, the player will throw a network error after exhausting all qualities.

Default is `true`.

**Since:** v8.175.0

***

### licenseServer

• `Optional` **licenseServer**: `string`

Sets the license server to the given URL if allowlisted.
Default is the bitmovin license server URL.

***

### log\_level

• `Optional` **log\_level**: [`LogLevel`](https://developer.bitmovin.com/playback/reference/web-sdk-player-config#loglevel)

Sets the LOG\_LEVEL of the player by calling [setLogLevel](https://developer.bitmovin.com/playback/reference/web-sdk-player-api#setloglevel).

***

### max\_buffer\_level

• `Optional` **max\_buffer\_level**: `number`

Changes the maximum buffer level in seconds. Default is `40` seconds.
For live streams the lowest value of playlist duration for HLS, `timeShiftBufferDepth` for DASH and
the `max_buffer_level` is used as a maximum value for the buffer.

**Deprecated:** Use [forwardduration](https://developer.bitmovin.com/playback/reference/web-sdk-buffer#forwardduration) instead.

***

### max\_cdn\_retries

• `Optional` **max\_cdn\_retries**: `number`

The number of retries per CDN if a download error occurred in VoD streams
By default the player will retry 2 times.

***

### max\_mpd\_retries

• `Optional` **max\_mpd\_retries**: `number`

Amount of times to retry a failed MPD download before throwing an error for failed download.
By default the player will retry 2 times.

***

### max\_retries

• `Optional` **max\_retries**: `number`

Maximum number of retries when network request fails for the provided manifest.
Applies for both master and variant playlist in case of Hls.

Default value is 2.

***

### max\_safe\_mse\_duration

• `Optional` **max\_safe\_mse\_duration**: `number`

For live streams, `Infinity` is typically set as `duration` on the `MediaSource` object. This can cause problems
on some legacy platforms. On those, finite values like `Number.MAX_SAFE_INTEGER` could resolve playback start
issues of live streams.

Default is `Infinity`.

**Since:** v8.192.0

***

### max\_startup\_buffer

• `Optional` **max\_startup\_buffer**: `number`

The maximum amount of buffer (in seconds) to be built upon initial play.

The player will stop loading segments once this buffer level is reached and will not load any further content
until playback starts. This helps avoid excessive content loading at startup, which can lead to longer startup
times.

* A finite value sets a specific buffer limit. This overrides the platform-recommended default.
  A debug message will be logged if the value is lower than the recommended default.
* A value of `Infinity` disables this behavior.
  It effectively limits the loaded buffer only by the configured forward buffer duration.

If not set, the player applies defaults optimized for platform stability:

* **LG webOS 2016–2019 and Legacy Microsoft Edge:** 6.0 seconds
* **LG webOS 2020 and Samsung Tizen 2017–2019:** 4.0 seconds
* **Other LG webOS and Samsung Tizen TVs:** 2.5 seconds
* **All other platforms:** No limit

Note: webOS and Tizen defaults are applied only when the corresponding platform module is included, otherwise no
limit is applied.

**Since:** v8.214.0

***

### min\_size\_for\_gap\_skipping

• `Optional` **min\_size\_for\_gap\_skipping**: `number`

Gaps in content that are smaller than this value will not be skipped. This tweak should be used if gap skipping
is unnecessary: some browsers are able to play through small gaps in content without getting stuck.

Default value is 0, which means that all encountered gaps will be skipped.

***

### minimal\_backward\_buffer\_clearing\_interval

• `Optional` **minimal\_backward\_buffer\_clearing\_interval**: `number`

Defines the minimum interval in seconds at which the backward buffer will be cleared.

Default is `0.5`

***

### mpd\_retry\_delay

• `Optional` **mpd\_retry\_delay**: `number`

The time in seconds to wait before trying to download the MPD again after a download error occurred.
By default the player will retry in half a second

***

### mpd\_update\_period\_tolerance

• `Optional` **mpd\_update\_period\_tolerance**: `number`

The time in seconds that the MPD age for live streams may exceed the minimumUpdatePeriod, before it should be
considered outdated. By default the player will use 5 seconds.

***

### native\_hls\_download\_error\_handling

• `Optional` **native\_hls\_download\_error\_handling**: `boolean`

If enabled the native player used for HLS in Safari would fetch and parse the HLS playlist and trigger
an [Error](https://developer.bitmovin.com/playback/reference/web-sdk-events#error) event if the download of a segment fails and the playback stalls. Default is `false`.

***

### native\_hls\_parsing

• `Optional` **native\_hls\_parsing**: `boolean`

If enabled the native player used for HLS in Safari would fetch and parse the HLS playlist and trigger
[SegmentPlayback](https://developer.bitmovin.com/playback/reference/web-sdk-events#segmentplayback) events carrying segment-specific metadata like `#EXT-X-PROGRAM-DATE-TIME`
if present in the manifest. Default is `false`.

***

### no\_quota\_exceeded\_adjustment

• `Optional` **no\_quota\_exceeded\_adjustment**: `boolean`

Specifies whether the Player should not adjust the target buffer levels after a `QuotaExceededError`.

**Since:** 8.25.0

***

### parse\_cea\_708\_caption

• `Optional` **parse\_cea\_708\_caption**: `boolean`

When set, CEA-708 captions are parsed when present in the source stream, instead of CEA-608.
By default CEA-608 captions are parsed.

***

### parse\_emsg\_boxes

• `Optional` **parse\_emsg\_boxes**: `boolean`

Whether the player should parse and process `emsg` boxes from MP4 segments.

Note: This tweak is limited to the MSE-based player (i.e. if [getPlayerType](https://developer.bitmovin.com/playback/reference/web-sdk-player-api#getplayertype) returns
[Html5](https://developer.bitmovin.com/playback/reference/web-sdk-player-api#html5)) and has no effect for the native player ([Native](https://developer.bitmovin.com/playback/reference/web-sdk-player-api#native)).

Default is `true.`

**Since:** v8.98.0

***

### playstation\_5

• `Optional` **playstation\_5**: [`PlayStation5Tweaks`](https://developer.bitmovin.com/playback/reference/web-sdk-player-config#playstation5tweaks)

PlayStation 5 Platform tweaks

***

### postpone\_manifest\_updates\_until\_playback\_start

• `Optional` **postpone\_manifest\_updates\_until\_playback\_start**: `boolean`

In case of live streams that require manifest updates, this tweak causes the player to delay the scheduling of
such updates until playback has started, which can help improve startup time on slower devices. Does not take
an effect on HLS low latency streams.

Default is `true`.

**Since:** v8.209.0

***

### prefer\_managed\_media\_source

• `Optional` **prefer\_managed\_media\_source**: `boolean`

Use `ManagedMediaSource` over regular `MediaSource` when both are available.

Default is `true`.

***

### prevent\_video\_element\_preloading

• `Optional` **prevent\_video\_element\_preloading**: `boolean`

This flag prevents the native video element from preloading any data (sets `preload='none'`).
When enabled, in case of native HLS playback on Safari, this will cause e.g. `AudioTracks`
not being added  or duration not being available before playback starts.

Note: To limit preloading to metadata only (sets `preload='metadata'`), use [preload](https://developer.bitmovin.com/playback/reference/web-sdk-adaptation#preload)
set to `false` instead.

***

### proactive\_gap\_skip\_distance\_seconds

• `Optional` **proactive\_gap\_skip\_distance\_seconds**: `number`

If set to a value greater than 0, gaps in the content will be skipped proactively. The skip distance defines how
many seconds prior to the gap, the gap will be skipped.

Default value is 0, which disables proactive gap skipping.

**Since:** v8.53.0

***

### query\_parameters

• `Optional` **query\_parameters**: [`QueryParameters`](https://developer.bitmovin.com/playback/reference/web-sdk-network#queryparameters)

Query parameters are added as GET parameters to all request URLs (e.g. manifest, media segments,
subtitle files, …). Query\_parameters should be an object with key value pairs, where the keys are
used as parameter name and the values as parameter values.

Example:

```js
query_parameters : {
  key1: 'value1',
  key2: 'value2',
  mycustomname: 'another-value'
}
```

The example above would be translated into `MY_REQUEST_URL?key1=value1&key2=value2&mycustomname=another-value`.

***

### restart\_threshold

• `Optional` **restart\_threshold**: `number`

Amount of seconds the player buffers before playback starts again after a stall. Default is `0.9` seconds.
This value is restricted to the maximum value of the buffer minus `0.5` seconds.

***

### resume\_live\_content\_at\_previous\_position\_after\_ad\_break

• `Optional` **resume\_live\_content\_at\_previous\_position\_after\_ad\_break**: `boolean`

Specifies whether live content should resume playback from the same position it was prior to the ad break.
Default is `false`: the live content will be replaced for the duration of the ad break, and playback will resume
with the same distance from live edge as before the ad break.

Note: this tweak is ignored if [replaceContentDuration](https://developer.bitmovin.com/playback/reference/web-sdk-advertising#replacecontentduration) is set. In such case, the live
content is rather replaced for the duration defined via this config as opposed to using the ad duration.

**Since:** 8.27.0

***

### segment\_encryption\_transition\_handling

• `Optional` **segment\_encryption\_transition\_handling**: `boolean`

Makes sure that player initialize period switch and recreate source buffers in case that we are switching
from unenctyped to encrypted segments. This fixes the issues with pixelated picture on playready protected
HLS stream with unecrypted SSAI in MS Edge.

**Deprecated:** As of 8.33.0 new buffer handling covers this case by default so it doesn't have any effect.

**Since:** 8.25.1

***

### serviceworker\_scope

• `Optional` **serviceworker\_scope**: `string`

Defines the [scope]() of the `ServiceWorker` that is created in the `bitmovin-serviceworker-client.js` module.

**Since:** 8.13.0

***

### sgai\_trigger\_delay\_compensation

• `Optional` **sgai\_trigger\_delay\_compensation**: `number`

Compensation value in seconds to account for the trigger delay caused by the `TimeChanged` event interval.
Since `TimeChanged` does not fire continuously but at intervals that can vary per platform, an ad scheduled
at an exact boundary may be triggered late by up to one interval. This value is added to the current time
when checking for due SGAI ads, causing the transition to fire slightly early and effectively compensating
for the interval delay.

Default is `0`.

**Since:** v8.253.0

***

### startup\_threshold

• `Optional` **startup\_threshold**: `number`

Amount of seconds the player buffers before playback starts. Default is `0.9` seconds.
This value is restricted to the maximum value of the buffer minus `0.5` seconds.

***

### stop\_download\_on\_pause

• `Optional` **stop\_download\_on\_pause**: `boolean`

Enabling this flag prevents the player from downloading any further resource (playlist, segments, ...), when the
player is paused. Already issued requests will be finished. Default is `false`.

***

### tizen\_max\_safe\_bmdt

• `Optional` **tizen\_max\_safe\_bmdt**: `number`

Maximum Base Media Decode Time value that is considered safe on the Tizen platform. Any exceeding value will be
rewritten to be smaller. This tweak requires the Tizen module.

Default value is 2\*\*32 - 1 (aka 32 bits) on Tizen 2016-2018, and `Infinity` on Tizen 2019+.

***

### tizen\_max\_safe\_pto

• `Optional` **tizen\_max\_safe\_pto**: `number`

Maximum Presentation Time Offset value that is considered safe on the Tizen platform. Any exceeding value will be
rewritten to be smaller. This tweak requires the Tizen module.

Default value is 2\*\*32 - 1 (aka 32 bits) on Tizen 2016-2018, and `Infinity` on Tizen 2019+.

***

### webos\_max\_safe\_bmdt

• `Optional` **webos\_max\_safe\_bmdt**: `number`

Maximum Base Media Decode Time value that is considered safe on the webOS platform. Any exceeding value will be
rewritten to be smaller. This tweak requires the webOS module.

Default value is 2\*\*38 - 1 (aka 38 bits) on webOS 2016-2019, and `Infinity` on webOS 2020+.

***

### webos\_max\_safe\_pto

• `Optional` **webos\_max\_safe\_pto**: `number`

Maximum Presentation Time Offset value that is considered safe on the webOS platform. Any exceeding value will be
rewritten to be smaller. This tweak requires the webOS module.

Default value is 2\*\*22 - 1 (aka 22 bits) on webOS 2016-2019, and `Infinity` on webOS 2020+.

***

### wish\_abr\_params

• `Optional` **wish\_abr\_params**: `WishAbrConfig`

Configuration options for WISH ABR logic.
You can enable the logic by setting [logic](https://developer.bitmovin.com/playback/reference/web-sdk-adaptation#logic) to [WISH](https://developer.bitmovin.com/playback/reference/web-sdk-adaptation#wish).

***

## LogsConfig

> Interface

## Properties

### bitmovin

• `Optional` **bitmovin**: `boolean`

Enable (`true`, default) or disable the Bitmovin credits in the browser's console.

***

### level

• `Optional` **level**: [`LogLevel`](https://developer.bitmovin.com/playback/reference/web-sdk-player-config#loglevel)

Sets the log level for debug output, warnings and errors sent to the browser console.

Please note that especially DEBUG but also LOG level should not be used for production environments as
this can decrease performance, especially for long-term playback, due to the amount of log messages.

Available values are:

* `bitmovin.player.LogLevel.DEBUG`
* `bitmovin.player.LogLevel.LOG`
* `bitmovin.player.LogLevel.WARN` (default)
* `bitmovin.player.LogLevel.ERROR`
* `bitmovin.player.LogLevel.OFF`

***

### onLog

• `Optional` **onLog**: `LogCallback`

This callback will be called for every message that would be logged to the console regardless of the configured log
level.

***

## LocationConfig

> Interface

Example:

```js
location : {
  vr: 'MY_VR_FOLDER/my_bitmovinplayer-vr.js',
  ui: 'MY_JS_FOLDER/my_bitmovinplayer-ui.js',
  ui_css: 'MY_CSS_FOLDER/my_bitmovinplayer-ui.css',
  cast: 'https://www.gstatic.com/cv/js/sender/v1/cast_sender.js?loadCastFramework=1',
  google_ima: 'https://imasdk.googleapis.com/js/sdkloader/ima3.js'
}
```

## Properties

### cast

• `Optional` **cast**: `string`

The URL of the Google Cast Chrome Sender API library.

Default URL: <https://www.gstatic.com/cv/js/sender/v1/cast_sender.js?loadCastFramework=1>

***

### google\_ima

• `Optional` **google\_ima**: `string`

The URL of the Google IMA Framework.

Default URL: <https://imasdk.googleapis.com/js/sdkloader/ima3.js>

**Deprecated:** Use [ImaAdvertisingConfig.sdkUrl](https://developer.bitmovin.com/playback/reference/web-sdk-advertising-ima#sdkurl)  instead.

***

### serviceworker

• `Optional` **serviceworker**: `string`

Specifies the path, relative or absolute, to the service worker JS file.

If no URL is provided but the `bitmovin-serviceworker.js` module is added, the setup will fail
with [SETUP\_SERVICE\_WORKER\_LOCATION\_MISSING](https://developer.bitmovin.com/playback/reference/web-sdk-errors#setup_service_worker_location_missing)

Preconditions for the `ServiceWorker` to work:

* This property has to be set to the URL of a `ServiceWorker` implementation
* This file has to be placed on the same level as the serving HTML page
* The content source used with the player has to enable CORS

Supported events when ServiceWorker is enabled:

* [MetadataParsed](https://developer.bitmovin.com/playback/reference/web-sdk-events#metadataparsed) and [Metadata](https://developer.bitmovin.com/playback/reference/web-sdk-events#metadata) for the metadata present in the HLS playlist:
  * [DATERANGE](https://developer.bitmovin.com/playback/reference/web-sdk-player-api#daterange)
  * [CUETAG](https://developer.bitmovin.com/playback/reference/web-sdk-player-api#cuetag)
  * [CUSTOM](https://developer.bitmovin.com/playback/reference/web-sdk-player-api#custom)
  * [SCTE](https://developer.bitmovin.com/playback/reference/web-sdk-player-api#scte)
* [SegmentPlayback](https://developer.bitmovin.com/playback/reference/web-sdk-events#segmentplayback)
* [VideoDownloadQualityChanged](https://developer.bitmovin.com/playback/reference/web-sdk-events#videodownloadqualitychanged)

Supported API with ServiceWorker:

* [getPlaybackVideoData](https://developer.bitmovin.com/playback/reference/web-sdk-player-api#getplaybackvideodata)
* [getDownloadedVideoData](https://developer.bitmovin.com/playback/reference/web-sdk-player-api#getdownloadedvideodata)

Note: When using multiple player instances on the same page, every instance should use the same
ServiceWorker URL for the same scope. Avoid dynamic or unique query parameters because they can
trigger repeated ServiceWorker updates and setup failures such as
[SETUP\_SERVICE\_WORKER\_INITIALIZATION\_FAILED](https://developer.bitmovin.com/playback/reference/web-sdk-errors#setup_service_worker_initialization_failed).

***

### ui

• `Optional` **ui**: `string`

Specifies the path, relative or absolute, to the [Bitmovin Player UI](https://github.com/bitmovin/bitmovin-player-ui/)/skin JavaScript file.

Default name: `bitmovinplayer-ui.js`

***

### ui\_css

• `Optional` **ui\_css**: `string`

Specifies the path, relative or absolute, to the style sheet of the [Bitmovin Player UI](https://github.com/bitmovin/bitmovin-player-ui/)/skin.

Default name: `bitmovinplayer-ui.css`

***

## LicensingConfig

> Interface

## Properties

### delay

• `Optional` **delay**: `number`

Can be used to set the delay (in milliseconds) until the licensing call is issued.
Maximum value is 30000 (30 seconds).

***

## LiveConfig

> Interface

Configuration interface for properties used for live streams.

Example:

```js
{
  synchronization: [{
    method: LiveSynchronizationMethod.HttpHead,
    serverUrl: 'http://time.akamai.com',
  }],
}
```

## Properties

### incrementalManifestUpdates

• `Optional` **incrementalManifestUpdates**: `boolean`

Flag to control whether incremental manifest updates are made instead of full updates, provided that the current
source supports it.

Incremental updates improve network and client processing efficiency by reducing the amount of data being
transferred and processed.

This feature is currently supported for HLS sources that support
[Playlist Delta Updates](https://datatracker.ietf.org/doc/html/draft-pantos-hls-rfc8216bis#section-6.2.5.1).

Default is `true`.

***

### lowLatency

• `Optional` **lowLatency**: [`LowLatencyConfig`](https://developer.bitmovin.com/playback/reference/web-sdk-player-config#lowlatencyconfig)

Configuration to enable maintaining a desired live latency.

***

### synchronization

• `Optional` **synchronization**: [`SynchronizationConfigEntry`](https://developer.bitmovin.com/playback/reference/web-sdk-player-config#synchronizationconfigentry)\[]

Configuration to enable the synchronization of the client-clock with an external time source.

***

## HlsConfig

> Interface

Configuration for HLS related settings.

**Since:** 8.238.0

## Properties

### interstitials

• `Optional` **interstitials**: [`InterstitialsConfig`](https://developer.bitmovin.com/playback/reference/web-sdk-sgai#interstitialsconfig)

Configuration for interstitials in HLS streams.

***

## LowLatencyConfig

> Interface

Configuration for live streams to maintain a certain live latency.

## Properties

### catchup

• `Optional` **catchup**: [`LowLatencySyncConfig`](https://developer.bitmovin.com/playback/reference/web-sdk-player-config#lowlatencysyncconfig)

Configuration defining catchup to be done if the player exceeds the target latency.

***

### fallback

• `Optional` **fallback**: [`LowLatencySyncConfig`](https://developer.bitmovin.com/playback/reference/web-sdk-player-config#lowlatencysyncconfig)

Configuration defining fallback to be done if the player falls below the target latency.

***

### targetLatency

• `Optional` **targetLatency**: `number`

The target latency in seconds, i.e. the distance from the stream's live edge to be maintained by the player during
playback.

Default: `5`

***

## LowLatencySyncConfig

> Interface

Configuration specifying live latency synchronization (i.e. maintaining latency by catchup/fallback)

## Properties

### playbackRate

• `Optional` **playbackRate**: `number`

Playback speed to be used for catchup/fallback.

Defaults: `1.2` for catchup and `0.95` for fallback.

***

### playbackRateThreshold

• `Optional` **playbackRateThreshold**: `number`

Allowed deviation from target latency before catchup/fallback by changing the playback speed is done.

Default: `Infinity` (i.e. disabled)

***

### seekThreshold

• `Optional` **seekThreshold**: `number`

Allowed deviation from target latency before catchup/fallback by seeking is done.

Default: `Infinity` (i.e. disabled)

***

## PlaybackRestrictions

> Interface

Playback restrictions that can be applied during content playback.
Used for controlling user interactions during ad playback or other restricted content.

## Properties

### playbackRate

• `Optional` **playbackRate**: `boolean`

If true, playback rate changes will be disabled during playback.

***

### seeking

• `Optional` **seeking**: `boolean`

If true, seeking will be disabled during playback.

***

## PreferredTechnology

> Interface

A player and streaming technology tuple describing a supported technology of the player.

## Hierarchy

* [`Technology`](https://developer.bitmovin.com/playback/reference/web-sdk-player-config#technology)

  ↳ **`PreferredTechnology`**

## Properties

### exclude

• `Optional` **exclude**: `boolean`

Set to `true` to exclude this technology from the list of preferred technologies.

***

### player

• **player**: [`PlayerType`](https://developer.bitmovin.com/playback/reference/web-sdk-player-api#playertype)

A string determining a rendering mode used to render the player.
See [PlayerType](https://developer.bitmovin.com/playback/reference/web-sdk-player-api#playertype) for details of the supported values.

#### Inherited from

[Technology](https://developer.bitmovin.com/playback/reference/web-sdk-player-config#technology).[player](https://developer.bitmovin.com/playback/reference/web-sdk-player-config#player)

***

### streaming

• **streaming**: [`StreamType`](https://developer.bitmovin.com/playback/reference/web-sdk-source-config#streamtype)

A string determining a streaming technology.
See [StreamType](https://developer.bitmovin.com/playback/reference/web-sdk-source-config#streamtype) for details of the supported values.

#### Inherited from

[Technology](https://developer.bitmovin.com/playback/reference/web-sdk-player-config#technology).[streaming](https://developer.bitmovin.com/playback/reference/web-sdk-player-config#streaming)

***

## Technology

> Interface

A player and streaming technology tuple describing a supported technology of the player.

## Hierarchy

* **`Technology`**

  ↳ [`PreferredTechnology`](https://developer.bitmovin.com/playback/reference/web-sdk-player-config#preferredtechnology)

## Properties

### player

• **player**: [`PlayerType`](https://developer.bitmovin.com/playback/reference/web-sdk-player-api#playertype)

A string determining a rendering mode used to render the player.
See [PlayerType](https://developer.bitmovin.com/playback/reference/web-sdk-player-api#playertype) for details of the supported values.

***

### streaming

• **streaming**: [`StreamType`](https://developer.bitmovin.com/playback/reference/web-sdk-source-config#streamtype)

A string determining a streaming technology.
See [StreamType](https://developer.bitmovin.com/playback/reference/web-sdk-source-config#streamtype) for details of the supported values.

***

## StorageConfig

> Interface

Allows controlling the player's storage behavior.

## Properties

### disableStorageApi

• `Optional` **disableStorageApi**: `boolean`

Controls whether the browser may access the Web Storage API which consists of

* `window.localStorage`
* `window.sessionStorage`

If the device would not support the `localStorage`, the player would
then fallback to use `document.cookie`.

If set to true, the player will not store anything in either one.
If set to false (default case), the player will store information about DRM licenses,
bandwidth measurements and VAST ad information.

***

## SynchronizationConfigEntry

> Interface

## Properties

### method

• **method**: [`LiveSynchronizationMethod`](https://developer.bitmovin.com/playback/reference/web-sdk-player-config#livesynchronizationmethod)

Method how to extract the time information from the time server response.

***

### serverUrl

• **serverUrl**: `string`

URL of the time server

***

## PlayStation5Tweaks

> Interface

## Properties

### esvm

• `Optional` **esvm**: `boolean`

Enables the Enhanced Security Video Mode. This uses a more secure video render pipeline which is required
when content is encrypted with PlayReady SL-3000 or Widevine L1, and/or HDR/10-bit content.

Playback of PlayReady SL-3000, Widevine L1 and/or HDR/10-bit content both require esvm to be set to true.
If it is set to false a decoding error will occur.
PlayReady SL-2000, Widevine L2 or L3, unprotected, and/or SDR content, can also be played when esvm is true.

When setting esvm, all previous video elements must be destroyed.
This cannot change during any form of video playback.

Default is false

**Since:** 8.88.0

***

### pass\_through

• `Optional` **pass\_through**: `boolean`

The pass\_through option enables and disables audio pass-through.

If enabled, audio is passed through to the AV Receiver to decompress audio.
If disabled, the PlayStation® console will decompress audio into LPCM.

Only one audio stream can be passed through to the AV Receiver at a time.
Attempting to enable pass\_through on a second video element when the first is still active
will result in an error.

Default is false

**Since:** 8.88.0

***

### playmode

• `Optional` **playmode**: `"4K"` | `"2K"`

This flag is used to define hardware resources when playing multiple videos at the same time.
If playing only a single video, or two videos up with combined resolution up to 4k
the `playmode` can be left as "4K" - which is also capable of playing 2K content.

* "4K" Informs the underlying video engine that this SourceBuffer will play content above 2K and up to 4K.
* "2K" Informs the underlying video engine that this SourceBuffer will not play content above 2K.
  Playback of 4K content in this mode will result in an error.

When setting playmode, all previous video elements must be destroyed.
This cannot change during any form of video playback.

Default is "4K"

**Since:** 8.88.0

***

## LogLevel

> Enum

## Enumeration Members

### DEBUG

• **DEBUG** = `"debug"`

***

### ERROR

• **ERROR** = `"error"`

***

### LOG

• **LOG** = `"log"`

***

### OFF

• **OFF** = `"off"`

***

### WARN

• **WARN** = `"warn"`

***

## LatencyMode

> Enum

## Enumeration Members

### Catchup

• **Catchup** = `"catchup"`

The player is behind the target latency and performing catchup.

***

### Fallback

• **Fallback** = `"fallback"`

The player is ahead of the target latency and performing fallback.

***

### Idle

• **Idle** = `"idle"`

The player is playing at the target latency.

***

### Suspended

• **Suspended** = `"suspended"`

Controlling the latency is temporarily disabled due to not playing at the live edge or a user-defined
playback speed (i.e. unequal to 1) being set.

***

## LiveSynchronizationMethod

> Enum

Method to be used for time server response parsing

## Enumeration Members

### HttpHead

• **HttpHead** = `"httphead"`

The time information is in the response HTTP 'Date' header.

***

### HttpIso

• **HttpIso** = `"httpiso"`

The time information is in the response body a ISO 8601 timestamp.

***

### HttpXsDate

• **HttpXsDate** = `"httpxsdate"`

The time information is in the response body in xs:date format.

***

## SupportedTechnologyMode

> Enum

The mode how supported technologies are determined. [getSupportedTech](https://developer.bitmovin.com/playback/reference/web-sdk-player-api#getsupportedtech)

**Since:** v8.1.0

## Enumeration Members

### Modules

• **Modules** = `"modules"`

Technologies supported by the loaded player modules.

***

### Platform

• **Platform** = `"platform"`

Technologies supported by the executing platform.

***

### PlatformAndModules

• **PlatformAndModules** = `"platformandmodules"`

Technologies supported by the loaded player modules on the executing platform.