에러 대응

Classic/VPC 환경에서 이용 가능합니다. 에러 대응에서는 스크립트 코드를 수정하여 Error 이벤트를 통해 재생 소스에 사용자 정의 메시지를 적용하는 방법을 설명합니다.

참고: Video Player Enhancement 서비스와 함께 Media Analytics 서비스를 이용하면 Media Analytics 관리 페이지에서 에러 코드를 손쉽게 확인할 수 있습니다.

JS Error 이벤트 안내

플레이어를 호출하는 함수에서 player.on("error", (err) => {}) 코드로 이벤트를 감지하여 에러 코드와 메시지를 호출할 수 있습니다.

참고: 에러 코드는 Video Player Enhancement 서비스에서 제공하는 에러 코드 목록으로 전달됩니다.
const player = new ncplayer("video", {
    playlist: [
        {
            file: "http://example.com/myVideo.mp4",
            poster: "http://example.com/myVideoThumb.png",
        },
    ],
});

// error 이벤트 데이터 구조:
// {
//     errorCode: string | null,     // 예: "E0001", "E0004"
//     errorMessage: string | null,  // 에러 설명
//     errorTitle: string | null,    // 에러 제목
// }

player.on("error", function(err) {
    var errorCode = err.errorCode;
    var errorMessage = err.errorMessage;
    var errorTitle = err.errorTitle;

    switch (errorCode) {
        case "E0001":
            console.log("E0001 - ACCESS DENIED");
            console.log(errorTitle, errorMessage);
            break;
        case "E0002":
            console.log("E0002 - NOT AUTHORIZED");
            console.log(errorTitle, errorMessage);
            break;
        case "E0003":
            console.log("E0003 - NETWORK ERROR");
            console.log(errorTitle, errorMessage);
            break;
        case "E0004":
            console.log("E0004 - CANNOT PLAY");
            console.log(errorTitle, errorMessage);
            break;
        case "E0005":
            console.log("E0005 - LICENSE IS INVALID");
            console.log(errorTitle, errorMessage);
            break;
        case "E0006":
            console.log("E0006 - LIMIT DENIED");
            console.log(errorTitle, errorMessage);
            break;
        default:
            break;
    }
});

에러 시 Retry 환경 설정

플레이어의 재시도 설정을 통해 플레이어가 오류를 응답하기 전 최대 재시도 횟수 및 최대 지연 시간 설정을 커스터마이징 할 수 있습니다.

참고:
플레이어 초기화 시 영상 재생 시도 추가: 기본값 최대 3회, 5초 간격
Live / VOD가 중단되었을 때 재생 시도 추가: 기본값 최대 3회, 5초 간격
const player = new ncplayer("video", {
    playlist: [
        {
            file: "https://CDN도메인/example.m3u8",
            poster: "https://CDN도메인/poster.jpg",
        },
    ],
    retry: {
        maxRetry: 10,    // 최대 재시도 횟수
        interval: 5000,  // 재시도 횟수 당 지연 시간 (ms)
    },
});
옵션타입기본값설명
retryObject-재시도 설정
retry.maxRetryInt3다시 시도 횟수
retry.intervalInt5000다시 시도 지연 시간 (ms)

에러 화면 재정의 (override)

기본으로 제공되는 에러 화면을 고객사가 원하는 코드로 변경하여 실행할 수 있습니다. 에러 화면을 재정의하면 마지막 재생 위치에서 정지(pause) 상태를 유지한 채 플레이어 오버레이를 통해 에러 화면을 구현할 수 있습니다.

// 동영상(MP4)
const player = new ncplayer("video", {
    playlist: [
        {
            file: "https://CDN도메인/example_video_01.mp4",
            poster: "https://CDN도메인/example_image_01.png",
        },
    ],
    override: {
        error: function(err) {
            console.log("player error:", err);
            // 고객사 에러 화면 기능 구현
            // 예: document.getElementById("error-overlay").style.display = "block";
        },
    },
});

에러 코드

Video Player Enhancement 서비스에서 제공하는 에러 코드 목록은 다음과 같습니다.

에러 코드에러 메시지설명
E0001ACCESS DENIED잘못된 접근입니다. 잘못된 옵션 값이 전달되는 경우 발생하며, 동영상 재생 불가
E0002NOT AUTHORIZED동영상을 재생할 권한이 없습니다. 잘못된 요청으로 플레이어 인증이 실패하는 경우 발생
E0003NETWORK ERROR네트워크 연결이 원활하지 않습니다. 네트워크 문제로 플레이어 인증이 실패하는 경우 발생
E0004CANNOT PLAY VIDEO동영상을 재생할 수 없습니다. 영상 재생에 실패하는 경우 발생
E0005LICENSE IS INVALID라이선스가 유효하지 않습니다. 플레이어 라이선스가 만료되었을 때 발생하며, 동영상 재생 불가
E0006LIMIT DENIED월 기본 제공 호출 건수를 초과하였습니다. 무료 플레이어의 월 제공량을 모두 소진한 경우 발생하며, 동영상 재생 불가

전체 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 - 에러 대응</title>
    <script src="https://player.vpe.naverncp.com/v2/ncplayer.js?access_key=YOUR_ACCESS_KEY"></script>
</head>
<body>
    <div id="video" style="max-width: 800px; margin: 0 auto;"></div>
    <div id="error-overlay" style="display:none; color:red; text-align:center; padding:20px;">
        <h2>재생 오류가 발생했습니다</h2>
        <p id="error-detail"></p>
    </div>

    <script>
        const player = new ncplayer("video", {
            playlist: [
                {
                    file: "https://CDN도메인/example_video_01.mp4",
                    poster: "https://CDN도메인/poster.jpg",
                },
            ],
            retry: {
                maxRetry: 5,
                interval: 3000,
            },
            override: {
                error: function(err) {
                    document.getElementById("error-overlay").style.display = "block";
                    document.getElementById("error-detail").textContent =
                        err.errorCode + " - " + err.errorMessage;
                },
            },
        });

        player.on("error", function(err) {
            console.log("에러 발생:", err.errorCode, err.errorMessage);
        });
    </script>
</body>
</html>
UMD