--- title: "OTT-specific features" slug: "vpe-tv-ott" updated: 2026-09-17T09:22:36Z published: 2026-09-17T09:22:36Z canonical: "guide.ncloud-docs.com/vpe-tv-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/ending Specify `intro`, `opening`, and `ending` segments for each PlaylistItem to automatically display the skip 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 (show the skip or skip the segment automatically when playback enters the configured segment) | | ending | { start: string; duration: number } | undefined | Ending segment (show the skip or skip the segment automatically when playback enters the configured segment) | - `start`: Segment start time in "HH:MM:SS" format (for example: "00:00:05", "00:01:30") - `duration`: Segment duration (seconds) ### Usage example An example of configuring skip sections is as follows: ``` import { VpePlayer } from "@sgrsoft/vpe-reactnative-tv-sdk"; export default function OttPlayer() { return ( navigation.goBack()} /> ); } ``` ### Automatic skip behavior - If the user manually enters an opening or ending segment through `seek`, the player bypasses automatic skipping to respect the user's intent. - If an internal skip action (such as an intro skip) moves playback into an opening segment, the player continues automatic skipping. ### Skip button UI - The skip button renders as a fixed overlay, regardless of the visibility of the control bar. - The button position synchronizes based on the `center` layout's bottom offset. - Users can focus on and select the skip button using the remote control D-pad. ### Skip event The following events trigger during a skip action: | 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. | ``` { switch (event.type) { case "introSkip": console.log("Intro skipped"); break; case "openingSkip": console.log("Opening skipped"); break; case "endingSkip": console.log("Ending skipped"); break; } }} onBack={() => navigation.goBack()} /> ``` ## Display age ratings Setting `ageRating` value of `PlaylistItem` automatically displays the age rating overlay upon playback start. ### Supported ratings Available values for `ageRating` are as follows: | Value | Description | | --- | --- | | "all" | All ages | | "12" | Ages 12 and up | | "15" | Ages 15 and up | | "19" | Ages 19 and up (restricted to adults) | ### Overlay behavior - Display the overlay once, 3 seconds after playback starts. - Show the overlay with a fade and slide animation. - Multilingual support: ko/en/ja ### Usage example The example of configuring `ageRating` is as follows: ``` import { VpePlayer } from "@sgrsoft/vpe-reactnative-tv-sdk"; export default function AgeRatedPlayer() { return ( navigation.goBack()} /> ); } ``` ## Content warnings When you set the `contentWarnings` array of `PlaylistItem`, the player displays a warning overlay at the start of playback to inform viewers about sensitive content contained within the video. ### Supported warning types Available values for `contentWarnings` are as follows: | Value | Description | | --- | --- | | "sexuality" | Nudity | | "violence" | Violence | | "language" | Language (profanity/vulgarity) | | "drugs" | Substance abuse | | "horror" | Horror | | "imitation" | Imitative behavior | | "provocative" | Sexual innuendo | The 7 values above are the recommended keys. You can also use custom string values. ### Usage example The example of configuring `contentWarnings` is as follows: ``` import { VpePlayer } from "@sgrsoft/vpe-reactnative-tv-sdk"; export default function ContentWarningPlayer() { return ( navigation.goBack()} /> ); } ``` ## Complete example An example that applies skip intro, opening, and ending, age rating display, and content warnings is as follows: ``` import { VpePlayer, type PlayerHandle } from "@sgrsoft/vpe-reactnative-tv-sdk"; import { useRef, useCallback } from "react"; export default function FullOttPlayer() { const playerRef = useRef(null); const handleEvent = useCallback((event: any) => { switch (event.type) { case "introSkip": console.log("Intro skipped"); break; case "openingSkip": console.log("Opening skipped"); break; case "endingSkip": console.log("Ending skipped — moving to the next episode"); // playerRef.current?.next(); break; } }, []); return ( navigation.goBack()} /> ); } ```