V/G Controller

V/G Controller

V/G Controllerย 

Latest version 1.3.0

๊ฐœ์š”


Kollus VG Controller๋Š” Videogateway๋กœ ์ œ๊ณต๋˜๋Š” ๋ฏธ๋””์–ด์˜ ์ผ๋ถ€ ์ปจํŠธ๋กค์„ ๊ณ ๊ฐ์‚ฌ ์›น์‚ฌ์ดํŠธ ๋‚ด์—์„œ ๊ตฌํ˜„ ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์› ํ•˜๋Š” Javascript library์ž…๋‹ˆ๋‹ค. Kollus VG Controller๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํŠน์ง•์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

  • Videogateway์—์„œ ์ž๋™์œผ๋กœ ์‹คํ–‰๋˜๋Š” ํ”Œ๋ ˆ์ด์–ด์˜ ํƒ€์ž…์— ๊ด€๊ณ„์—†์ด ๋™์ผํ•œ ์ฝ”๋“œ๋กœ ์ œ์–ด ๊ฐ€๋Šฅ

  • ๊ฐ„๋‹จํ•œ ์„ค์น˜ + ์‰ฌ์šด ์‚ฌ์šฉ๋ฐฉ๋ฒ•

  • ํ”Œ๋ ˆ์ด์–ด์˜ ๊ฐ์ง€ ์‹คํ–‰์„ ๊ณ ๋ฏผํ•  ํ•„์š”๊ฐ€ ์—†์Œ

  • ์„œ๋“œํŒŒํ‹ฐ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ํ•„์š”์น˜ ์•Š์Œ

๋ฉ”์†Œ๋“œ์™€ ์ด๋ฒคํŠธ ๋ชฉ๋ก ์ด๋ฆ„ ์˜†์— ํ‘œ๊ธฐ๋˜๋Š” V3, V4 Player(1)ย ๋“ฑ์€ Player๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

์‹œ์ž‘ํ•˜๊ธฐ


VgControllerClient

(๊ณ ๊ฐ์‚ฌ html page์— ์‚ฝ์ž…)

์•„๋ž˜ ์˜ˆ์‹œ ์ฝ”๋“œ๋ฅผ ์˜์ƒ์ด ๋ณด์—ฌ์งˆ html page์— ์ ์šฉํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.ย ย 

