Handles dynamic ad insertion streams. This class manages interactions with DAI servers, handles tracking pings, and emits stream and ad events.

| Constructors ||
|---|---|
| `https://developers.google.com/ad-manager/dynamic-ad-insertion/sdk/html5/reference/class/google.ima.dai.api.StreamManager#google.ima.dai.api.StreamManager.constructor` |   |

| Methods ||
|---|---|
| `https://developers.google.com/ad-manager/dynamic-ad-insertion/sdk/html5/reference/class/google.ima.dai.api.StreamManager#google.ima.dai.api.StreamManager.addEventListener` | Adds a listener for the given event type. |
| `https://developers.google.com/ad-manager/dynamic-ad-insertion/sdk/html5/reference/class/google.ima.dai.api.StreamManager#google.ima.dai.api.StreamManager.contentTimeForStreamTime` | Returns the content time without ads for a given stream time. |
| `https://developers.google.com/ad-manager/dynamic-ad-insertion/sdk/html5/reference/class/google.ima.dai.api.StreamManager#google.ima.dai.api.StreamManager.focus` | Puts the focus on the skip button, if present. |
| `https://developers.google.com/ad-manager/dynamic-ad-insertion/sdk/html5/reference/class/google.ima.dai.api.StreamManager#google.ima.dai.api.StreamManager.getAdSkippableState` | Returns a `true` value if the user can skip the current ad. |
| `https://developers.google.com/ad-manager/dynamic-ad-insertion/sdk/html5/reference/class/google.ima.dai.api.StreamManager#google.ima.dai.api.StreamManager.loadStreamMetadata` | Requests the DAI SDK to load ad metadata and emits a `LOADED` stream event. |
| `https://developers.google.com/ad-manager/dynamic-ad-insertion/sdk/html5/reference/class/google.ima.dai.api.StreamManager#google.ima.dai.api.StreamManager.onTimedMetadata` | Passes in a dictionary of processed metadata. |
| `https://developers.google.com/ad-manager/dynamic-ad-insertion/sdk/html5/reference/class/google.ima.dai.api.StreamManager#google.ima.dai.api.StreamManager.previousCuePointForStreamTime` | Returns the previous cuepoint for the given stream time. |
| `https://developers.google.com/ad-manager/dynamic-ad-insertion/sdk/html5/reference/class/google.ima.dai.api.StreamManager#google.ima.dai.api.StreamManager.processMetadata` | Processes timed metadata for streams. |
| `https://developers.google.com/ad-manager/dynamic-ad-insertion/sdk/html5/reference/class/google.ima.dai.api.StreamManager#google.ima.dai.api.StreamManager.removeEventListener` | Removes a listener for the given [StreamEvent](https://developers.google.com/ad-manager/dynamic-ad-insertion/sdk/html5/reference/interface/google.ima.dai.api.StreamEvent) event type. |
| `https://developers.google.com/ad-manager/dynamic-ad-insertion/sdk/html5/reference/class/google.ima.dai.api.StreamManager#google.ima.dai.api.StreamManager.replaceAdTagParameters` | Replaces all of the ad tag parameters used for upcoming ad requests for a live stream. |
| `https://developers.google.com/ad-manager/dynamic-ad-insertion/sdk/html5/reference/class/google.ima.dai.api.StreamManager#google.ima.dai.api.StreamManager.requestStream` | Requests a stream for IMA DAI to load using provided stream parameters. |
| `https://developers.google.com/ad-manager/dynamic-ad-insertion/sdk/html5/reference/class/google.ima.dai.api.StreamManager#google.ima.dai.api.StreamManager.reset` | Resets the stream manager and removes any continuous polling. |
| `https://developers.google.com/ad-manager/dynamic-ad-insertion/sdk/html5/reference/class/google.ima.dai.api.StreamManager#google.ima.dai.api.StreamManager.streamTimeForContentTime` | Returns the total stream time with ads for a given content time. |

## Constructors

*** ** * ** ***

### constructor

`new StreamManager(videoElement: HTMLVideoElement, adUiElement?: HTMLElement, uiSettings?: https://developers.google.com/ad-manager/dynamic-ad-insertion/sdk/html5/reference/class/google.ima.dai.api.UiSettings): https://developers.google.com/ad-manager/dynamic-ad-insertion/sdk/html5/reference/class/google.ima.dai.api.StreamManager`

| Parameters ||
|---|---|
| `videoElement: HTMLVideoElement` | The HTML video element where playback occurs. |
| `` `Optional` adUiElement: HTMLElement `` | The element where the ad UI renders. |
| `` `Optional` uiSettings: https://developers.google.com/ad-manager/dynamic-ad-insertion/sdk/html5/reference/class/google.ima.dai.api.UiSettings `` | The UI settings to use for this stream. |

| Returns ||
|---|---|
| `https://developers.google.com/ad-manager/dynamic-ad-insertion/sdk/html5/reference/class/google.ima.dai.api.StreamManager` |   |

## Methods

*** ** * ** ***

### addEventListener

`addEventListener(type: https://developers.google.com/ad-manager/dynamic-ad-insertion/sdk/html5/reference/namespace/google.ima.dai.api.StreamEvent#google.ima.dai.api.StreamEvent.Type, listener: ((event: https://developers.google.com/ad-manager/dynamic-ad-insertion/sdk/html5/reference/interface/google.ima.dai.api.StreamEvent) => void)): void` Adds a listener for the given event type.

| Parameters ||
|---|---|
| `type: https://developers.google.com/ad-manager/dynamic-ad-insertion/sdk/html5/reference/namespace/google.ima.dai.api.StreamEvent#google.ima.dai.api.StreamEvent.Type` | The stream event type. |
| `listener: ((event: https://developers.google.com/ad-manager/dynamic-ad-insertion/sdk/html5/reference/interface/google.ima.dai.api.StreamEvent) => void)` | A callback function for the ad listener. |

*** ** * ** ***

### contentTimeForStreamTime

`contentTimeForStreamTime(streamTime: number): number` Returns the content time without ads for a given stream time. Returns the given stream time for live streams.

| Parameters ||
|---|---|
| `streamTime: number` | the stream time in seconds, combining content and ads. |

| Returns ||
|---|---|
| `number` | the content time for the given stream time, not including ads. |

*** ** * ** ***

### focus

`focus(): void` Puts the focus on the skip button, if present. If not present, focus is put back on the interactive element.

*** ** * ** ***

### getAdSkippableState

`getAdSkippableState(): boolean` Returns a `true` value if the user can skip the current ad. When this value changes, the `StreamManager` class emits a `SKIPPABLE_STATE_CHANGED` stream event.

| Returns ||
|---|---|
| `boolean` | `true` if the user can skip the current ad, `false` otherwise. |

*** ** * ** ***

### loadStreamMetadata

`loadStreamMetadata(): void` Requests the DAI SDK to load ad metadata and emits a `LOADED` stream event. Manually call this method when you retrieve the stream manifest from your third party video stitcher. This method is only for Pod Serving VOD streams with third party video stitcher.

*** ** * ** ***

### onTimedMetadata

`onTimedMetadata(metadata: {
[key: string]: string;
}): void` Passes in a dictionary of processed metadata. The dictionary expects the exact key `"TXXX"` with the user-defined metadata string as the value. If your player provides raw metadata, call the [StreamManager.processMetadata](https://developers.google.com/ad-manager/dynamic-ad-insertion/sdk/html5/reference/class/google.ima.dai.api.StreamManager#google.ima.dai.api.StreamManager.processMetadata) method instead.

| Parameters ||
|---|---|
| `metadata: { [key: string]: string; }` | The dictionary of metadata. |

*** ** * ** ***

### previousCuePointForStreamTime

`previousCuePointForStreamTime(streamTime: number): https://developers.google.com/ad-manager/dynamic-ad-insertion/sdk/html5/reference/interface/google.ima.dai.api.CuePoint` Returns the previous cuepoint for the given stream time. If no previous cuepoint exists, returns `null`. Use this method to implement features like snapback by calling the method when the user seeks to return the user to an ad break.

| Parameters ||
|---|---|
| `streamTime: number` | the stream time that the user seeks to. |

| Returns ||
|---|---|
| `https://developers.google.com/ad-manager/dynamic-ad-insertion/sdk/html5/reference/interface/google.ima.dai.api.CuePoint` | the previous cuepoint for the given stream time. |

*** ** * ** ***

### processMetadata

`processMetadata(type: string, data: string | Uint8Array, timestamp: number): void` Processes timed metadata for streams. Use this method if your video player provides unparsed metadata with timestamps. Otherwise, call [StreamManager.onTimedMetadata](https://developers.google.com/ad-manager/dynamic-ad-insertion/sdk/html5/reference/class/google.ima.dai.api.StreamManager#google.ima.dai.api.StreamManager.onTimedMetadata).

| Parameters ||
|---|---|
| `type: string` | Type for metadata. Must be the `'ID3'` string for HLS, or the event message scheme ID URI for DASH. |
| `data: string | Uint8Array` | Raw tag data. For ID3, must be the entire raw tag data. For DASH event messages, this is the message data string. |
| `timestamp: number` | Time in seconds when to process data. For DASH, this parameter is the event message start time. |

*** ** * ** ***

### removeEventListener

`removeEventListener(type: https://developers.google.com/ad-manager/dynamic-ad-insertion/sdk/html5/reference/namespace/google.ima.dai.api.StreamEvent#google.ima.dai.api.StreamEvent.Type, listener: ((event: https://developers.google.com/ad-manager/dynamic-ad-insertion/sdk/html5/reference/interface/google.ima.dai.api.StreamEvent) => void)): void` Removes a listener for the given [StreamEvent](https://developers.google.com/ad-manager/dynamic-ad-insertion/sdk/html5/reference/interface/google.ima.dai.api.StreamEvent) event type. To successfully remove a listener, the listener parameter you pass to this method must be equal by reference to the one previously passed to the `addEventListener` method.

| Parameters ||
|---|---|
| `type: https://developers.google.com/ad-manager/dynamic-ad-insertion/sdk/html5/reference/namespace/google.ima.dai.api.StreamEvent#google.ima.dai.api.StreamEvent.Type` | The type of event for which to remove the listener. |
| `listener: ((event: https://developers.google.com/ad-manager/dynamic-ad-insertion/sdk/html5/reference/interface/google.ima.dai.api.StreamEvent) => void)` | The function to remove as a listener. |

*** ** * ** ***

### replaceAdTagParameters

`replaceAdTagParameters(adTagParameters: {
[key:
string]: string;
}): void` Replaces all of the ad tag parameters used for upcoming ad requests for a live stream.

| Parameters ||
|---|---|
| `adTagParameters: { [key: string]: string; }` | The replacement ad tag parameters. Must have string values. |

*** ** * ** ***

### requestStream

`requestStream(streamRequest: https://developers.google.com/ad-manager/dynamic-ad-insertion/sdk/html5/reference/interface/google.ima.dai.api.StreamRequest): void` Requests a stream for IMA DAI to load using provided stream parameters.

| Parameters ||
|---|---|
| `streamRequest: https://developers.google.com/ad-manager/dynamic-ad-insertion/sdk/html5/reference/interface/google.ima.dai.api.StreamRequest` | contains parameters to load the stream metadata. |

*** ** * ** ***

### reset

`reset(): void` Resets the stream manager and removes any continuous polling.

*** ** * ** ***

### streamTimeForContentTime

`streamTimeForContentTime(contentTime: number): number` Returns the total stream time with ads for a given content time. Returns the given content time for live streams.

| Parameters ||
|---|---|
| `contentTime: number` | the content time without any ads in seconds. |

| Returns ||
|---|---|
| `number` | the total stream time that corresponds with the given content time after DAI inserts ads. |