ovenplayersdkforwindows developer’sguide · chapter1 소개 ovenplayer sdk for windows 는...

30
OvenPlayer SDK for Windows Developer’s Guide Release 2.0 AirenSoft 407, 2016

Upload: others

Post on 28-Oct-2019

9 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: OvenPlayerSDKforWindows Developer’sGuide · CHAPTER1 소개 OvenPlayer SDK for Windows 는 윈도우어플레이케이션에 탑재할수있는 스트리밍플레이어 SDK 입니다

OvenPlayer SDK forWindowsDeveloper’s Guide

Release 2.0

AirenSoft

4월 07, 2016

Page 2: OvenPlayerSDKforWindows Developer’sGuide · CHAPTER1 소개 OvenPlayer SDK for Windows 는 윈도우어플레이케이션에 탑재할수있는 스트리밍플레이어 SDK 입니다

Contents

1 소개 11.1 기능 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.2 장점 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.3 동작환경 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.4 라이선스및유료정책 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.5 다운로드 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

2 설치 및 사용방법 32.1 다운로드 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32.2 라이브러리등록 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32.3 컴포넌트삽입 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32.4 Wrapper Class추가및사용 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82.5 Event Hanler정의 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

3 간단한 예제 113.1 URL재생 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113.2 현재위치 UI업데이트 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113.3 재생/일시중지/중지 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123.4 샘플코드다운로드 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

4 Method 목록 134.1 IsOpened . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134.2 GetStartPosition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134.3 SetStartPosition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134.4 Open . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144.5 IsPlaying . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144.6 Play . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144.7 Pause . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144.8 Stop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144.9 SetVolume . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154.10 SetMute . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154.11 IsMuted . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154.12 ToggleMute . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154.13 Seek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154.14 Backward . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164.15 Forward . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164.16 GetCurrentPosition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164.17 GetDuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164.18 GetPlaybackRate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174.19 SetPlaybackRate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

5 Event Listener 목록 185.1 OnUpdateCurrentPosition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

i

Page 3: OvenPlayerSDKforWindows Developer’sGuide · CHAPTER1 소개 OvenPlayer SDK for Windows 는 윈도우어플레이케이션에 탑재할수있는 스트리밍플레이어 SDK 입니다

5.2 OnStatusChanged . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185.3 OnReflectWindowMessage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

6 ERROR CODE 206.1 Windows기본오류코드 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206.2 OvenPlayer오류코드 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

7 부록 277.1 State Diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

ii

Page 4: OvenPlayerSDKforWindows Developer’sGuide · CHAPTER1 소개 OvenPlayer SDK for Windows 는 윈도우어플레이케이션에 탑재할수있는 스트리밍플레이어 SDK 입니다

CHAPTER1

소개

OvenPlayer SDK for Windows는윈도우어플레이케이션에탑재할수있는스트리밍플레이어 SDK입니다.다양한 어플리케이션에 탑재되어 다수의 윈도우 PC에서 5년간 안정적으로 동작한 검증된 플레이어 이며,사용자에게 최고의 미디어 경험을 제공할 수 있는 가장 좋은 플레이어 솔루션 입니다. OvenPlayer SDKfor Windows 는 로컬 파일을 재생하는 것 뿐만 아니라 RTMP, HLS, RTSP, HTTP와 같은 다양한 스트리밍프로토콜을지원합니다. 또한다양한포멧의파일을재생할수있습니다.

기능

• HLS, RTMP, RTSP, HTTP프로토콜스트리밍재생

• 로컬파일재생

• MP4, AVI, ASF, WMV, WMA, MOV등다양한포멧지원 (Package On Demand,기본 MP4)

• HLS의 AES암호화

• 오디오전용재생

• 로컬캐시

• HLS ID3 Timed Meta, RTMP Metadata

• 배속재생

• 쉬운통합

장점

• 작고가벼워서어플리케이션에무리를주지않습니다.

1

Page 5: OvenPlayerSDKforWindows Developer’sGuide · CHAPTER1 소개 OvenPlayer SDK for Windows 는 윈도우어플레이케이션에 탑재할수있는 스트리밍플레이어 SDK 입니다

OvenPlayer SDK forWindowsDeveloper’s Guide, Release 2.0

• 윈도우어플리케이션에스트리밍비디오를재생할수있는가장쉽고간편한방법입니다.

• Active X컴포넌트로제공되어어플리케이션에쉽게통합할수있습니다.

동작환경

• Windows XP ServicePack 3이상

라이선스및유료정책

• 이 프로그램에 포함된 비디오 디코더는 FFmpeg 을 사용하여 제작하였으며, FFmpeg의 라이선스는LGPL 을 따릅니다. LGPL에 따른 변경된 소스 코드 및 오브젝트는 Github : OvenPlayer-SDK-for-Android에공개되어있습니다.

