메서드

ncplayer 인스턴스의 메서드를 사용하여 플레이어를 프로그래밍 방식으로 제어할 수 있습니다.

기본 사용법

new ncplayer()가 반환하는 인스턴스를 변수에 저장한 후, 해당 변수를 통해 메서드를 호출합니다.

const player = new ncplayer("player", {
    playlist: [
        { file: "https://example.com/video/master.m3u8" },
    ],
});

// 재생
player.play();

// 일시정지
player.pause();

// 30초 위치로 이동
player.currentTime(30);

재생 제어

메서드설명
play()영상을 재생합니다.
pause()영상을 일시정지합니다.
mute()음소거합니다.
prev()이전 플레이리스트 항목으로 이동합니다.
next()다음 플레이리스트 항목으로 이동합니다.
currentTime(time)지정한 시간(초)으로 이동합니다.
const player = new ncplayer("player", {
    playlist: [
        { file: "https://example.com/video/master.m3u8" },
    ],
});

// 재생
player.play();

// 일시정지
player.pause();

// 음소거
player.mute();

// 30초 위치로 이동
player.currentTime(30);

// 다음 플레이리스트 항목으로 이동
player.next();

// 이전 플레이리스트 항목으로 이동
player.prev();

볼륨 제어

메서드설명
volume(vol)볼륨을 설정합니다. (0~1)
const player = new ncplayer("player", {
    playlist: [
        { file: "https://example.com/video/master.m3u8" },
    ],
});

// 볼륨 설정 (0~1)
player.volume(0.8);

// 음소거
player.mute();

자막 제어

메서드설명
toggleSubtitle()자막 표시 여부를 토글합니다.
setSubtitleEnabled(enabled)자막 표시 여부를 설정합니다.
selectSubTitle(idx)vtt 배열 인덱스로 자막 트랙을 선택합니다.
// 자막 ON/OFF 토글
player.toggleSubtitle();

// 자막 표시 여부 설정
player.setSubtitleEnabled(true);

// vtt 배열 인덱스로 자막 트랙 선택
player.selectSubTitle(0);

UI 제어

메서드설명
fullscreen()전체화면을 토글합니다.
fullscreenOn()전체화면 모드로 전환합니다.
fullScreenOff()전체화면 모드를 해제합니다.
pip()Picture in Picture 모드를 토글합니다.
uiHidden()플레이어 UI를 숨깁니다.
uiVisible()플레이어 UI를 표시합니다.
controlBarActive()컨트롤바를 활성화(표시)합니다.
controlBarDeactive()컨트롤바를 비활성화(숨김)합니다.
changeUiMode(mode)UI 모드를 변경합니다. ("pc" | "mobile" | "fullscreen" | null)
layout(nextLayout, merge)레이아웃을 동적으로 변경합니다. merge가 true(기본값)이면 기존 레이아웃에 병합합니다.
const player = new ncplayer("player", {
    playlist: [
        { file: "https://example.com/video/master.m3u8" },
    ],
});

// 전체화면 토글
player.fullscreen();

// 전체화면 진입
player.fullscreenOn();

// 전체화면 해제
player.fullScreenOff();

// PIP 모드 토글
player.pip();

// UI 숨김
player.uiHidden();

// UI 표시
player.uiVisible();

// 컨트롤바 활성화
player.controlBarActive();

// 컨트롤바 비활성화
player.controlBarDeactive();

// UI 모드 변경
player.changeUiMode("mobile");

레이아웃 실시간 변경

layout(nextLayout, merge?) — 두 번째 인자 merge의 기본값은 true입니다. Group에 key를 지정하면 같은 key의 Group끼리만 교체되고, 그 외는 base가 유지됩니다. 리마운트 없이 UI가 즉시 전환되며, 자세한 규칙은 레이아웃 시스템 페이지를 참조하세요.

const player = new ncplayer("player", {
    playlist: [
        { file: "https://example.com/video/master.m3u8" },
    ],
});

