Web Player Controller
Web Player Controller(구 VG Controller)는 고객사의 웹사이트에 iframe으로 삽입된 Kollus 플레이어와 통신하여,
재생 상태를 제어하거나 실시간 이벤트를 수신할 수 있게 해주는 JavaScript 라이브러리입니다.
주요 특징
- 통합 제어: 플레이어 종류와 관계없이 단일 규격으로 제어 가능합니다.
- 독립적 구동: 별도의 외부 라이브러리 의존성 없이 독립적으로 동작합니다.
- 이벤트 기반 구조: 메서드 호출 및 실시간 이벤트 리스너 구조를 지원합니다.
용어 정의
이 문서에서 사용하는 주요 기술 용어와 플레이어 표기에 대한 정의입니다. (참고: Kollus 플레이어 종류)
| 용어 | 설명 |
|---|---|
| 비디오 게이트웨이 | 시청자 요청에 따라 재생 데이터 및 인증 정보를 전달하는 서버 |
| 플레이어 ID | Kollus 플레이어 고유 ID |
| 하드웨어 ID | Windows 환경 등 식별 가능한 값이 존재하는 경우 제공되는 하드웨어 고유 ID |
| HLS Fragment | HLS(HTTP Live Streaming) 프로토콜 기반 재생 시 전체 영상을 분할한 최소 단위의 미디어 세그먼트 파일 |
| v3 | HTML5 Player for PC (Hybrid): Microsoft Edge 또는 Chrome 45 이상에서 암호화 콘텐츠 재생 시 적용되는 하이브리드 HTML5 플레이어 |
| v4 | HTML5 Player for All: 비암호화 콘텐츠 전용 비설치형 HTML5 플레이어 |
| v5 | Web Player: 설치형과 비설치형의 장점을 결합한 차세대 통합 웹 플레이어 |
라이브러리 설치 및 초기화
클라이언트 스크립트를 로드한 후, 제어 대상(iframe)을 지정하여 인스턴스를 생성합니다.
기본 구현 예제
<script src="https://file.kollus.com/wpcontroller/web-player-controller-client.latest.min.js"></script>
<script>
window.onload = function () {
try {
var controller = new WebPlayerControllerClient({
target_window: document.getElementById('child').contentWindow,
});
// Register event listeners and call methods
} catch (e) {
console.error(e);
}
};
</script>
<body>
<iframe id="child" src="https://v.kr.kollus.com/{MEDIA_CONTENT_KEY}..."></iframe>
</body>
주의사항
- 대상 지정:
target_window속성에는 반드시iframe요소의contentWindow객체를 전달해야 합니다. - 브라우저 호환성: 이 라이브러리는
window.postMessageAPI를 사용하여 통신합니다. 해당 API를 지원하지 않는 브라우저에서는 작동이 제한됩니다. - 다중 플레이어 제어: 페이지 내 여러 개의 플레이어(
iframe)가 존재할 경우, 각iframeID별로 개별 인스턴스를 생 성해야 합니다.
예외 코드
초기화 및 통신 과정에서 발생할 수 있는 에러 코드입니다.
| 코드 | 메시지 | 설명 |
|---|---|---|
-99 | This browser does not support postMessage API | postMessage API를 지원하지 않는 브라우저 |
-98 | Player type must be one of v2, v3, v4 and v5 | 유효하지 않은 플레이어 유형 (v2, v3, v4, v5만 지원) |
-97 | Event listener is not callable | 호출할 수 없는 이벤트 리스너 (유효한 함수가 아님) |
-96 | Target window is not found | 대상 Window 객체를 찾을 수 없음 |
-95 | Custom skin is not supported | 커스텀 스킨 미지원 |
-1 | * | 기타 PostMessage API 예외 |
CDN 경로
Web Player Controller는 CDN을 통해 제공됩니다.
경로 변경 안내
기존 'VG Controller'가 'Web Player Controller'로 명칭이 변경되었습니다. 기존 경로는 계속 유지되나 신규 기능 업데이트가 제한되므로, 지속적인 최신 기능 지원을 위해 신규 경로 사용을 권장합니다.
- 기존 경로:
https://file.kollus.com/vgcontroller/vg-controller-client.{version}.min.js - 신규 경로:
https://file.kollus.com/wpcontroller/web-player-controller-client.{version}.min.js
최신 버전 자동 적용
<script src="https://file.kollus.com/wpcontroller/web-player-controller-client.latest.min.js"></script>
특정 버전 고정
<script src="https://file.kollus.com/wpcontroller/web-player-controller-client.{version}.min.js"></script>
보안 강화 (SRI 적용)
라이브러리 변조 방지를 위한 SRI(Subresource Integrity) 속성 사용을 권장합니다.
<script src="https://file.kollus.com/wpcontroller/web-player-controller-client.{version}.min.js"
integrity="sha256-esUCCL4RPYMS8AR+Sl3lNrFa5M+zgpt4Gb77qtz66OY="
crossorigin="anonymous">
</script>
버전별 Integrity Code
| 버전 | Integrity Code |
|---|---|
| 3.0.7 | sha384-s4QrCGcyFWEQmJsr0iK1A3HSjah8VE8Zq48k0jxHHUFOCsshRFRT1kNgj/xY/QPO |
| 3.0.6 | sha384-GdgPx9dCVTR5LL/T/CRoUPK1Af8Ss0uuHrG9m8A9ZjfwvgOBP2Hn0FpJOpbKxc2y |
| 3.0.5 | sha384-r4w31weNrojq8zcLil+4GUls/WL09DTxjgrTyBNz1D8lctVLId2QGiTrh1jq3AuK |
| 3.0.4 | sha384-XReEw9S0i2G9sfZyY3GOzLxC4XVfupJ3coBxfyT6rW7uowVbox9jddVW3e4HPdfI |
| 3.0.3 | sha384-vmOxuvAuxL9FhXfuWUtWy8+Bza8yMfKzM2YZd9nl+IBfO402BQqv7r9L7rzyCg3J |
| 3.0.2 | sha384-JSsUl7m8gxMpuk9IhIoILT6hHINhUzOK1/fKQmMLczpK8ad0iAlz53sTVJxG4ZEQ |
| 3.0.1 | sha384-TfZVDcnfT4uqCCeXU1MAM3L+8QhlduK94+2ukm5/TU8SmFfJusmzSFr+eW1nNzx5 |
| 3.0.0 | sha384-Zu3WwunWVyaqnMrkKBjhgXL5dYyHK4U6XrtUvRVkLdXBSBOJrOw6/EGrsB9Yaw57 |
| 2.0.2 | sha384-rD/iy3kIQHyXISy6nUBDw+m9ITNCXEiCNVO+6xGTuAKhSBRaCloGhKRJU9F14PhW |
| 2.0.1 | sha384-90u5dxpIgg4TvsndT8r1j54hjn302/IRkwzAeEQDq3zeWezi1VVjHGXyS4MBLbuC |
| 2.0.0 | sha384-aifzvq3KnpoCh/8DaG5t/PreNEXgAUUOsSuOsL0MHO6ZYvKSPkWpfRXbM3mB62Qx |
| 1.6.2 | sha256-0PBHq7Y0DcK/F1PGmAybxZh1NLL5AP89//qiSsTaR84= |
| 1.6.1 | sha256-CyKubDJ/UhR0QZbNpapLJ+eb3cxgS1Q9xUe0YUu3Yzs= |
| 1.6.0 | sha256-D+uxBOAbz5FeHAlzHxIb6pZm0OH2POTSJM8q7lVIAvw= |
| 1.5.1 | sha256-8X2N8jt72DqHSjlXad5eiArLfGXP8Br6W2CukrzzT/o= |
| 1.5.0 | sha256-bP2RqUMWigIFnYO5jpgwS9i+yrXRqsyMKOT34TEQSgc= |
| 1.4.2 | sha256-0jaAeov9h/kDevNySYTfIs3gd3uwqdR5KGF05kEtN30= |
| 1.4.1 | sha256-VVBBfWTrTqxPWkhAdCqrfkmawZyX0pmVEN5Ao1fK6yI= |
| 1.4.0 | sha256-aVGw8cCTLjL4ommgpWzXY/ZdNoxnIVkQOpyFkBF9hvg= |
| 1.3.0 | sha256-KEzr9IDpxMYIPheF9clyiVrwfXCOrahMu9ZRAS1nyTc= |
| 1.2.8 | sha256-QsoI2nF9ArX728ZciKU5W58AAqm3tTJs2qPVVq1rw2k= |
| 1.2.7 | sha256-GrSA/4PPdqMAlJ1+yU6kNyLUKSkI/yao8qB/CdpgHLg= |
| 1.2.6 | sha256-p7sZuwAm+snPLJcKXhM19bcJAFblc/N7FIr+KbLOyiM= |
| 1.2.5 | sha256-8H84AFVTk2ecP6BvSwDZwKdb+wax7eCODMabRjtYFG4= |
| 1.2.4 | sha256-byGt/vmYwvCJ5JSUTUKYSM3NJvTCAkwAcQjRPYA7OfU= |
| 1.2.3 | sha256-gELbkblxei35tOlrZxsBGTxjErybUM8dd7ToRpw9AH4= |
| 1.2.2 | sha256-ZqrlMRldpWxcvsbTmjJ0EbUnpvRPBOY2Y26lGrF8p5g= |
| 1.2.1 | sha256-QDMKykvp9W0VqeIcE8Z66aDga51Bil4dbKyu+xhVYU8= |
| 1.1.19 | sha256-a0JNjidB76X3hqapRctQlBEYT7UplG6rSTYdeORsoo4= |
| 1.1.18 | sha256-dQ+ubgLE/ZCuAF3gsq4aiEuXwIPtmMgFKho0VfMg618= |
| 1.1.17 | sha256-7BYchZl3hCp8pAmQWyvtrddOiSq6jiEV/3rigiHh2Hc= |
| 1.1.16 | sha256-sSwregT7/iEaiS3SWkUw2n+ifhAJaC9z1SUhxM4iA6A= |
| 1.1.15 | sha256-rXuiAt3HjeCdCoTPCdNnud6tXyM0QnFoG4wVohJX/vo= |
| 1.1.14 | sha256-gWFSHnUUnRrD9uI+jupozk4UaYI+rTNrutx2DoICd9Q= |
| 1.1.13 | sha256-5O+p4Fj23xbBoe1uiVqYWaLo7m423e8E3eJPLs7ZXac= |
| 1.1.12 | sha256-xeXyA4xBrv11fpQ4OooLjlh/wA+lMW7fv8LQ3InbZt0= |
| 1.1.11 | sha256-cqT+zCkG9IrFD5YBYgW/2uryxmX9xfjBArGvE7XxEGU= |
| 1.1.10 | sha256-ArDmq7qhhyH1jPcmp9AceymlnmdzL/fcLuj+7Cd9qGA= |
| 1.1.9 | sha256-gWFSHnUUnRrD9uI+jupozk4UaYI+rTNrutx2DoICd9Q= |
| 1.1.8 | sha256-1qLSiIaxaFInegLeM4YYFvNjkfS1ljnTkeLIVB4N9yA= |
| 1.1.7 | sha256-h3FJeZn9qzc36yGdCexZWCR00PYain1kA8YxOo1RYdE= |
| 1.1.6 | sha256-V6e7g4znlH2R6mS4iZG+ICEEqUuzT2I0WQebNKZapIs= |
| 1.1.5 | sha256-ylu1Lig3obBjhaxhPGokQ218NYrOMtGTSF98cC3wuJM= |
| 1.1.4 | sha256-YjHHosJQBjbhyZR0+3fDAc5YAU0f6fOcOzK5fWuh/vM= |
| 1.1.3 | sha256-imuCUkIbY1leNcPL4k9Jj06Nsl5zeG7qG7A2qsxNzY8= |
| 1.1.2 | sha256-OyniGO0Qw8YtUR1Lc1jquxyzd2E2W8XlhwWV2lSkD9w= |
| 1.1.1 | sha256-KYhE+CIgE9hl1e+AO7wVv25P3ZHjkhfw1u+UxOmcu8w= |
| 1.1.0 | sha256-U9z4sQc8f3gU3EU8z17mib/XsZNAQTPJfNiv1ZSy708= |
| 1.0.6 | sha256-Lraa1NkO1eo0APSSCyEkHtfhK7PP8U4mG8JTgcOpdkg= |
| 1.0.5 | sha256-8pO9uPazQtQ5RmZuzI053S3siu1Zi73nLPHbN0yCUso= |
| 1.0.4 | sha256-ki4kmvmPXsvtI8VKngskOtm9rxOlTKHxD8NJQjnYJzI= |
| 1.0.3 | sha256-M27rCu4/1FrzE9IabhMXQB3+bL5lzgBDg7gt6SZo1OI= |
| 1.0.2 | sha256-AAMmt+wOnoGhdBmrvEQP/TRRv40zYfxtvx9M3BrATZA= |