• 본 플레이어는 비영리 목적으로 사용하는 모든 개인 개발자는 무료로 사용할 수 있습니다. 비영리목적으로 사용한 개인 개발자라도 본 SDK를 적용한 최종 결과물(Application)이 기업/영리/비영리법인/공공기관/교육기관/기타단체을목적으로개발되었다면무료대상에포함되지않습니다.

다운로드

• Github OvenPlayer-SDK-for-Windows

1.3. 동작환경 2

Page 6: OvenPlayerSDKforWindows Developer’sGuide · CHAPTER1 소개 OvenPlayer SDK for Windows 는 윈도우어플레이케이션에 탑재할수있는 스트리밍플레이어 SDK 입니다

CHAPTER2

설치및사용방법

다운로드

Github OvenPlayer-SDK-for-Windows에서최신 SDK를받으십시오. 최종바이너리는다음과같이구성되어있습니다.

Table 2.1: 라이브러리파일목록

파일명 필수여부 설명

OvenPlayerBrowserActiveX.dll O ActiveX컴포넌트OvenPlayer.dll O Player엔진OvenPlayerUI.dll O Plyaer UI처리모듈OvenPlayerWrapper.cpp X

연동인터페이스OvenPlayerWrapper.h Xavcodec-54.dll O

Demux/Decoderavformat-54.dll Oavutil-52.dll Oswresample-0.dll Oswscale-2.dll O

라이브러리등록

OvenPlayer SDK for Windows는 ActiveX 컴포넌트로 제공되어 어플리케이션에 쉽게 통합할 수 있습니다.사용하기 전에 OvenPlayerBrowserActiveX.dll 파일을 시스템에 등록해야 합니다. ActiveX 컴포넌트는 어플리케이션이설치될때다음과같은명령행으로등록할수있습니다.

$ regsvr32 \path\to\OvenPlayerBrowserActiveX.dll

컴포넌트삽입

ActiveX 컴포넌트는 다양한 개발 환경에서 사용할 수 있으며, 본 문서에서는 Visual Studio와 MFC 기반의개발환경에서삽입하는예시를설명합니다.

ActiveX컨트롤추가Visual Studio에서제공하는리소스편집기도구에서다음과같이 ActiveX컨트롤을추가합니다.

3

Page 7: OvenPlayerSDKforWindows Developer’sGuide · CHAPTER1 소개 OvenPlayer SDK for Windows 는 윈도우어플레이케이션에 탑재할수있는 스트리밍플레이어 SDK 입니다

OvenPlayer SDK forWindowsDeveloper’s Guide, Release 2.0

라이브러리가성공적으로등록되었다면아래와같이 OvenPlayerCtrl Class나나타납니다.

ActiveX가성공적으로프로젝트에추가되었다면다음과같이 Dialog에표시되며,이를적절한위치에배치하면됩니다.

2.3. 컴포넌트삽입 4

Page 8: OvenPlayerSDKforWindows Developer’sGuide · CHAPTER1 소개 OvenPlayer SDK for Windows 는 윈도우어플레이케이션에 탑재할수있는 스트리밍플레이어 SDK 입니다

OvenPlayer SDK forWindowsDeveloper’s Guide, Release 2.0

ActiveX컨트롤변수매핑ActiveX 컨트롤을 제어하기 위해서는 변수와 매핑해야 합니다. 다음과 같이 추가된 컨트롤을 우클릭 한 후Add Variable... 을선택한후변수이름을입력하십시오.

2.3. 컴포넌트삽입 5

Page 9: OvenPlayerSDKforWindows Developer’sGuide · CHAPTER1 소개 OvenPlayer SDK for Windows 는 윈도우어플레이케이션에 탑재할수있는 스트리밍플레이어 SDK 입니다

OvenPlayer SDK forWindowsDeveloper’s Guide, Release 2.0

2.3. 컴포넌트삽입 6

Page 10: OvenPlayerSDKforWindows Developer’sGuide · CHAPTER1 소개 OvenPlayer SDK for Windows 는 윈도우어플레이케이션에 탑재할수있는 스트리밍플레이어 SDK 입니다

OvenPlayer SDK forWindowsDeveloper’s Guide, Release 2.0

등록확인

모든 과정이 성공적으로 완료되었다면 다음과 같이 Solution Explorer에 ovenplayerctrl1.h와 ovenplayerc-trl.cpp파일이추가된것을확인할수있습니다.

2.3. 컴포넌트삽입 7

Page 11: OvenPlayerSDKforWindows Developer’sGuide · CHAPTER1 소개 OvenPlayer SDK for Windows 는 윈도우어플레이케이션에 탑재할수있는 스트리밍플레이어 SDK 입니다

OvenPlayer SDK forWindowsDeveloper’s Guide, Release 2.0