// 특정 Group만 교체 — base의 같은 key Group이 교체됨
player.layout({
    bottom: [
        { key: "right", items: ["SubtitleBtn", "PipBtn", "SettingBtn", "FullscreenBtn"] },
    ],
});

// 새 Group 추가 — 기존 Group 뒤에 append
player.layout({
    bottom: [{ key: "extra", items: ["ShareBtn"] }],
});

// section 전체 교체 — merge: false
player.layout(
    {
        bottom: [
            { items: ["PlayBtn", "TimeBtn"], wrapper: "Group" },
        ],
    },
    false,
);

옵션 / 상태 제어

메서드설명
changeOptions(nextOptions)플레이어 옵션을 동적으로 변경합니다.
changePlayMode(mode)재생 모드를 변경합니다. ("vod" | "live" | null)
tokenChange(token)재생 중 Secure Token을 교체합니다.
const player = new ncplayer("player", {
    playlist: [
        { file: "https://example.com/video/master.m3u8" },
    ],
    token: "token=st=...~exp=...~acl=...",
});

// 옵션 동적 변경
player.changeOptions({
    muted: true,
    autostart: false,
});

// 재생 모드 변경
player.changePlayMode("live");

// 재생 중 토큰 교체
player.tokenChange("token=st=...~exp=...~acl=...");

플레이리스트 제어

메서드설명
addNextSource(source)다음 영상을 플레이리스트에 추가합니다. (단일 또는 배열)
addPrevSource(source)이전 영상을 플레이리스트에 추가합니다. (단일 또는 배열)
const player = new ncplayer("player", {
    playlist: [
        { file: "https://example.com/video/master.m3u8" },
    ],
});

// 단일 영상 추가
player.addNextSource({
    file: "https://example.com/new_video.mp4",
    poster: "https://example.com/new_poster.jpg",
    description: { title: "새로운 영상" },
});

// 여러 영상 동시 추가
player.addPrevSource([
    { file: "https://example.com/video_1.mp4" },
    { file: "https://example.com/video_2.mp4" },
]);

이벤트

메서드설명
on(type, callback)이벤트 리스너를 등록합니다. 해제 함수를 반환합니다.
const player = new ncplayer("player", {
    playlist: [
        { file: "https://example.com/video/master.m3u8" },
    ],
});

// 이벤트 리스너 등록
var unsubscribe = player.on("play", function(event) {
    console.log("재생 시작", event);
});

// 모든 이벤트 수신
player.on("*", function(event) {
    console.log(event.type, event);
});

// 이벤트 리스너 해제
unsubscribe();

라이프사이클

메서드설명
destroy()플레이어 인스턴스를 제거합니다.

전체 HTML 예제

버튼을 통해 플레이어를 제어하는 완전한 예제입니다.

methods.html
<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>VPE Player Methods</title>
    <!-- hls.js / dash.js 를 VPE 스크립트보다 먼저 로드 -->
    <script src="https://player.vpe.naverncp.com/lib/js/hls.min.js"></script>
    <script src="https://player.vpe.naverncp.com/lib/js/dash.all.min.js"></script>
    <script src="https://player.vpe.naverncp.com/v2/ncplayer.js?access_key={YOUR_ACCESS_KEY}"></script>
</head>
<body>
    <div id="player" style="max-width: 800px; margin: 0 auto;"></div>

    <div style="margin-top: 16px; text-align: center;">
        <button onclick="player.play()">재생</button>
        <button onclick="player.pause()">일시정지</button>
        <button onclick="player.currentTime(30)">30초로 이동</button>
        <button onclick="player.volume(0.5)">볼륨 50%</button>
        <button onclick="player.mute()">음소거</button>
        <button onclick="player.fullscreen()">전체화면</button>
        <button onclick="player.pip()">PIP</button>
    </div>

    <script>
        const player = new ncplayer("player", {
            playlist: [
                {
                    file: "https://example.com/video/master.m3u8",
                    poster: "https://example.com/poster.jpg",
                },
            ],
            aspectRatio: "16/9",
        });
    </script>
</body>
</html>
UMD