기본 사용법

React / Next.js 환경에서 VPE 플레이어를 사용하는 방법을 설명합니다.

React / Next.js

VpePlayer 컴포넌트를 import하고 필수 props를 전달합니다.

app/player/page.tsx
"use client";

import Hls from "hls.js";
import { VpePlayer, type PlayerHandle } from "@sgrsoft/vpe-react-sdk";
import { useRef } from "react";

export default function PlayerPage() {
    const playerRef = useRef<PlayerHandle>(null);

    return (
        <div style={{ maxWidth: "800px", margin: "0 auto" }}>
            <VpePlayer
                ref={playerRef}
                hls={Hls}
                accessKey="YOUR_ACCESS_KEY"
                options={{
                    playlist: [
                        {
                            file: "https://example.com/video/master.m3u8",
                            poster: "https://example.com/poster.jpg",
                            description: {
                                title: "영상 제목",
                                profile_name: "채널명",
                            },
                        },
                    ],
                    autostart: true,
                    muted: true,
                    aspectRatio: "16/9",
                }}
            />
        </div>
    );
}

필수 Props

Prop타입설명
hlstypeof Hlshls.js 모듈 (HLS 재생 시 필수)
accessKeystring네이버클라우드 Access Key
optionsPlayerOptions플레이어 옵션 객체

선택 Props

Prop타입설명
refRef<PlayerHandle>플레이어 제어 핸들 (메서드 호출용)
dashjstypeof dashjsdashjs 모듈 (DASH 재생 시)
layoutLayoutConfig커스텀 레이아웃 설정
platformstring플랫폼 구분 ("pub" 등)
hlsConfigRecord<string, unknown>hls.js 생성자에 그대로 전달되는 추가 설정 (SDK 기본값보다 우선 적용)
dashConfigRecord<string, unknown>dashjs updateSettings()에 그대로 전달되는 추가 설정

스트리밍 엔진 설정 (hlsConfig / dashConfig)

hlsConfig,dashConfig prop으로 버퍼링·ABR 등 스트리밍 엔진(hls.js / dashjs)의 세부 동작을 직접 조정할 수 있습니다. 두 값은 각 엔진에 그대로 전달(패스스루)되며, SDK 기본값보다 뒤에 병합되어 우선 적용됩니다.

  • hlsConfig: hls.js 생성자(new Hls(config))에 병합됩니다. 설정 가능한 키는 hls.js 공식 문서를 참고하세요.
  • dashConfig: dashjsplayer.updateSettings()initialize() 이전에 적용됩니다.
import Hls from "hls.js";
import dashjs from "dashjs";
import { VpePlayer } from "@sgrsoft/vpe-react-sdk";

export default function PlayerPage() {
    return (
        <VpePlayer
            hls={Hls}
            dashjs={dashjs}
            accessKey="YOUR_ACCESS_KEY"
            // hls.js 생성자에 전달되는 추가 설정 (HLS 재생 시)
            hlsConfig={{
                abrBandWidthUpFactor: 0.5,
                maxBufferLength: 60,
                capLevelToPlayerSize: true,
            }}
            // dashjs updateSettings()에 전달되는 추가 설정 (DASH 재생 시)
            dashConfig={{
                streaming: {
                    abr: {
                        autoSwitchBitrate: { video: true },
                    },
                },
            }}
            options={{
                playlist: [
                    {
                        file: "https://example.com/video/master.m3u8",
                    },
                ],
            }}
        />
    );
}

잘못된 설정값이 전달되어도 재생 자체는 중단되지 않도록 방어 처리되어 있으나, 엔진 동작에 직접 영향을 주므로 각 엔진 문서의 유효한 키/값을 확인하고 사용하세요.

레이아웃 커스텀

layout prop으로 플레이어 UI를 커스터마이징할 수 있습니다. 레이아웃은 pc, mobile, fullscreen 환경별로 독립 정의됩니다.

layout.json
{
    "pc": {
        "vod": {
            "order": ["top", "upper", "center", "lower", "bottom"],
            "top": [
                { "items": ["MetaDesc"] },
                { "wrapper": "Blank", "items": [], "align": "left" },
                { "items": ["ShareBtn"] }
            ],
            "center": [
                { "items": ["BigPlayBtn"], "align": "center" }
            ],
            "bottom": [
                { "items": ["ProgressBar"] },
                {
                    "items": ["PlayBtn", "VolumeBtn", "TimeDisplay"],
                    "align": "left"
                },
                {
                    "items": ["SettingBtn", "PIPBtn", "FullscreenBtn"],
                    "align": "right"
                }
            ]
        }
    }
}

레이아웃 JSON은 UI Editor에서 시각적으로 편집할 수도 있습니다.

React