Wrapper Class추가및사용OvenPlayer SDK for Windows를더쉽게사용할수있도록 Wrapper클래스인 COvenPlayerWrapper클래스를제공합니다. COvenPlayerWrapper클래스는 COvenplayerctrl1를상속받아구현한클래스로플레이어를제어하는데필요한모든기능이정의되어있으므로,해당클래스를사용하는것을추천합니다.

해당 Wrapper Class를 사용하기 위해서는 OvenPlayerWrapper.h 및 OvenPlayerWrapper.cpp 파일을 oven-playerctrl1.h/ovenplayerctrl1.cpp 파일과 동일한 경로에 복사한 뒤 Solution Explorer를 통해 프로젝트에추가합니다. 그런후 Main Dialog의헤더파일을다음과같이수정합니다.

// #include "ovenplayerctrl1.h" // 삭제#include "OvenPlayerWrapper.h" // 추가......// COvenplayerctrl1 m_ovenPlayer; // 삭제COvenPlayerWrapper m_ovenPlayer; // 추가

Event Hanler정의플레이어구성이완료된뒤 OvenPlayer SDK가전달하는이벤트를받으려면다음과같이진행하면됩니다.

먼서리소스편집기에서플레이어를우클릭한뒤 Add Event Handler...를클릭하십시오.

2.4. Wrapper Class추가및사용 8

Page 12: OvenPlayerSDKforWindows Developer’sGuide · CHAPTER1 소개 OvenPlayer SDK for Windows 는 윈도우어플레이케이션에 탑재할수있는 스트리밍플레이어 SDK 입니다

OvenPlayer SDK forWindowsDeveloper’s Guide, Release 2.0

그럼 아래 그림과 같이 선택할 수 있는 이벤트가 나열되며, 사용하려고 하는 이벤트를 선택하여 추가하면됩니다.

2.5. Event Hanler정의 9

Page 13: OvenPlayerSDKforWindows Developer’sGuide · CHAPTER1 소개 OvenPlayer SDK for Windows 는 윈도우어플레이케이션에 탑재할수있는 스트리밍플레이어 SDK 입니다

OvenPlayer SDK forWindowsDeveloper’s Guide, Release 2.0

사용할수있는이벤트목록은다음과같습니다.

Table 2.2: Evnet Handler목록

항목 설명

OnUpdateCurrentPosition 현재재생중인위치가변경되면발생하는이벤트

OnStatusChanged 재생상태 (일시정지,정지등)가변경되면,발생하는이벤트OnReflectWindowMessage Player에서Windows메시지를수신할때발생하는이벤트

이벤트의자세한사용방법은 Event Listener목록 를참조하십시오.

2.5. Event Hanler정의 10

Page 14: OvenPlayerSDKforWindows Developer’sGuide · CHAPTER1 소개 OvenPlayer SDK for Windows 는 윈도우어플레이케이션에 탑재할수있는 스트리밍플레이어 SDK 입니다

CHAPTER3

간단한예제

OvenPlayer를사용하는간단한예제를나열합니다.

URL재생COvenPayerWrapper인스턴스의 Open()및 Play() API를이용하여기본적인재생을테스트해볼수있습니다.

HRESULT hrResult;

hrResult = m_ovenPlayer.Open(_T("http://test_url/mp4.m3u8"));

if(SUCCEEDED(hrResult)){

hrResult = m_ovenPlayer.Play();}

if(FAILED(hrResult)){

AfxMessageBox(_T("URL을 불러오는 도중 오류가 발생하였습니다"));}

현재위치UI업데이트타이머나별도쓰레드를통해일정시간마다현재위치를구해서 UI상테업데이트할수있으며다음과같이작성할수있습니다.

void COvenPlayerSampleDlg::OnTimer(UINT_PTR nIDEvent){

switch(nIDEvent){

...if(m_bIsSeeking == false){

// seek bar 갱신m_sldrSeek.SetPos((int)m_ovenPlayer.GetCurrentPosition());

}

break;...

}

CDialog::OnTimer(nIDEvent);}

11

Page 15: OvenPlayerSDKforWindows Developer’sGuide · CHAPTER1 소개 OvenPlayer SDK for Windows 는 윈도우어플레이케이션에 탑재할수있는 스트리밍플레이어 SDK 입니다

OvenPlayer SDK forWindowsDeveloper’s Guide, Release 2.0

재생/일시중지/중지비디오재생을일시중지(Pause),중지(Stop),재생(Play)하려면다음과같이작성합니다.

void COvenPlayerSampleDlg::OnBnClickedButtonPlay(){

if(FAILED(m_ovenPlayer.Play())){

::AfxMessageBox(_T("재생 도중 오류가 발생하였습니다"));}

}void COvenPlayerSampleDlg::OnBnClickedButtonPause(){

if(FAILED(m_ovenPlayer.Pause())){

::AfxMessageBox(_T("일시중지 도중 오류가 발생하였습니다"));}

}

