플레이어 iframe API

iframeAPI는 아래와 같이 세팅하여 사용하시면 됩니다.

제공된 js 파일을 import 합니다.

<script src=”//play.acs.wecandeo.com/html/utils/iframeAPI.js”></script>

Setup

NameDescription
new smIframeAPIAPI 객체를 아래와 같이 생성합니다.

var ifrm = document.getElementById(‘iframe element id’);
contents = ifrm.contentWindow || ifrm.contentDocument;
var api = new smIframeAPI(contents);

# 다중 플레이어 세팅 샘플코드 보기
api.setName(‘iframe element name_1’);

플레이어 이벤트에 대한 callBack 함수 등록 Event 참고
onEvent (smIframeEvent.REMOVE, callback)Web Page에서 플레이어를 제거 시 콜백 함수가 실행됩니다.
onEvent (smIframeEvent.READY, callback)플레이어 준비 완료 시 콜백 함수가 실행됩니다.
destroy()onEvent로 등록된 모든 이벤트가 해제됩니다.

Playback

NameDescription
getState()플레이어 상태 값이 반환됩니다.
Returns String
- VALUE : idle , playing , pause , buffering , complete
play()영상 재생을 시작합니다.
pause()영상 일시정지가 됩니다.
stop()영상 재생을 멈추고 Idle 화면으로 전환합니다.
setPlaybackRate (value)영상 재생 속도를 변경합니다.
getPlaybackRate()영상 재생 속도를 반환합니다.
onEvent (smIframeEvent.PLAY, callback)영상이 재생되면 콜백 함수가 실행됩니다.
onEvent (smIframeEvent.PAUSE, callback)영상이 일시정지되면 콜백 함수가 실행됩니다.
onEvent (smIframeEvent.BUFFERING, callback)영상 재생 중 버퍼링 시 콜백 함수가 실행됩니다.
onEvent (smIframeEvent.IDLE, callback)플레이어가 초기화면으로 전환 될 때 콜백 함수가 실행됩니다.
onEvent (smIframeEvent.COMPLETE, callback)영상 재생이 완료 되면 콜백 함수가 실행됩니다.
onEvent (smIframeEvent.ERROR, callback)플레이어 오류 발생 시 콜백 함수가 실행됩니다.
onEvent (smIframeEvent.VIDEO_RATE, callback)영상 재생 속도가 변경 되면 콜백 함수가 실행됩니다.
onEvent (smIframeEvent.CONTROLS, callback)플레이어 컨트롤 바 노출 상태가 변경되면 콜백 함수가 실행됩니다.
Return : true or false

Seek

NameDescription
onEvent (smIframeEvent.SEEK, callback)영상 재생 위치 변경 시 콜백 함수가 실행됩니다.
Returns Object
- seeking : Boolean
- time : Number
setPosition (value)영상 재생 위치를 변경합니다.
getPosition()현재 재생 시간이 반환됩니다.
Returns Number
getDuration()영상 전체 시간이 반환됩니다.
Returns Number
seekEnable (value)영상 구간 이동 가능 여부를 제어합니다. (true/false)
onEvent (smIframeEvent.TIME, callback)초당 10번의 이벤트가 발생됩니다.
Returns Object
- position : Number
- duration : Number

Volume

NameDescription
setMuted (value)음소거 상태를 변경합니다. (true/false)
getMuted()음소거 상태가 반환됩니다.
Returns Boolean
setVolume (value)볼륨 값을 변경합니다. (0 ~ 100)
getVolume()볼륨 값이 반환됩니다.
Returns Number
- VALUE : (0 ~ 100)
onEvent (smIframeEvent.VOLUME, callback)볼륨 변경 시 콜백 함수가 실행됩니다.
Returns Object
- volume : Number
- muted : Boolean

Resize

NameDescription
onEvent (smIframeEvent.RESIZE, callback)플레이어 사이즈 변경 시 콜백 함수가 실행됩니다.
Returns Object
- width : Int
- height : Int
onEvent (smIframeEvent.FULLSCREEN, callback)플레이어 화면이 전체화면 or 기본화면 으로 전환 될 때 콜백 함수가 실행됩니다.
Returns Boolean
setFullscreen(value)전체화면 상태를 변경 합니다. (true/false)

※ 단, 특정 OS 또는 브라우저에서 사용자의 동작(또는 제스처)를 판단하는 기준에 따라 적용되지 않을 수 있습니다.
이 경우 함수 호출 시 ERROR로 처리될 수 있으며 사용자 동작에 의해서만 전체화면이 전환 됩니다
(전체화면 해제는 사용자의 선택이 아니어도 전환 됩니다.)
getFullscreen()전체화면에 대한 상태 값이 반환됩니다.
Returns Boolean
getWidth()플레이어 폭 값이 반환됩니다.
Returns Number
getHeight()플레이어 높이 값이 반환됩니다.
Returns Number

Caption

NameDescription
onEvent (smIframeEvent.CAPTION, callback)영상 로드 시 등록된 자막 리스트와 함께 콜백 함수가 실행됩니다.
Returns Array
[
Object{
- code : “ko”
- default : true
- format : “VTT”
- label : “한국어”
- url : “caption url”
- index : 2 (int)
}
]
onEvent (smIframeEvent.CAPTION_CHANGE, callback)플레이어 자막 변경 시 콜백 함수가 실행됩니다.
Returns Object
- label : “한국어”
- index : 2
setCaption (value)노출중인 자막을 변경합니다. (index : int)

Playtime

NameDescription
getLastPlaytime()최종 재생시간 조회
Returns Number (초)

Event

