---
title: Player Integration
url: https://docs.kaltura.com/docs/rich-media-cms-apis/content-management/captions-player-integration
---

## Player Integration


### HLS Caption Delivery

Kaltura Player v7 requests captions via the HLS segmented delivery flow:

1. Player requests M3U8 manifest from `serveWebVTT` (no `segmentIndex`)
2. Manifest lists WebVTT segments with timing
3. Player fetches individual segments as the playhead advances
4. Only caption assets with `displayOnPlayer=true` are included in the manifest
5. Language codes (2-char and 3-char ISO) are based on partner configuration

### Transcript Plugin

The `playkit-js-transcript` plugin displays a searchable, scrolling transcript alongside the player:

| Config | Values | Description |
|--------|--------|-------------|
| `expandMode` | `alongside`, `hidden`, `over` | Transcript panel position |
| `showTime` | `true` / `false` | Show timestamps per line |
| `position` | `left`, `right`, `top`, `bottom` | Panel location |
| `downloadDisabled` | `true` / `false` | Disable transcript download |
| `printDisabled` | `true` / `false` | Disable transcript print |

The transcript plugin reads caption data from `serveAsJson` for structured display. It works with VOD entries only.

### Caption Track Selection

When multiple caption tracks exist, the player displays a CC button with language options. The default caption (`isDefault=true`) is auto-selected. Users can switch tracks or disable captions.

### Player Playback Plugin Data

The player receives `KalturaCaptionPlaybackPluginData` for each track:

| Field | Description |
|-------|-------------|
| `label` | Display label |
| `format` | Caption format |
| `language` | Language name |
| `languageCode` | ISO 639 code |
| `webVttUrl` | WebVTT serving URL |
| `url` | Raw caption URL |
| `isDefault` | Default track flag |