void COvenPlayerSampleDlg::OnBnClickedButtonStop(){

if(FAILED(m_ovenPlayer.Stop())){

::AfxMessageBox(_T("중지 도중 오류가 발생하였습니다"));}

}

샘플코드다운로드

다음 URL에서샘플코드를다운로드할수있습니다.

https://github.com/AirenSoft/OvenPlayer-SDK-for-Windows/sample

3.3. 재생/일시중지/중지 12

Page 16: OvenPlayerSDKforWindows Developer’sGuide · CHAPTER1 소개 OvenPlayer SDK for Windows 는 윈도우어플레이케이션에 탑재할수있는 스트리밍플레이어 SDK 입니다

CHAPTER4

Method목록

OvenPlayer SDK for Android를 사용하기 위한 public OvenMediaPlayer Class 를 제공하며, 이 Class의Method를나열합니다.

IsOpenedbool IsOpened()

콘텐츠가열려있는상태를반환합니다.

반환 형식bool

반환재생 상태(play/pause/stop)와는 상관 없이 정상적으로 Open()되었다면 true를, 정상적으로 Open()되지않았다면 false를반환합니다.

GetStartPosition__int64 GetStartPosition()

동영상이처음재생될때특정위치에서부터재생되도록설정된시작위치값을반환합니다.

반환 형식__int64

반환재생 상태(play/pause/stop)와는 상관 없이 정상적으로 Open()되었다면 true를, 정상적으로 Open()되지않았다면 false를반환합니다.

SetStartPositionHRESULT SetStartPosition(__int64 nPositionInMillisecond)

동영상이 처음 재생될 때 특정 위치에서부터 재생될 수 있도록 위치 값을 설정합니다. SetStartPosi-tion()은반드시 Open()되기전또는 Stop()된후에설정되어야합니다.

반환 형식HRESULT

반환성공적으로 설정 되었다면 S_OK를, 오류가 발생하였다면 실패를 나타내는 ERRORCODE 값을반환합니다.

매개 변수nPositionInMillisecond (__int64) –위치값 (ms)

주석: SetStartPosition() 호출 후 동영상이 한 번이라도 재생되면 시작 위치는 0으로 초기화 되기때문에 GetStartPosition()은 0을반환합니다.

13

Page 17: OvenPlayerSDKforWindows Developer’sGuide · CHAPTER1 소개 OvenPlayer SDK for Windows 는 윈도우어플레이케이션에 탑재할수있는 스트리밍플레이어 SDK 입니다

OvenPlayer SDK forWindowsDeveloper’s Guide, Release 2.0

OpenHRESULT Open(LPCTSTR pszURI)

미디어콘텐츠를재생할준비를합니다.

반환 형식HRESULT

반환미디어 콘텐츠가 정상적이고 성공적으로 열렸다면 S_OK를, 오류가 발생하였다면 실패를나타내는 ERROR CODE 값을반환합니다.

매개 변수pszURI (LPCTSTR) –재생할콘텐츠의 URI

IsPlayingbool IsPlaying()

동영상이재생중인지여부를얻어옵니다.

반환 형식bool

반환동영상이 재생 중이라면 true를, 일시 중지 되었거나 콘텐츠 상태가 정상적이지 않다면false를반환합니다.

PlayHRESULT Play()

재생을시작합니다.

반환 형식HRESULT

반환성공적으로재생을시작하였다면 S_OK를,이미재생중이거나콘텐츠상태가정상적이지않다면실패를나타내는 ERROR CODE 값을반환합니다.

PauseHRESULT Pause()

재생중인콘텐츠를일시중지합니다.

반환 형식HRESULT

반환성공적으로 일시 중지 되었다면 S_OK를, 재생 중이 아니거나 재생 상태가 정상이 아니라면실패를나타내는 ERROR CODE 값을반환합니다.

StopHRESULT Stop()

재생을완전히중단합니다.

반환 형식HRESULT

반환성공적으로 중지 되었다면 S_OK를, 재생 중이 아니거나 재생 상태가 정상이 아니라면실패를나타내는 ERROR CODE 값을반환합니다.

4.4. Open 14

Page 18: OvenPlayerSDKforWindows Developer’sGuide · CHAPTER1 소개 OvenPlayer SDK for Windows 는 윈도우어플레이케이션에 탑재할수있는 스트리밍플레이어 SDK 입니다

OvenPlayer SDK forWindowsDeveloper’s Guide, Release 2.0

SetVolumeHRESULT SetVolume(int nVolume)

음량을조절합니다.

반환 형식HRESULT

반환성공적으로음량이설정되었다면 S_OK를,음량설정도중오류가발생하였다면실패를나타내는 ERROR CODE 값을반환합니다.

매개 변수nVolume (int) – 0부터 100까지의음량. (0은최소음량, 100은최대음량)

주석: SetMute(true)를 호출 한 상태에서 SetVolume()을 호출하게 되면 IsMuted() 상태가 false를반환합니다.