... <script src="/path/to/vg-controller-client.1.1.16.min.js"></script> <script> window.onload = function () { try { var controller = new VgControllerClient({ target_window: document.getElementById('child').contentWindow, }); // ์—ฌ๊ธฐ์„œ๋ถ€ํ„ฐ ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ๋ฅผ ๋“ฑ๋กํ•˜๊ฑฐ๋‚˜, ์›นํŽ˜์ด์ง€ Element์— ๋ฉ”์†Œ๋“œ๋ฅผ bindํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. } catch (e) { // Videogateweay Controller Library๋Š” window.postMessage API๋ฅผ ์ด์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— // ํ•ด๋‹น ๊ธฐ๋Šฅ์„ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ์›น๋ธŒ๋ผ์šฐ์ ธ์—์„œ๋Š” ๋™์ž‘ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. // ์ด ๋ถ€๋ถ„์— ์ ์ ˆํ•œ fail-over ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ์ฃผ์‹ญ์‹œ์š”. console.error(e); } }; </script> <body> <iframe id="child" src="http://v.kr..."></iframe> </body> ...
  • VgControllerClient ์ƒ์„ฑ์‹œ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์ „๋‹ฌํ•˜๋Š” target_window์˜ ๊ฒฝ์šฐ ํ™ˆํŽ˜์ด์ง€์— ์ฒจ๋ถ€ํ•œ Kollus Videogateway iframe์˜ HTMLElement์— contentWindow ์†์„ฑ์„ ์ž…๋ ฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค

  • ๋ณธ ์Šคํฌ๋ฆฝํŠธ๋Š” window.postMessage API ๋ฅผ ์ด์šฉํ•˜์—ฌ Player์™€ ํ†ต์‹ ํ•˜๋ฏ€๋กœ, ํ•ด๋‹น ๊ธฐ๋Šฅ์„ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ์›น๋ธŒ๋ผ์šฐ์ ธ์— ์„œ๋Š” ๋™์ž‘ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

  • ์›นํŽ˜์ด์ง€ ๋‚ด์— ํ•˜๋‚˜ ์ด์ƒ์˜ iframe์„ embedํ•œ ๊ฒฝ์šฐ ์ œ์–ดํ•  iframe๋งˆ๋‹ค ์„œ๋กœ ๋‹ค๋ฅธ VgControllerClient ๋ฅผ ์ƒ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • ์ด์ „ ๋ฒ„์ „๊ณผ์˜ ํ˜ธํ™˜์„ฑ์„ ์œ„ํ•ด (v0.5์ดํ•˜) new VgControllerClient() ๋Œ€์‹  new Kollus.VideogatewayController() ๋ฅผ ์‚ฌ์šฉํ•ด๋„ ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

  • try-catch๋ฌธ์˜ Exception code list๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

code

message

description

code

message

description

-1

*

PostMessage API exception code

-99

player type is not defined

Player type์ด ์ •์˜๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

-99

player type must be one of v2, v3, v4 and flash

Player type์ด ์œ ํšจํ•œ ๊ฐ’์ด ์•„๋‹™๋‹ˆ๋‹ค.

-99

this browser does not support postMessage

๋ธŒ๋ผ์šฐ์ €๊ฐ€ PostMessage API๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ ๋‹ค

-99

listener is not callable

์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ๊ฐ€ ํ•จ์ˆ˜ํ˜•์ด ์•„๋‹™๋‹ˆ๋‹ค.

CDN


Vg-Controller Client Library๋ฅผ CDN์œผ๋กœ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€์žฅ ์ตœ์‹  ๋ฒ„์ „์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์‹œ๋ ค๋ฉด ์•„๋ž˜ ๋งํฌ๋ฅผ ์‚ฝ์ž…ํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค

https://file.kollus.com/vgcontroller/vg-controller-client.latest.min.js

์ด์ „ ๋ฒ„์ „์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์‹œ๋ ค๋ฉด latest ๋Œ€์‹  ๋ฒ„์ „๋ช…์œผ๋กœ ๋ณ€๊ฒฝํ•˜์—ฌ ํ˜ธ์ถœํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

https://file.kollus.com/vgcontroller/vg-controller-client.1.1.4.min.js

Integrity ์†์„ฑ์„ ์‚ฌ์šฉํ•˜๋ฉด VG-Controller Client Library์˜ ์•…์˜์ ์ธ ์Šคํฌ๋ฆฝํŠธ ๋ณ€์กฐ๋ฅผ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์Šคํฌ๋ฆฝํŠธ ํ˜ธ์ถœ์‹œ ๋ฒ„์ „์— ๋งž๋Š” Integrity ์†์„ฑ๊ฐ’์„ ์ถ”๊ฐ€ํ•ด ์ฃผ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

<script src="https://file.kollus.com/vgcontroller/vg-controller-client.1.2.3.min.js" integrity="sha256-esUCCL4RPYMS8AR+Sl3lNrFa5M+zgpt4Gb77qtz66OY=" crossorigin="anonymous"> </script>

๋ฒ„์ „๋ณ„ Integrity ์†์„ฑ๊ฐ’์€ ์—ฌ๊ธฐ๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.

์ด๋ฒคํŠธ ๋ฆฌ์Šค๋‹


ํ”Œ๋ ˆ์ด์–ด๋กœ๋ถ€ํ„ฐ ์ˆ˜์‹ ๋˜๋Š” ๊ฐ์ข… ์ด๋ฒคํŠธ ๋ฐœ์ƒ์‹œ ์‚ฌ์šฉ์ž๊ฐ€ ์ •์˜ํ•œ callback ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•˜๋„๋ก ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ(Event Listener)๋ฅผ ๋“ฑ๋กํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

controller.on('event_name', function(param) { // ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ });

ํ•˜๋‚˜์˜ ์ด๋ฒคํŠธ์— ํ•˜๋‚˜ ์ด์ƒ์˜ ๋ฆฌ์Šค๋„ˆ๋ฅผ ๋“ฑ๋กํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ์ด๋ฒคํŠธ ๋ฐœ์ƒ์‹œ์— ๋“ฑ๋ก๋œ ๋ชจ๋“  ๋ฆฌ์Šค๋„ˆ๊ฐ€ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค

controller.on('event_name', function(param) { // ์ฒซ๋ฒˆ์งธ ๋ฆฌ์Šค๋„ˆ }); controller.on('event_name', function(param) { // ๋‘๋ฒˆ์งธ ๋ฆฌ์Šค๋„ˆ }); // ์ด๋ฒคํŠธ ๋ฐœ์ƒ์‹œ ์ฒซ๋ฒˆ์งธ, ๋‘๋ฒˆ์งธ ๋ฆฌ์Šค๋„ˆ๊ฐ€ ๋ชจ๋‘ ์‹คํ–‰ // ๋‹ค๋งŒ, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ด๋ฒคํŠธ ๋ฃจํ”„์™€ callback ํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰๋˜๋Š” ๋ฐฉ์‹์— ์˜ํ•ด, ์ฒซ๋ฒˆ์งธ ๋ฆฌ์Šค๋„ˆ๊ฐ€ ๋ฐ˜๋“œ์‹œ ๋จผ์ € // ์‹คํ–‰๋œ๋‹ค๊ณ  ๋ณด์žฅํ•  ์ˆ˜ ์—†์œผ๋ฉฐ, ๋‘๋ฒˆ์งธ ๋ฆฌ์Šค๋„ˆ๊ฐ€ ์‹คํ–‰๋˜๋Š” ๊ฒƒ์ด ์ฒซ๋ฒˆ์งธ ๋ฆฌ์Šค๋„ˆ๊ฐ€ ์‹คํ–‰๋œ ๋’ค์ธ ๊ฒƒ๋„ ์•„๋‹™๋‹ˆ๋‹ค.

์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ๋ฅผ ๋“ฑ๋กํ•˜๋Š” ํ•จ์ˆ˜์ธ on ์€ ๋ฉ”์†Œ๋“œ ์ฒด์ด๋‹(Method chaining)์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

controller.on('event_name_1', function(param) { // ์ฒซ๋ฒˆ์งธ ๋ฆฌ์Šค๋„ˆ }).on('event_name_2', function(param) { // ๋‘๋ฒˆ์งธ ๋ฆฌ์Šค๋„ˆ });
  • ํ•˜๋‚˜ ์ด์ƒ์˜ ๋ฆฌ์Šค๋„ˆ๋ฅผ ๋“ฑ๋กํ•œ ๊ฒฝ์šฐ ์ด๋ฒคํŠธ ๋ฐœ์ƒ์‹œ์— ๋“ฑ๋ก๋œ ๋ชจ๋“  ๋ฆฌ์Šค๋„ˆ๊ฐ€ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.ย ๋‹ค๋งŒ, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ด๋ฒคํŠธ ๋ฃจํ”„์™€ callback ํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰๋˜๋Š” ๋ฐฉ์‹์— ์˜ํ•ด, ์‹คํ–‰ ์ˆœ์„œ๊ฐ€ ๋ฐ”๋€” ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋ฒคํŠธ ๋ชฉ๋กย 


์ด๋ฒคํŠธ ๋ชฉ๋กย 


loaded

ํ”Œ๋ ˆ์ด์–ด ๋กœ๋”ฉ์ด ์™„๋ฃŒ๋˜๋ฉด ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

v3, v4





ready

ํ”Œ๋ ˆ์ด์–ด ๋กœ๋”ฉ์ด ๋๋‚˜๊ณ  ์žฌ์ƒ ์ •๋ณด๋ฅผ ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ํš๋“ํ•˜์˜€์œผ๋ฉฐ, ์‹ค์ œ ์žฌ์ƒ์ค€๋น„๊ฐ€ ์™„๋ฃŒ๋œ ์‹œ์ ์ž…๋‹ˆ๋‹ค.

v3, v4





play

์žฌ์ƒ ์‹œ์ž‘์‹œ์— ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ดˆ๊ธฐ ์žฌ์ƒ ์‹œ์ž‘์„ ์ œ์™ธํ•˜๊ณ  ์ผ์‹œ ๋ฉˆ์ถค ์ƒํƒœ์—์„œ ๋‹ค์‹œ ์žฌ์ƒ์„ ์‹œ์ž‘ํ• ๋•Œ๋„ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

v3, v4





progress

์žฌ์ƒ์‹œ ๋งค์ดˆ๋งˆ๋‹ค ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

๋‹จ,ย  HTML5 Video Player์˜ ๊ตฌ์กฐ์ƒ progress ์ด๋ฒคํŠธ๊ฐ€ ์ •ํ™•ํ•˜๊ฒŒ 1์ดˆ๋งˆ๋‹ค ๋ฐœ์ƒํ•˜์ง€ ์•Š์„์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

(0.1์—์„œ ์ตœ๋Œ€ 0.5์ดˆ ๊ฐ€๋Ÿ‰ ์ฐจ์ด๊ฐ€ ๋‚  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.)ย progress ์ด๋ฒคํŠธ๋กœ ์ž‘์—…ํ•˜์‹ค ๊ฒฝ์šฐ ์ด ๋ถ€๋ถ„์„ ์œ ๋…ํ•˜์—ฌ ์ฃผ์‹ญ์‹œ์š”.

Parameters:

  • percentย Integerย ์ง„ํ–‰ ๋ฐฑ๋ถ„์œจ์ž…๋‹ˆ๋‹ค. ๊ฐ’์˜ ๋ฒ”์œ„๋Š” 0 <= percent <= 100 ์ž…๋‹ˆ๋‹ค.ย 

  • position Numberย ํ˜„์žฌ ์žฌ์ƒ์ค‘์ธ ์œ„์น˜์˜ ๊ฐ’์ž…๋‹ˆ๋‹ค. ์ดˆ๋‹จ์œ„์ž…๋‹ˆ๋‹ค.ย ย (์†Œ์ˆซ์  5์ž๋ฆฌ ๊นŒ์ง€)

  • duration Numberย ๋™์˜์ƒ์˜ ์ „์ฒด ์žฌ์ƒ ๊ธธ์ด์ž…๋‹ˆ๋‹ค. ์ดˆ๋‹จ์œ„์ž…๋‹ˆ๋‹ค. (์†Œ์ˆซ์  5์ž๋ฆฌ ๊นŒ์ง€)

v3, v4



controller.on('progress', function(percent, position, duration) { // ์ธ์ž์˜ ์ˆœ์„œ๋Š” ์œ„์™€๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. });



pause

์ผ์‹œ ์ •์ง€์‹œ์— ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

v3, v4





done

์žฌ์ƒ ์™„๋ฃŒ์‹œ์— ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์žฌ์ƒ ์™„๋ฃŒ๋Š” duration์˜ ๋๊นŒ์ง€ ๋ชจ๋‘ ์žฌ์ƒํ•œ ๊ฒฝ์šฐ๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

v3, v4





mutedย 

์Œ์†Œ๊ฑฐ ์ƒํƒœ๊ฐ€ ๋ณ€๊ฒฝ์‹œ ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค. (์Œ์†Œ๊ฑฐ์‹œ, ์Œ์†Œ๊ฑฐ ํ•ด์ œ์‹œ ๋ชจ๋‘ ๋ฐœ์ƒ)

๋‹ค๋งŒ, V2 Player์˜ ๊ฒฝ์šฐ ํ˜„์žฌ muted ์ด๋ฒคํŠธ๋ฅผ ์ œ๊ณตํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋Œ€์‹  ์Œ์†Œ๊ฑฐ๊ฐ€ ๋˜๋Š” ๊ฒฝ์šฐ volumechange ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒ๋˜๊ณ  ๋ณ€๊ฒฝ๋œ ์Œ๋Ÿ‰์„ 0์œผ๋กœ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

Parameters:

  • is_muted Boolean true๋ฉด ์Œ์†Œ๊ฑฐ, false๋ฉด ์Œ์†Œ๊ฑฐ ํ•ด์ œ์ž…๋‹ˆ๋‹ค.

v3, v4



controller.on('muted', function(is_muted) { // is_muted๊ฐ€ true๋ฉด ์Œ์†Œ๊ฑฐ, false๋ฉด ํ•ด์ œ์ž…๋‹ˆ๋‹ค. });



seeking

ํ”Œ๋ ˆ์ด ์‹œ์  ๋ณ€๊ฒฝ์‹œ ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค.

ย v4





seeked

ย ํ”Œ๋ ˆ์ด ์‹œ์  ๋ณ€๊ฒฝ์ด ๋๋‚ฌ์„ ๋•Œ ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค.

ย v4





seek_start

ํ”Œ๋ ˆ์ด ์‹œ์  ๋ณ€๊ฒฝ ์‹œ์ž‘์‹œ ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค

V4 V5

ย 



screenchange

์ „์ฒด, ์ผ๋ฐ˜ํ™”๋ฉด ๋ณ€๊ฒฝ์‹œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

ย screen ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” windowed, fullscreen 2๊ฐ€์ง€ ๋ฌธ์ž์—ด ๊ฐ€์šด๋ฐ ํ•˜๋‚˜๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.ย 



Parameters:

  • screen String windowed๋Š” ์ผ๋ฐ˜ํ™”๋ฉด, fullscreen์€ ์ „์ฒดํ™”๋ฉด์ž…๋‹ˆ๋‹ค.

v3, v4



controller.on('screenchange', function(screen) { // ... });



subtitle_load_done

์ž๋ง‰์˜ ๋กœ๋“œ๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค

ย 

ย 

volumechange

์Œ๋Ÿ‰ ๋ณ€๊ฒฝ์‹œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.



Parameters:

  • volume Integer๋ณ€๊ฒฝ๋œ ์Œ๋Ÿ‰์ž…๋‹ˆ๋‹ค. ๋ฒ”์œ„๋Š” 0 <= volume <= 100 ์ž…๋‹ˆ๋‹ค.

v3, v4





controller.on('volumechange', function(volume) { // volume์˜ ๋ฒ”์œ„๋Š” 0 <= volume <= 100 ์ž…๋‹ˆ๋‹ค. });



speedchangeย ย 

๋ฐฐ์† ๋ณ€๊ฒฝ์‹œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๋ฐฐ์† ์ตœ๋Œ€๊ฐ’์€ Player์˜ ์„ค์ •์— ๋”ฐ๋ผ ๋ฐ”๋€” ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.



Parameters:

  • speed String๋ณ€๊ฒฝ๋œ ๋ฐฐ์†์ž…๋‹ˆ๋‹ค. ๋ฒ”์œ„๋Š” 0.5 <= speed <= 4 ์ž…๋‹ˆ๋‹ค.

    • Javascript ์–ธ์–ด ํŠน์„ฑ์ƒ 2.0์€ 2๋กœ ํ‘œ๊ธฐ ๋˜๊ธฐ ๋•Œ๋ฌธ์—, Integerํ˜• ๋Œ€์‹ ์— Stringํ˜•์„ ์‚ฌ์šฉํ•ด ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

v3, v4



controller.on('speedchange', function(speed) { // speed์˜ ๋ฒ”์œ„๋Š” 0.5 <= speed <= 4 ์ž…๋‹ˆ๋‹ค. });



playbackrateschange

๋ฐฐ์† ๋‹จ์œ„๋ฅผ ์„ค์ •ํ•˜๋Š” ๋ฐฐ์†๊ฐ’ ๊ทธ๋ฃน ๋ณ€๊ฒฝ์‹œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.



Parameters:

  • playback_rates String๋ณ€๊ฒฝ๋œ ๋ฐฐ์†๊ฐ’ ๊ทธ๋ฃน์˜ ๋ฌธ์ž์—ด ์ž…๋‹ˆ๋‹ค.

    • ๋‹จ์ผ๋ฐฐ์—ด : ๋ฐฐ์†๊ฐ’ ๋ฉ”๋‰ด๊ฐ€ ํ•œ์ค„๋กœ ๋‚˜์—ด๋ฉ๋‹ˆ๋‹ค. ex) [1, 2, 3]

    • ์ด์ค‘๋ฐฐ์—ด : ๋ฐฐ์†๊ฐ’ ๋ฉ”๋‰ด๊ฐ€ ์—ฌ๋Ÿฌ์ค„๋กœ ๋‚˜์—ด๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ex) [[0.5, 1, 1.5, 2], 2]

v3, v4



controller.on('playbackrateschange', function(playback_rates) { // playback_rates๋Š” ๋ฐฐ์—ด์˜ ๋ฌธ์ž์—ด์ด๋ฉฐ, //๋‹จ์ผ๋ฐฐ์—ด ๋˜๋Š” ์ด์ค‘๋ฐฐ์—ด๋กœ ๋ฐ˜ํ™˜๋ฉ๋‹ˆ๋‹ค. });



videosettingchangeย 

๋น„๋””์˜ค ์†์„ฑ ๋ณ€๊ฒฝ์‹œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

๋น„๋””์˜ค ์†์„ฑ ๋ณ€๊ฒฝ ๊ธฐ๋Šฅ์€ V2 Player์—๋งŒ ์กด์žฌํ•˜๋Š” ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค. ๋‹ค๋ฅธ Player์—์„œ๋Š” ์ด๋ฒคํŠธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
๊ฐ ๊ฐ’์˜ ๋ฒ”์œ„๋Š” ๋ชจ๋‘ -50 <= value <= 50์˜ ๋ฒ”์œ„๋ฅผ ๊ฐ–์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ๋ณ„๋„๋กœ ์ง€์ •ํ•˜์ง€ ์•Š์•˜์„ ๊ฒฝ์šฐ ๊ธฐ๋ณธ๊ฐ’์€ 0์ž…
๋‹ˆ๋‹ค.



Parameters:

  • videosetting Objectbrightness(๋ฐ๊ธฐ), contrast(๋Œ€๋น„), saturation(์ฑ„๋„)๋ฅผ property๋กœ ๊ฐ–๋Š” object์ž…๋‹ˆ
    ๋‹ค.

v3



controller.on('videosettingchange', function(videosetting) { // videosetting ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” ๋‹ค์Œ์˜ ํ˜•ํƒœ๋กœ // ํ‘œ์‹œ๋˜๋Š” Object ํƒ€์ž…์ž…๋‹ˆ๋‹ค. // // { // "brightness": 0, // "contrast": 0, // "saturation": 0 // } });



jumpstepchange

ff, rw ๋ฉ”์†Œ๋“œ๋ฅผ ํ†ตํ•ด ์ด๋™ํ•  ์‹œ๊ฐ„๊ฐ’ ๋ณ€๊ฒฝ์‹œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.



Parameters:

  • jumpstep Integer๋ณ€๊ฒฝ๋œ ์ด๋™ํ•  ์‹œ๊ฐ„๊ฐ’์ž…๋‹ˆ๋‹ค. ์ดˆ๋‹จ์œ„์ž…๋‹ˆ๋‹ค.

v3, v4



controller.on('jumpstepchange', function(jumpstep) { // jumpstep์€ ์ดˆ๋‹จ์œ„์ž…๋‹ˆ๋‹ค. });



subtitlevisibilitychangeย 

์ž๋ง‰์˜ ํ™”๋ฉด์ถœ๋ ฅ ์ƒํƒœ๊ฐ€ ๋ณ€๊ฒฝ๋˜๋ฉด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.



Parameters:

  • visible Boolean์ž๋ง‰์˜ ํ™”๋ฉด์ถœ๋ ฅ ์—ฌ๋ถ€ ์ƒํƒœ์ž…๋‹ˆ๋‹ค



v3, v4





hlsfragchangeย 

hls์˜ frag(2)๊ฐ€ ๋ณ€๊ฒฝ๋˜๋ฉด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

v4



html5_video_supportedย 

V3, V4 Player์—์„œ๋งŒ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

Player๊ฐ€ ๋‚ด๋ถ€์—์„œ HTML5 Video ์žฌ์ƒ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ํŒ๋‹จํ•˜์—ฌ HTML5 Video Player๋ฅผ ๋กœ๋“œํ•  ๊ฒฝ์šฐ์—” true ๋ฅผ, ์ „์šฉ ํ”Œ๋ ˆ์ด์–ด๋ฅผ ์žฌ์ƒํ•ด์•ผ ํ•œ๋‹ค๊ณ  ํŒ๋‹จํ•  ๊ฒฝ์šฐ์—” false๋ฅผ ๋ฆฌํ„ดํ•ฉ๋‹ˆ๋‹ค. (http://caniuse.com/#feat=video ์ฐธ์กฐ)



Parameters:

  • html5_video_supported BooleanPlayer๊ฐ€ HTML5 Player๋กœ ๋กœ๋“œ๋  ๊ฒฝ์šฐ true, ์ „์šฉ ํ”Œ๋ ˆ์ด์–ด๋กœ ๋กœ๋“œ๋ 
    ๊ฒฝ์šฐ๋Š” false๊ฐ€ ๋ฆฌํ„ด๋ฉ๋‹ˆ๋‹ค.

v3, v4



error

Player๊ฐ€ ์žฌ์ƒ์˜ค๋ฅ˜๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒฝ์šฐ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.



Parameters:

  • error_code IntegerKollus Player ์—๋Ÿฌ ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค.

v3, v4



controller.on('error', function(error_code) { // ... });



device_orientation_changed

๋ชจ๋ฐ”์ผ ๋””๋ฐ”์ด์Šค์ธ ๊ฒฝ์šฐ ๊ฐ€๋กœ/์„ธ๋กœ ํšŒ์ „์‹œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.



Parameters:

  • orientation String์„ธ๋กœ : Portrait, ๊ฐ€๋กœ : Landscape

ย v4



hls_manifest_loaded

v4 player hls manifest ๊ฐ€ ๋กœ๋“œ๋  ์‹œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

ย 

ย 

Parameters:

  • data Object hls manifest data ๊ฐ์ฒด์ž…๋‹ˆ๋‹ค.

v4

ย 

dash_manifest_loaded

v4 player dash manifest ๊ฐ€ ๋กœ๋“œ๋  ์‹œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

ย 

ย 

Parameters:

  • data Object dash manifest data ๊ฐ์ฒด์ž…๋‹ˆ๋‹ค.

v4

ย 

bitrate_data_loaded

Hls/Dash manifest๊ฐ€ ๋กœ๋“œ ๋œ ํ›„ Bitrate ๋ฐ์ดํ„ฐ๋ฅผ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•œ ํ›„ ๋ฐฐ์—ด์— ๋‹ด์•„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

Parameters:

  • bitrate_data array Hls/Dash bitrate data object๋ฅผ ํฌํ•จํ•˜๋Š” ๋ฐฐ์—ด ๊ฐ์ฒด์ž…๋‹ˆ๋‹ค.

v4

controller.on('bitrate_data_loaded', function(bitrate_data) { // bitrate_data๋Š” Bitrate Data Object๋ฅผ ํฌํ•จํ•˜๋Š” ๋ฐฐ์—ด๊ฐ์ฒด ์ž…๋‹ˆ๋‹ค. // // [ // { // width: <int>, // height: <int>, // bitrate: <int> // } // ] });

bookmark_change

v3 ๋ถ๋งˆํฌ ์ถ”๊ฐ€, ์—…๋ฐ์ดํŠธ, ์‚ญ์ œ์‹œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

Parameters:

  • data Stringย ๋ถ๋งˆํฌ ๋ณ€๊ฒฝ ์ƒํƒœ์ž…๋‹ˆ๋‹ค.

V3

controller.on('bookmark_change', function(data) { // ์ถ”๊ฐ€ add // ํŽธ์ง‘ update // ์‚ญ์ œ delete });

waiting

์žฌ์ƒ์ค‘ waiting ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒ๋  ๋•Œ 1์ดˆ๋งˆ๋‹ค ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค

Parameters:

  • timeInteger ์—ฐ์†์œผ๋กœ ๋ฐœ์ƒ๋œ waiting ์‹œ๊ฐ„๊ฐ’์ž…๋‹ˆ๋‹ค. (๋‹จ์œ„ : ์ดˆ)

V4

ย 

user_active_changed

ํ”Œ๋ ˆ์ด์–ด ์ปจํŠธ๋กค๋ฐ”๊ฐ€ ํ™œ์„ฑ/๋น„ํ™œ์„ฑํ™” ๋  ๋•Œ ์ด๋ฒคํŠธ๋ฅผ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

Parameters:

  • activeBoolean ํ”Œ๋ ˆ์ด์–ด ์ปจํŠธ๋กค๋ฐ” ํ™œ์„ฑ/๋น„ํ™œ์„ฑ ์—ฌ๋ถ€ ์ž…๋‹ˆ๋‹ค.

V4

ย 

next_episode_auto_change

๋‹ค์Œ ํšŒ ์ž๋™์žฌ์ƒ ์ƒํƒœ๊ฐ€ ๋ณ€๊ฒฝ๋˜๋ฉด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

next_episode_change ์ด๋ฒคํŠธ๋Š” deprecated ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

v3/v4์—์„œ๋Š” ๊ณ„์† ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‚˜ ๊ถŒ์žฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

Parameters:

  • valueBoolean true๋ฉด ๋‹ค์Œ ํšŒ ์ž๋™์žฌ์ƒ ์‚ฌ์šฉ, false๋ฉด ๋‹ค์Œ ํšŒ ์ž๋™์žฌ์ƒ ์‚ฌ์šฉ ์•ˆํ•จ.

V3, V4, V5

ย 

next_episode_requested

๋‹ค์Œ ํšŒ์ฐจ Callback API๊ฐ€ ํ˜ธ์ถœ๋˜๋ฉด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

Parameters:

  • valueBoolean true๋ฉด callback API ์ •์ƒ ํ˜ธ์ถœ, false๋ฉด callback API ํ˜ธ์ถœ ์‹คํŒจ ๋˜๋Š” ์—๋Ÿฌ์ž…๋‹ˆ๋‹ค.

V3, V4, V5

ย 

picture_in_picture_entered

PIP ๋ชจ๋“œ ์ง„์ž…์‹œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

*๋ธŒ๋ผ์šฐ์ €์—์„œ ์ œ๊ณตํ•˜๋Š” ์ž์ฒด PIP ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ์—๋Š” ๋ฐœ์ƒํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. (ex: FireFox ๋ธŒ๋ผ์šฐ์ €์˜ PIP ๋ฒ„ํŠผ ํด๋ฆญ)

V3 V4 V5

ย 

picture_in_picture_leaved

PIP ๋ชจ๋“œ ์ข…๋ฃŒ์‹œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

*๋ธŒ๋ผ์šฐ์ €์—์„œ ์ œ๊ณตํ•˜๋Š” ์ž์ฒด PIP ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ์—๋Š” ๋ฐœ์ƒํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. (ex: FireFox ๋ธŒ๋ผ์šฐ์ €์˜ PIP ๋ฒ„ํŠผ ํด๋ฆญ

V3 V4 V5

ย 

๋ฉ”์†Œ๋“œ ์‚ฌ์šฉํ•˜๊ธฐ


Videogateway Controller Library๊ฐ€ ์ง€์›ํ•˜๋Š” ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค.

controller.play();

์ด๊ฒŒ ์ „๋ถ€์ž…๋‹ˆ๋‹ค. ๊ฒฝ์šฐ์— ๋”ฐ๋ผ์„œ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์š”๊ตฌํ•˜๋Š” ๋ฉ”์†Œ๋“œ๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

controller.set_volume(90);

๋ฉ”์†Œ๋“œ ๋ชฉ๋ก


์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ ๋ฉ”์†Œ๋“œ




์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ ๋ฉ”์†Œ๋“œ




on (event_name, callback_function)

์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ๋ฅผ ๋“ฑ๋กํ•ฉ๋‹ˆ๋‹ค.

Parameters:

  • event_nameย Stringcallback function์„ bindํ•  ์ด๋ฒคํŠธ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.

  • callback_functionย function์ด๋ฒคํŠธ ๋ฐœ์ƒ์‹œ ์‹คํ–‰๋  callback function์ž…๋‹ˆ๋‹ค.

  • ๊ฒฝ์šฐ์— ๋”ฐ๋ผ์„œ callback function์—๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ์ฃผ์–ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Return:

  • Object VG-Controller Client ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

v3, v4



controller.on('event_name', function(param) { // event_name์— ํ•ด๋‹นํ•˜๋Š” ์ด๋ฒคํŠธ ๋ฐœ์ƒ์‹œ, ๋‘๋ฒˆ์งธ ์ธ์ž์ธ callback function ์‹คํ–‰ });



off(event_name)

๋“ฑ๋ก๋œ ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

Parameters:

  • event_name Stringย callback function์œผ๋กœ bind๋œ ์ด๋ฒคํŠธ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.

Return:

  • Objectย VG-Controller Client ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

v3, v4



controller.off('event_name');



์žฌ์ƒ ๋ฉ”์†Œ๋“œย 






์žฌ์ƒ ๋ฉ”์†Œ๋“œย 






get_progress()ย 

Copyright ยฉ CATENOID, lnc. All Rights Reserved.
E-mail. support@catenoid.net | Tel. 1544-4367