이벤트
VPE 플레이어에서 발생하는 이벤트를 수신하여 커스텀 로직을 구현할 수 있습니다.
이벤트 리스닝
React에서는 onEvent Props를 사용합니다.
"use client";
import Hls from "hls.js";
import { VpePlayer, type PlayerHandle } from "@sgrsoft/vpe-react-sdk";
import { useRef, useEffect } from "react";
export default function PlayerPage() {
//이벤트 수신
const handleEvent = useCallback((evt: any) => {
switch (evt.type) {
case "ready":
console.log("ready", "플레이어가 로드되었습니다.");
break;
case "error":
break;
case "adStart":
console.log("adStart", "광고 시작");
break;
case "adComplete":
console.log("adComplete", "광고 완료");
break;
case "adSkip":
console.log("adSkip", "광고 스킵");
break;
case "adError":
console.log("adError", evt.data?.message);
break;
// NAM 광고 이벤트
case "adBreakStart":
console.log("adBreakStart", "NAM 광고 구간 시작");
break;
case "adBreakEnd":
console.log("adBreakEnd", "NAM 광고 구간 종료");
break;
case "adStarted":
console.log("adStarted", "NAM 광고 재생");
break;
case "adSkipped":
console.log("adSkipped", "NAM 광고 스킵");
break;
}
}, []);
const playerRef = useRef<PlayerHandle>(null);
return (
<VpePlayer
ref={playerRef}
hls={Hls}
accessKey="YOUR_ACCESS_KEY"
onEvent={handleEvent}
options={{
playlist: [{
file: "https://example.com/video/master.m3u8",
}],
}}
/>
);
}재생 이벤트
| 이벤트 | 설명 |
|---|---|
| ready | 플레이어가 준비되었을때 발생 |
| play | 재생이 시작될 때 발생 |
| pause | 일시정지될 때 발생 |
| ended | 영상이 끝까지 재생되었을 때 발생 |
| timeupdate | 재생 시간이 업데이트될 때 주기적으로 발생 |
| seeking | 탐색(시크)이 시작될 때 발생 |
| seeked | 탐색(시크)이 완료될 때 발생 |
| ratechange | 재생 속도가 변경될 때 발생 |
| volumechange | 볼륨이 변경될 때 발생 |
| loadedmetadata | 미디어 메타데이터가 로드되었을 때 발생 |
| canplay | 재생 가능한 상태가 되었을 때 발생 |
UI 이벤트
| 이벤트 | 설명 |
|---|---|
| fullscreenchange | 전체화면 상태가 변경될 때 발생 |
| controlbaractive | 컨트롤 바가 활성화될 때 발생 |
| controlbarhide | 컨트롤 바가 숨겨질 때 발생 |
에러 이벤트
| 이벤트 | 설명 |
|---|---|
| error | 재생 에러가 발생했을 때 발생 |
| hlserror | HLS 관련 에러가 발생했을 때 발생 |
| dasherror | DASH 관련 에러가 발생했을 때 발생 |
광고 이벤트 (IMA)
| 이벤트 | 설명 |
|---|---|
| adStart | 광고 재생이 시작될 때 발생 |
| adComplete | 광고 재생이 완료될 때 발생 |
| adSkip | 사용자가 광고를 스킵했을 때 발생 |
| adError | 광고 로드/재생 에러가 발생했을 때 발생 |
광고 이벤트 (NAM)
| 이벤트 | 설명 |
|---|---|
| adBreakStart | 광고 구간 시작 (콘텐츠 일시정지) |
| adBreakEnd | 광고 구간 종료 (콘텐츠 재생 재개) |
| adLoaded | 광고 로드 완료 |
| adStarted | 개별 광고 재생 시작 |
| adComplete | 개별 광고 재생 완료 |
| adSkipped | 사용자가 광고 스킵 |
| adError | 광고 로드/재생 에러 (event.data.message에 상세 메시지) |
UMD 이벤트 리스닝
<script>
const player = new ncplayer("player", {
playlist: [
{ file: "https://example.com/video/master.m3u8" },
],
});
player.on("play", function() {
console.log("재생 시작");
});
player.on("adStart", function() {
console.log("광고 시작");
});
player.on("adComplete", function() {
console.log("광고 완료");
});
player.on("adSkip", function() {
console.log("광고 스킵");
});
player.on("adError", function(e) {
console.log("광고 에러", e.data?.message);
});
// NAM 광고 이벤트
player.on("adBreakStart", function() {
console.log("NAM 광고 구간 시작");
});
player.on("adBreakEnd", function() {
console.log("NAM 광고 구간 종료");
});
player.on("error", function(e) {
console.error("에러 발생:", e);
});
</script>