SetMuteHRESULT SetMute(bool bMute)

음소거상태를설정합니다.

반환 형식HRESULT

반환성공적으로 음소거 설정/해제가 되었다면 S_OK를, 오류가 발생하였다면 실패를 나타내는 ERROR CODE 값을반환합니다.

매개 변수bMute (bool) – true면음소거를설정하고 false면음소거를해제합니다.

IsMutedbool IsMuted()

음소거상태를얻어옵니다.

반환 형식bool

반환만약음소거가된상태라면 true를,음소거가되지않은상태라면 false를반환합니다.

주석: SetMute(true)를 호출 한 상태에서 SetVolume()을 호출하게 되면 IsMuted() 상태가 false를반환합니다.

ToggleMuteHRESULT ToggleMute()

음소거상태가아니라면음소거상태로,음소거상태라면음소거를해제합니다.

반환 형식HRESULT

반환성공적으로 음소거 설정/해제가 토글 되었다면 S_OK를, 오류가 발생하였다면 실패를나타내는 ERROR CODE 값을반환합니다.

SeekHRESULT Seek(__int64 nPositionInMillisecond)

지정한위치로이동합니다.

4.9. SetVolume 15

Page 19: OvenPlayerSDKforWindows Developer’sGuide · CHAPTER1 소개 OvenPlayer SDK for Windows 는 윈도우어플레이케이션에 탑재할수있는 스트리밍플레이어 SDK 입니다

OvenPlayer SDK forWindowsDeveloper’s Guide, Release 2.0

반환 형식HRESULT

반환성공적으로 이동 명령이 전달 되었다면 S_OK를, 재생 중이 아니거나 콘텐츠가 live형태이거나상태가정상적이지않다면실패를나타내는 ERROR CODE값을반환합니다.

매개 변수nPositionInMillisecond (__int64) – millisecond 단위의 이동하고자 하는 위치입니다

BackwardHRESULT Backward(__int64 nMilliseconds)

지정된시간이전으로이동합니다.

반환 형식HRESULT

반환성공적으로 이동 명령이 전달 되었다면 S_OK를, 재생 중이 아니거나 콘텐츠가 live형태이거나상태가정상적이지않다면실패를나타내는 ERROR CODE값을반환합니다.

매개 변수nMilliseconds (__int64) – millisecond 단위의 이동하고자 하는 현재 위치로부터의상대위치입니다.

주석: Backward(30000)는 Seek(GetCurrentPosition() - 30000)명령과동일합니다.

ForwardHRESULT Forward(__int64 nMilliseconds)

지정된시간이후로이동합니다.

반환 형식HRESULT

반환성공적으로 이동 명령이 전달 되었다면 S_OK를, 재생 중이 아니거나 콘텐츠가 live형태이거나상태가정상적이지않다면실패를나타내는 ERROR CODE값을반환합니다.

매개 변수nMilliseconds (__int64) – millisecond 단위의 이동하고자 하는 현재 위치로부터의상대위치입니다.

주석: Forward(30000)는 Seek(GetCurrentPosition() + 30000)명령과동일합니다.

GetCurrentPosition__int64 GetCurrentPosition()

현재위치를얻어옵니다.

반환 형식__int64

반환millisecond 단위의 현재 위치를 반환합니다. 만약 재생 중이 아니거나 콘텐츠가 live형태이거나상태가정상적이지않다면 0을반환합니다.

GetDuration__int64 GetDuration()

총길이를얻어옵니다.

반환 형식__int64

4.14. Backward 16

Page 20: OvenPlayerSDKforWindows Developer’sGuide · CHAPTER1 소개 OvenPlayer SDK for Windows 는 윈도우어플레이케이션에 탑재할수있는 스트리밍플레이어 SDK 입니다

OvenPlayer SDK forWindowsDeveloper’s Guide, Release 2.0

반환millisecond단위의총길이를반환합니다. 만약재생중이아니거나콘텐츠가 live형태이거나상태가정상적이지않다면 0을반환합니다.

GetPlaybackRatefloat GetPlaybackRate()

재생배속정보를얻어옵니다.

반환 형식float

반환배속정보를반환합니다.

SetPlaybackRateHRESULT SetPlaybackRate(float fPlaybackRate)

재생배속을설정합니다.

반환 형식HRESULT

반환배속이 성공적으로 설정 되었다면 S_OK를, fPlaybackRate값이 유효하지 않거나 설정도중오류가발생하였다면실패를나타내는 ERROR CODE 값을반환합니다.

매개 변수fPlaybackRate (float) – 0.5 ~ 4.0 사이의 배속 재생 값을 지정합니다. 2.0을초과하는배속은재생하는 PC환경에따라성능상문제가발생할수있기때문에 0.5 ~2.0까지의범위를사용하는것을추천합니다.

4.18. GetPlaybackRate 17