NameDescription
onEvent (type, callback)플레이어 이벤트 callBack 함수 등록
e.g., api.onEvent( smIframeEvent.VIDEO_PLAY , function(){
// 영상 재생이 시작되었습니다.
});
offEvent (type)onEvent로 등록 된 플레이어 이벤트 제거
e.g., api.offEvent( smIframeEvent.VIDEO_PLAY );

CuePoint

NameDescription
onEvent (smIframeEvent.CUE_POINT_START, callback)큐포인트 노출이 시작되면 콜백 함수가 실행됩니다.
Returns Object
- type : String
- format : String ( txt, img )
- video_id : Number
- package_id : Number
- cpid : Number
- start_duration : Number
- end_duration : Number
- title : String
- content : String
- link : String
onEvent (smIframeEvent.CUE_POINT_CLICK, callback)큐포인트 클릭 시 콜백 함수가 실행됩니다.
Returns Object
- type : String
- format : String ( txt, img )
- video_id : Number
- package_id : Number
- cpid : Number
- start_duration : Number
- end_duration : Number
- title : String
- content : String
- link : String

smIframeEvent (Event Type)

NameDescription
IDLE대기 화면 (Playback stop() 실행시 IDLE로 전환)
READY재생 준비 완료
PLAY재생 시작
PAUSE일시 정지
BUFFERING버퍼링
COMPLETE재생 완료
SEEK구간 이동 시작(true), 구간 이동 완료(false)
VOLUME볼륨 변경
FULLSCREEN전체화면 모드 전환
TIME재생 시간
RESIZE플레이어 사이즈 변경
REMOVE플레이어 삭제
ERROR플레이어 에러
CUE_POINT_START큐포인트 노출 시작
CUE_POINT_CLICK큐포인트 클릭
VIDEO_RATE재생 속도 변경
CONTROLS컨트롤 바 노출 여부

setRecommand

NameDescription
setRecommand(Object)입력받은 Object 데이터를 영상 종료 후 화면에 표시합니다.

e.g., Object = {}
Object.type = ‘String’( ‘type1’ or ‘type2’ or ‘type3’ or ‘type4’ )
Object.items = [itemObj{} , itemObj {}]

itemObj.title = ‘String’( ‘video title’ )
itemObj.duration = Number ( 20(sec) )
itemObj.thumb = ‘String’( ‘image URL’ )
itemObj.landingURL = ‘String’( ‘page URL’ )

Sample Code

<script src= "//play.acs.wecandeo.com/html/utils/iframeAPI.js"></script>
<script>
    var iframeAPI;
    window.onload = function () {
        var iframe = document.getElementById('player');
        var contents = iframe.contentWindow || iframe.contentDocument;
        iframeAPI = new smIframeAPI(contents);
      
        // iframeAPI.play();  // 영상 재생 시 사용
        // iframeAPI.pause(); // 영상 일시정지 시 사용
      
        iframeAPI.onEvent(smIframeEvent.PLAY, function () { // 영상 재생 시 실행
            console.log('play');
        });
        iframeAPI.onEvent(smIframeEvent.PAUSE, function () { // 영상 일지정지 이벤트
            console.log('pause');
        });
        iframeAPI.onEvent(smIframeEvent.CUE_POINT_START, function (data) { // 큐포인트 노출 이벤트
            console.log('cue point start', data);
        });
        iframeAPI.onEvent(smIframeEvent.CUE_POINT_CLICK, function (data) { // 큐포인트 클릭 이벤트
            console.log('cue point click', data);
        });
        
        iframeAPI.onEvent(smIframeEvent.VIDEO_RATE, function (data) { 
            console.log('index playbackRate', data);
        });
       
        iframeAPI.onEvent(smIframeEvent.READY, function() {
            // 추천동영상 설정 값
            var recommand = {};
            recommand.type = 'type1';
            recommand.items = [
                {
                    title: '추천 동영상 테스트 1',
                    duration:30 
                    thumb:'thumbnail image url',
                    landingURL:'page url'
                }, {
                    title:'추천 동영상 테스트 2',
                    duration:360 
                    thumb: 'thumbnail image url',
                    landingURL:'page url'
                }
            ];
            // 추천동영상 추가
            iframeAPI.setRecommand(recommand);
        });
    }
</script>
<iframe id="player" width="100%" height="100%" src="play url" frameborder="0" allowfullscreen="" style="position:absolute;"></iframe>

Sample Code Multiple

<script src="//play.acs.wecandeo.com/html/utils/iframeAPI.js"></script>
<script>
var api1;
var api2;
window.onload = function(){
    var ifrm = document.getElementById('player1');
    var contents = ifrm.contentWindow || ifrm.contentDocument;
    api1 = new smIframeAPI(contents);
    api1.setName('player1'); //api.setName의 입력값과 iframe 태그의 name값은 같아야 합니다.
    api1.onEvent(smIframeEvent.PLAY , function(){
    //영상 재생 시 실행
    console.log('index play')
    })
    var ifrm2 = document.getElementById('player2');
    var contents2 = ifrm2.contentWindow || ifrm2.contentDocument;
    api2 = new smIframeAPI(contents2);
    api2.setName('player2');
    api2.onEvent(smIframeEvent.PLAY , function(){
    //영상 재생 시 실행
    console.log('index play2')
    })
}
</script>
<iframe id="player1" name="player1" width="100%" height="100%" src="play url" frameborder="0" allowfullscreen="" style="position:absolute;"></iframe>
<iframe id="player2" name="player2" style="top:520px;" width="100%" height="100%" src="play url" frameborder="0" allowfullscreen="" style="position:absolute;"></iframe>