The latest service changes have not yet been reflected in this content. We will update the content as soon as possible. Please refer to the Korean version for information on the latest updates.
Classic/VPC 환경에서 이용 가능합니다.
플레이어 UI를 구성하고 설정하는 옵션과 선언적 레이아웃 시스템을 안내합니다.
controls
controls 속성으로 컨트롤바 표시 여부를 설정할 수 있습니다.
<VpePlayer
accessKey="YOUR_ACCESS_KEY"
options={{
playlist: [{ file: 'https://example.com/video.m3u8' }],
controls: false, // 컨트롤바 숨김
}}
onBack={() => navigation.goBack()}
/>
controlBtn
controlBtn 속성으로 개별 버튼의 표시 여부를 설정할 수 있습니다. TV SDK에서는 fullscreen, pictureInPicture 속성이 없습니다.
<VpePlayer
accessKey="YOUR_ACCESS_KEY"
options={{
playlist: [{ file: 'https://example.com/video.m3u8' }],
controls: true,
controlBtn: {
play: true,
progressBar: true,
volume: true,
times: true,
setting: true,
subtitle: true,
},
}}
onBack={() => navigation.goBack()}
/>
progressBarColor
progressBarColor 속성으로 진행바의 색상을 설정할 수 있습니다.
<VpePlayer
accessKey="YOUR_ACCESS_KEY"
options={{
playlist: [{ file: 'https://example.com/video.m3u8' }],
progressBarColor: '#00E0FF',
}}
onBack={() => navigation.goBack()}
/>
controlActiveTime
controlActiveTime속성으로 컨트롤바가 자동으로 숨겨지는 시간을 설정합니다. 기본값은 3000ms(3초)입니다.
controlActiveTime을 0으로 설정하면 컨트롤바가 자동으로 숨겨지지 않고 항상 표시됩니다. 라이브커머스처럼 UI가 늘 보여야 하는 화면에 유용합니다.
<VpePlayer
accessKey="YOUR_ACCESS_KEY"
options={{
playlist: [{ file: 'https://example.com/video.m3u8' }],
controlActiveTime: 5000, // 5초 후 자동 숨김
}}
onBack={() => navigation.goBack()}
/>
lang
lang 속성으로 UI 언어를 설정할 수 있습니다.
| 값 | 언어 |
|---|---|
| ko | 한국어 (기본값) |
| en | English |
| ja | 日本語 |
리모컨 이벤트
TV SDK는 리모컨 D-pad 입력을 자동으로 처리합니다.
| 이벤트 | Apple TV | Android TV | 동작 |
|---|---|---|---|
| select | O | O | 확인/선택 |
| playPause | O | O | 재생/일시정지 |
| up/down | O | O | 컨트롤바 표시/포커스 이동 |
| left/right | O | O | SeekBar에서 ±10초 시킹 |
| menu | O | X | 뒤로가기 |
| rewind/fastForward | X | O | 되감기/빨리감기 |
레이아웃 시스템
TV SDK의 선언적 레이아웃 시스템을 사용하여 컨트롤바 UI를 커스터마이징할 수 있습니다.
레이아웃 구조
5개 섹션(top, upper, center, lower, bottom)과 seekbar로 구성된 선언적 레이아웃입니다.
사용 가능한 아이템
컨트롤바에 배치할 수 있는 아이템은 다음과 같습니다.
| 아이템 | 설명 |
|---|---|
PlayBtn |
재생 / 일시정지 / 다시 재생 |
BigPlayBtn |
중앙 대형 재생 + 이전 / 다음 |
BackBtn |
뒤로가기 |
SeekBar |
탐색바(D-pad 좌/우로 ±10초 탐색) |
SkipBackBtn / SkipForwardBtn |
±10초 탐색 |
PrevBtn / NextBtn / NextPrevBtn |
트랙 이동 |
TimeBtn / CurrentTimeBtn / DurationBtn |
시간 표시(라이브 시 LIVE 인디케이터) |
MuteBtn / VolumeBtn |
음소거 / 볼륨(TV에서는 뮤트 토글) |
SubtitleBtn |
자막 메뉴 |
SettingBtn |
설정 메뉴 |
MetaDesc |
영상 메타 정보 |
Blank / BlankBtn |
빈 공간 |
TV에서 제거된 아이템은 FullscreenBtn, PipBtn, ShareBtn이며, 레이아웃에 포함해도 무시됩니다.
커스텀 레이아웃 예제
<VpePlayer
accessKey="YOUR_ACCESS_KEY"
options={{ playlist: [{ file: 'https://example.com/video.m3u8' }] }}
layout={{
top: [
{ items: ['BackBtn'], wrapper: 'Group' },
{ items: ['MetaDesc'] },
{ wrapper: 'Blank', items: [] },
],
center: [
{ items: ['BigPlayBtn'], align: 'center' },
],
lower: [
{ wrapper: 'Blank', items: ['SeekBar'], align: 'center' },
],
bottom: [
{ items: ['PlayBtn'], wrapper: 'Group' },
{ items: ['NextPrevBtn'], wrapper: 'Group' },
{ items: ['MuteBtn'], wrapper: 'Group' },
{ items: ['TimeBtn'], wrapper: 'Group' },
{ wrapper: 'Blank', items: [] },
{ items: ['SubtitleBtn', 'SettingBtn'], wrapper: 'Group' },
],
}}
onBack={() => navigation.goBack()}
/>
VOD/Live 변형
VOD와 Live에서 서로 다른 레이아웃을 사용할 수 있습니다.
<VpePlayer
accessKey="YOUR_ACCESS_KEY"
options={{ playlist: [{ file: 'https://example.com/video.m3u8' }] }}
layout={{
vod: {
bottom: [
{ items: ['PlayBtn'], wrapper: 'Group' },
{ items: ['TimeBtn'], wrapper: 'Group' },
{ wrapper: 'Blank', items: [] },
{ items: ['SettingBtn'], wrapper: 'Group' },
],
},
live: {
bottom: [
{ items: ['PlayBtn'], wrapper: 'Group' },
{ items: ['TimeBtn'], wrapper: 'Group' },
{ wrapper: 'Blank', items: [] },
{ items: ['MuteBtn'], wrapper: 'Group' },
],
},
}}
onBack={() => navigation.goBack()}
/>
런타임 레이아웃 변경
ref 메서드를 통해 런타임에 레이아웃을 변경할 수 있습니다.
const playerRef = useRef<PlayerHandle>(null);
// 부분 업데이트 (merge=true, 기본값)
playerRef.current?.layout(
{ bottom: [{ items: ['PlayBtn'], wrapper: 'Group' }] },
true
);
// 전체 교체 (merge=false)
playerRef.current?.layout(newLayout, false);
그룹 옵션
각 그룹에 설정할 수 있는 속성은 다음과 같습니다.
| 속성 | 타입 | 설명 |
|---|---|---|
items |
string[] | 레이아웃 아이템 목록 |
wrapper |
'Blank', 'Group' | 래퍼 타입 |
align |
'left' , 'right' , 'center' | 정렬 |
size |
number | 버튼 크기(기본 88) |