Page 21: OvenPlayerSDKforWindows Developer’sGuide · CHAPTER1 소개 OvenPlayer SDK for Windows 는 윈도우어플레이케이션에 탑재할수있는 스트리밍플레이어 SDK 입니다

CHAPTER5

Event Listener목록

OvenPlayer SDK for Windows가제공하는 Event Handler를나열합니다.

OnUpdateCurrentPositionvoid OnUpdateCurrentPositionOvenplayerCtrl(LONGLONG llCurrentPosition, LONGLONG llDuration)

현재재생중인위치가변경되면발생하는이벤트로,현재위치와총재생길이정보를받을수있습니다.

반환 형식void

매개 변수

•llCurrentPosition (LONGLONG) –현재재생중인위치 (ms)

•llDuration (LONGLONG) –총재생길이 (ms)

예제

void COvenPlayerSampleDlg::OnUpdateCurrentPositionOvenplayerCtrl(LONGLONG llCurrentPosition, LONGLONG llDuration){

// 현재 재생중인 위치: llCurrentPosition// 총 길이: llDuration

}

OnStatusChangedvoid OnStatusChangedOvenplayerCtrl(INT nStatus)

플레이어 상태가 변경되면 발생하는 이벤트입니다. 재생중, 일시 중지, 중지, 재생 종료를 파악할 수있습니다.

반환 형식void

매개 변수nStatus (INT) –

OP_STATUS_RUNNING 0 재생 시작/재개OP_STATUS_PAUSED 1 일시 중지

OP_STATUS_STOPPED 2 중지

OP_STATUS_CLOSED 3 재생 종료

예제

void COvenPlayerSampleDlg::OnStatusChangedOvenplayerCtrl(INT nStatus){

OP_STATUS status = (OP_STATUS)nStatus;switch(status){

18

Page 22: OvenPlayerSDKforWindows Developer’sGuide · CHAPTER1 소개 OvenPlayer SDK for Windows 는 윈도우어플레이케이션에 탑재할수있는 스트리밍플레이어 SDK 입니다

OvenPlayer SDK forWindowsDeveloper’s Guide, Release 2.0

case OP_STATUS_RUNNING:// 재생break;

case OP_STATUS_PAUSED:// 일시중지break;

case OP_STATUS_STOPPED:// 중지break;

case OP_STATUS_CLOSED:// 재생 종료

break;}

}

OnReflectWindowMessagevoid OnReflectWindowMessageOvenplayerCtrl(LONGLONG pMessage)

플레이어에서 Windows Message를수신할때발생하는이벤트로, 마우스, 키보드이벤트등을처리합니다. 이 때 인자로 전달되는 LONGLONG 형태의 pMessage 값은 OP_MSG 구조체의 포인터 값으로,OP_MSG *형태로변환하여사용할수있습니다.

반환 형식void

매개 변수pMessage (LONGLONG) – OP_MSG의포인터

typedef struct _OP_MSG{

// inHWND hWnd;// inUINT unMessage;// inWPARAM wParam;// inLPARAM lParam;

// outLRESULT lResult;

} OP_MSG;

예제

void COvenPlayerSampleDlg::OnReflectWindowMessageOvenplayerCtrl(LONGLONG pMessage){

OP_MSG *pMsg = (OP_MSG *)pMessage;// pMsg 사용// pMsg->lResult = 0L;

}

5.3. OnReflectWindowMessage 19

Page 23: OvenPlayerSDKforWindows Developer’sGuide · CHAPTER1 소개 OvenPlayer SDK for Windows 는 윈도우어플레이케이션에 탑재할수있는 스트리밍플레이어 SDK 입니다

CHAPTER6

ERRORCODE

OvenPlayer SDK for Windows에서사용하는에러코드를나열합니다.

Windows기본오류코드

E_FAIL

• 0x80004005• 분류되지않은문제로인해실패하였습니다.

E_NOT_VALID_STATE

• 0x8007139F• OvenPlayer가초기화되지않거나,잘못된상태에서 API가호출되었습니다.

E_INVALIDARG

• 0x80070057• API호출시전달한인자의값이올바르지않습니다.

E_UNEXPECTED

• 0x8000FFFF• 예상치못한오류가발생하였습니다.

E_POINTER

• 0x80004003• 잘못된포인터입니다.

E_OUTOFMEMORY

• 0x8007000E• 메모리가부족합니다.

20

Page 24: OvenPlayerSDKforWindows Developer’sGuide · CHAPTER1 소개 OvenPlayer SDK for Windows 는 윈도우어플레이케이션에 탑재할수있는 스트리밍플레이어 SDK 입니다

OvenPlayer SDK forWindowsDeveloper’s Guide, Release 2.0

E_NOTIMPL

• 0x80004001• 구현되지않은 API를호출하였습니다.

E_NOINTERFACE

• 0x80004002• 존재하지않는인터페이스입니다.

OvenPlayer오류코드

