--- title: "OTT-specific features" slug: "vpe-umd-ott" updated: 2026-09-17T09:22:36Z published: 2026-09-17T09:22:36Z canonical: "guide.ncloud-docs.com/vpe-umd-ott" stale: true --- > ## Documentation Index > Fetch the complete documentation index at: https://guide.ncloud-docs.com/llms.txt > Use this file to discover all available pages before exploring further. # OTT-specific features Available in Classic and VPC You can use features that OTT services commonly require, such as skip intro, opening, and ending, age rating display, and content warnings. Configure each feature at the `playlist` item level. ## Skip intro, opening, and ending When you specify the `intro`, `opening`, and `ending` segment for each `playlist` item, the player automatically displays the skip button at the configured time. ### Option Configure all skip options at the `playlist[]` item level. | Name | Type | Default value | Description | | --- | --- | --- | --- | | `intro` | `{ start: string; duration: number }` | `undefined` | Intro segment. Show the skip when playback starts. | | `opening` | `{ start: string; duration: number }` | `undefined` | Opening segment. Automatically skip or display skip button upon entering the section. | | `ending` | `{ start: string; duration: number }` | `undefined` | Ending segment. Automatically skip or display skip button upon entering the section. | Each segment object includes the following fields: | Field | Type | Description | | --- | --- | --- | | `start` | String | Segment start time in `"HH:MM:SS"` format (for example: `"00:00:05"`, `"00:01:30"` | | `duration` | Integer | Segment duration (seconds) | ### Type definition ``` // Playlist item structure { file: "string", poster: "string", // ... Other properties // OTT skip segment intro: { start: "HH:MM:SS", duration: number }, opening: { start: "HH:MM:SS", duration: number }, ending: { start: "HH:MM:SS", duration: number }, } ``` ### Basic usage example ``` const player = new ncplayer("player", { autostart: true, muted: true, playlist: [ { file: "https://CDN_DOMAIN/episode_01.m3u8", poster: "https://CDN_DOMAIN/episode_01.jpg", intro: { start: "00:00:00", duration: 5, }, opening: { start: "00:00:05", duration: 90, }, ending: { start: "00:45:00", duration: 60, }, }, ], }); ``` ### How it works Opening and ending segments support automatic skipping. The operational process is as follows: - If the user manually seeks into an opening or ending segment, the player bypasses automatic skipping. - If an internal skip action (such as an intro skip) moves playback into an opening segment, the player continues automatic skipping. The player renders the skip button as a fixed overlay regardless of whether the control bar is visible. The player also aligns the button position with the bottom offset of the `center` layout. ### Skip event When the player skips a segment, the following event triggers. You can receive the event through the `on()` method. | Event | Description | | --- | --- | | `introSkip` | Triggers when the player skips the intro segment. | | `openingSkip` | Triggers when the player skips the opening segment. | | `endingSkip` | Triggers when the player skips the ending segment. | ``` const player = new ncplayer("player", { playlist: [ { file: "https://CDN_DOMAIN/episode_01.m3u8", intro: { start: "00:00:00", duration: 5 }, opening: { start: "00:00:05", duration: 90 }, ending: { start: "00:45:00", duration: 60 }, }, ], }); player.on("introSkip", function() { console.log("Intro skipped"); }); player.on("openingSkip", function() { console.log("Opening skipped"); }); player.on("endingSkip", function() { console.log("Ending skipped"); }); ``` ## Display age ratings Set the `ageRating` value for the `playlist` item to automatically display the age rating overlay when playback starts. ### Supported ratings | Value | Description | i18n key | | --- | --- | --- | | `"all"` | All ages | `ageRating.noticeAll` | | `"12"` | Ages 12 and up | `ageRating.notice12` | | `"15"` | Ages 15 and up | `ageRating.notice15` | | `"19"` | Ages 19 and up (restricted to adults) | `ageRating.notice19` | ### Overlay behavior - Display the overlay once, 3 seconds after playback starts. - Show the overlay with a fade and slide animation. - Apply a black gradation (`opacity 0.3 → 0`) at the top of the interface. - Supports multiple languages. Supported languages are `ko`, `en`, and `ja`. ### Basic usage example ``` const player = new ncplayer("player", { autostart: true, muted: true, playlist: [ { file: "https://CDN_DOMAIN/episode_01.m3u8", poster: "https://CDN_DOMAIN/episode_01.jpg", description: { title: "Drama season 1 EP. 01", profile_name: "OTT channel", }, ageRating: "15", }, ], }); ``` ## Content warnings When you set the `contentWarnings` array for item `playlist`, the player displays a warning overlay at the start of playback to inform viewers about sensitive content contained within the video. ### Supported warning types | Value | Description | | --- | --- | | `"sexuality"` | Nudity | | `"violence"` | Violence | | `"language"` | Language (profanity/vulgarity) | | `"drugs"` | Substance abuse | | `"horror"` | Horror | | `"imitation"` | Imitative behavior | | `"provocative"` | Sexual innuendo | Note The 7 values above are the recommended keys. You can also use custom string values. ### Basic usage example ``` const player = new ncplayer("player", { autostart: true, muted: true, playlist: [ { file: "https://CDN_DOMAIN/episode_01.m3u8", poster: "https://CDN_DOMAIN/episode_01.jpg", contentWarnings: ["violence", "language"], }, ], }); ``` ## Complete example This example applies skip intro, opening, and ending, age rating display, and content warnings. ``` const player = new ncplayer("player", { autostart: true, muted: true, playlist: [ { file: "https://CDN_DOMAIN/episode_01.m3u8", poster: "https://CDN_DOMAIN/episode_01.jpg", description: { title: "Drama season 1 EP. 01", profile_name: "OTT channel", }, ageRating: "15", contentWarnings: ["violence", "language"], intro: { start: "00:00:00", duration: 5, }, opening: { start: "00:00:05", duration: 90, }, ending: { start: "00:45:00", duration: 60, }, }, { file: "https://CDN_DOMAIN/episode_02.m3u8", poster: "https://CDN_DOMAIN/episode_02.jpg", description: { title: "Drama season 1 EP. 02", profile_name: "OTT channel", }, ageRating: "15", contentWarnings: ["violence"], intro: { start: "00:00:00", duration: 5, }, opening: { start: "00:00:05", duration: 90, }, ending: { start: "00:45:00", duration: 60, }, }, ], }); // Process skip event player.on("introSkip", function() { console.log("Intro skipped"); }); player.on("openingSkip", function() { console.log("Opening skipped"); }); player.on("endingSkip", function() { console.log("Ending skipped — moving to the next episode"); // player.next(); }); ```