OVEN_PLAYER_ERROR_BROWSER_ACTIVE_X

• 0x80040100• ActiveX를초기화할수없습니다.

OVEN_PLAYER_ERROR_OVEN_PLAYER_DLL_NOT_FOUND

• 0x80040200• OvenPlayer.dll파일을찾을수없습니다.

OVEN_PLAYER_ERROR_OVEN_PLAYER_VERSION_MISMATCH

• 0x80040201• 오븐플레이어구성요소의버전이맞지않습니다

OVEN_PLAYER_ERROR_OVEN_PLAYER_UI_DLL_NOT_FOUND

• 0x80040202• OvenPlayerUI.dll파일을찾을수없습니다.

OVEN_PLAYER_ERROR_OVEN_PLAYER_BROWSER_DLL_NOT_FOUND

• 0x80040203• OvenPlayerBrowserActiveX.dll파일을찾을수없습니다.

OVEN_PLAYER_ERROR_INVALID_OVEN_PLAYER_DLL

• 0x80040204• 올바르지않은 OvenPlayer.dll입니다.

OVEN_PLAYER_ERROR_OVEN_PLAYER_DLL

• 0x80040205• OvenPlayer.dll경로를찾을수없습니다.

6.2. OvenPlayer오류코드 21

Page 25: OvenPlayerSDKforWindows Developer’sGuide · CHAPTER1 소개 OvenPlayer SDK for Windows 는 윈도우어플레이케이션에 탑재할수있는 스트리밍플레이어 SDK 입니다

OvenPlayer SDK forWindowsDeveloper’s Guide, Release 2.0

OVEN_PLAYER_ERROR_DISABLED

• 0x80040200• OvenPlayer.dll파일을찾을수없습니다.

OVEN_PLAYER_ERROR_INITIALIZED

• 0x80040301• 오븐플레이어가초기화되어있습니다.

OVEN_PLAYER_ERROR_INITIALIZE_HANDLE

• 0x80040302• 잘못된핸들입니다.

OVEN_PLAYER_ERROR_INITIALIZE_FILTER_GRAPH

• 0x80040303• Graph를초기화할수없습니다.

OVEN_PLAYER_ERROR_INITIALIZE_MEDIA_CONTROL

• 0x80040304• MediaControl을초기화할수없습니다.

OVEN_PLAYER_ERROR_INITIALIZE_MEDIA_EVENT

• 0x80040305• MediaEvent를초기화할수없습니다.

OVEN_PLAYER_ERROR_INITIALIZE_MEDIA_SEEKING

• 0x80040306• MediaSeeking을초기화할수없습니다.

OVEN_PLAYER_ERROR_INITIALIZE_NOTIFY_WINDOW

• 0x80040307• 알림창을설정할수없습니다.

OVEN_PLAYER_ERROR_INITIALIZE_EVR

• 0x80040308• EVR Renderer를초기화할수없습니다.

6.2. OvenPlayer오류코드 22

Page 26: OvenPlayerSDKforWindows Developer’sGuide · CHAPTER1 소개 OvenPlayer SDK for Windows 는 윈도우어플레이케이션에 탑재할수있는 스트리밍플레이어 SDK 입니다

OvenPlayer SDK forWindowsDeveloper’s Guide, Release 2.0

OVEN_PLAYER_ERROR_INITIALIZE_VMR7

• 0x80040309• VMR7 Renderer를초기화할수없습니다.

OVEN_PLAYER_ERROR_INITIALIZE_VMR9

• 0x8004030A• VMR9 Renderer를초기화할수없습니다.

OVEN_PLAYER_ERROR_UPDATE_VIDEO_WINDOW

• 0x8004030B• Video창을갱신할수없습니다.

OVEN_PLAYER_ERROR_VIDEO_RENDERER_NOT_INITIALIZED

• 0x8004030C• Video Renderer가초기화되어있지않습니다.

OVEN_PLAYER_ERROR_MODULE_PATH

• 0x8004030D• 모듈경로를찾을수없습니다

OVEN_PLAYER_ERROR_COULD_NOT_FIND_SOURCE_FILTER

• 0x8004030E• SourceFilter를찾을수없습니다

OVEN_PLAYER_ERROR_COULD_NOT_APPEND_GRAPH_BUILDER

• 0x8004030F• GraphBuilder에추가할수없습니다

OVEN_PLAYER_ERROR_COULD_NOT_OBTAIN_FILE_SOURCE_FILTER

• 0x80040310• FileSourceFilter를찾을수없습니다

OVEN_PLAYER_ERROR_COULD_NOT_OPEN_THE_FILE

• 0x80040311• 파일을열수없습니다

6.2. OvenPlayer오류코드 23

Page 27: OvenPlayerSDKforWindows Developer’sGuide · CHAPTER1 소개 OvenPlayer SDK for Windows 는 윈도우어플레이케이션에 탑재할수있는 스트리밍플레이어 SDK 입니다

OvenPlayer SDK forWindowsDeveloper’s Guide, Release 2.0

OVEN_PLAYER_ERROR_INITIALIZE_SOURCE_FILTER

• 0x80040312• SourceFilter를초기화할수없습니다.

OVEN_PLAYER_ERROR_INVALID_SOURCE_FILTER

• 0x80040313• 올바르지않은 SourceFilter입니다.

OVEN_PLAYER_ERROR_INITIALIZE_AUDIO_RENDERER

• 0x80040314• Audio Renderer를초기화할수없습니다.

OVEN_PLAYER_ERROR_INITIALIZE_BASIC_AUDIO

• 0x80040315• BasicAudio를초기화할수없습니다.

OVEN_PLAYER_ERROR_PUT_VOLUME

• 0x80040316• Volume설정도중오류가발생하였습니다.

OVEN_PLAYER_ERROR_INITIALIZE_NULL_RENDERER

• 0x80040317• Null Renderer를초기화할수없습니다.

OVEN_PLAYER_ERROR_INITIALIZE_CONNECT_TO_AUDIO

• 0x80040318• Audio Renderer에연결할수없습니다.

OVEN_PLAYER_ERROR_REMOVE_UNCONNECTED_RENDERER

• 0x80040319• Renderer를정리할수없습니다.

OVEN_PLAYER_ERROR_INITIALIZE_CONNECT_TO_VIDEO

• 0x8004031A• Video Renderer에연결할수없습니다.

6.2. OvenPlayer오류코드 24

Page 28: OvenPlayerSDKforWindows Developer’sGuide · CHAPTER1 소개 OvenPlayer SDK for Windows 는 윈도우어플레이케이션에 탑재할수있는 스트리밍플레이어 SDK 입니다

OvenPlayer SDK forWindowsDeveloper’s Guide, Release 2.0

OVEN_PLAYER_ERROR_FINALIZE_GRAPH

• 0x8004031B• Graph를종료할수없습니다.

OVEN_PLAYER_ERROR_GET_CAPABILITIES

• 0x8004031C• Capabilities속성을얻어올수없습니다.

OVEN_PLAYER_ERROR_GET_DLL_PATH

• 0x8004031D• DLL경로가잘못되었습니다.

OVEN_PLAYER_ERROR_INVALID_MEDIA_CONTROL

• 0x8004031E• 잘못된 MediaControl입니다.

OVEN_PLAYER_ERROR_INVALID_MEDIA_SEEK

• 0x8004031F• 잘못된 MediaSeek입니다.

OVEN_PLAYER_ERROR_COULD_NOT_OBTAIN_DURATION

• 0x80040320• 길이정보를얻어올수없습니다.

OVEN_PLAYER_ERROR_INVALID_SEEK_POSITION

• 0x80040321• Seek위치가잘못되었습니다.

OVEN_PLAYER_ERROR_COULD_NOT_SET_POSITION

• 0x80040322• SetPosition도중오류가발생하였습니다.

OVEN_PLAYER_ERROR_COULD_NOT_STOP_WHEN_READY

• 0x80040323• StopWhenReady도중오류가발생하였습니다.

6.2. OvenPlayer오류코드 25

Page 29: OvenPlayerSDKforWindows Developer’sGuide · CHAPTER1 소개 OvenPlayer SDK for Windows 는 윈도우어플레이케이션에 탑재할수있는 스트리밍플레이어 SDK 입니다

OvenPlayer SDK forWindowsDeveloper’s Guide, Release 2.0

OVEN_PLAYER_ERROR_SEEK_IS_NOT_SUPPORTED

• 0x80040324• Seek가지원되지않습니다.

OVEN_PLAYER_ERROR_INVALID_PLAYBACK_STATE

• 0x80040325• 올바르지않은상태입니다.

OVEN_PLAYER_ERROR_MEDIA_CONTROL_RUN

• 0x80040326• 재생을할수없습니다.

OVEN_PLAYER_ERROR_MEDIA_CONTROL_PAUSE

• 0x80040327• 일시중지를할수없습니다.

OVEN_PLAYER_ERROR_MEDIA_CONTROL_STOP_WHEN_READY

• 0x80040328• 중지를할수없습니다.

OVEN_PLAYER_ERROR_VIRTUAL_MACHINE

• 0x80040400• 가상머신환경에서는재생할수없습니다.

OVEN_PLAYER_ERROR_REMOTE_DESKTOP

• 0x80040401• 원격환경에서는재생할수없습니다.

6.2. OvenPlayer오류코드 26

Page 30: OvenPlayerSDKforWindows Developer’sGuide · CHAPTER1 소개 OvenPlayer SDK for Windows 는 윈도우어플레이케이션에 탑재할수있는 스트리밍플레이어 SDK 입니다

CHAPTER7

부록

State Diagram

27