Contents 1 소개 설치 및 사용방법 21 다운로드 22 라이브러리 등록 23 Android Menifest 정의 간단한 31 플레이어 생성 32 이벤트 리스너 정의 33 Surface 할당 3

Similar documents
OvenPlayer SDK for Windows Developer s Guide Release 2.0 AirenSoft 4 월 07, 2016

( )부록

회사소개서2

Mobile Service > IAP > Android SDK [ ] IAP SDK TOAST SDK. IAP SDK. Android Studio IDE Android SDK Version (API Level 10). Name Reference V

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

Windows 8에서 BioStar 1 설치하기

ios 의경우 Unity 버전 4.X 의경우, EasyMovieTexture 폴더안에 Unity463_Patch_IOS 가있습니다. 버전에 맞게패치해주세요. 디버그모드사용시아래와같이사용하세요.

Microsoft PowerPoint - java1-lab5-ImageProcessorTestOOP.pptx

02 C h a p t e r Java

비긴쿡-자바 00앞부속

슬라이드 1

Analytics > Log & Crash Search > Unity ios SDK [Deprecated] Log & Crash Unity ios SDK. TOAST SDK. Log & Crash Unity SDK Log & Crash Search. Log & Cras

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

제8장 자바 GUI 프로그래밍 II

Microsoft PowerPoint - chap01-C언어개요.pptx

슬라이드 1

adfasdfasfdasfasfadf

HLS(HTTP Live Streaming) 이용가이드 1. HLS 소개 Apple iphone, ipad, ipod의운영체제인 ios에서사용하는표준 HTTP 기반스트리밍프로토콜입니다. 2. HLS 지원대상 - 디바이스 : iphone/ipad/ipod - 운영체제 :

PowerPoint Presentation

PowerPoint 프레젠테이션

JMF3_심빈구.PDF

Microsoft PowerPoint UI-Event.Notification(1.5h).pptx

INAPP결제 API 가이드

PowerPoint Presentation

PowerPoint 프레젠테이션

<4D F736F F F696E74202D203137C0E55FBFACBDC0B9AEC1A6BCD6B7E7BCC72E707074>

[ 그림 8-1] XML 을이용한옵션메뉴설정방법 <menu> <item 항목ID" android:title=" 항목제목 "/> </menu> public boolean oncreateoptionsmenu(menu menu) { getme

UI TASK & KEY EVENT

API STORE 키발급및 API 사용가이드 Document Information 문서명 : API STORE 언어별 Client 사용가이드작성자 : 작성일 : 업무영역 : 버전 : 1 st Draft. 서브시스템 : 문서번호 : 단계 : Docum

MasoJava4_Dongbin.PDF

Microsoft PowerPoint - 11주차_Android_GoogleMap.ppt [호환 모드]

안드로이드기본 11 차시어댑터뷰 1 학습목표 어댑터뷰가무엇인지알수있다. 리스트뷰와스피너를사용하여데이터를출력할수있다. 2 확인해볼까? 3 어댑터뷰 1) 학습하기 어댑터뷰 - 1 -

12 강. 문자출력 Direct3D 에서는문자를출력하기위해서 LPD3DXFONT 객체를사용한다 LPD3DXFONT 객체생성과초기화 LPD3DXFONT 객체를생성하고초기화하는함수로 D3DXCreateFont() 가있다. HRESULT D3DXCreateFont

PowerPoint 프레젠테이션

2 Application Name: Day10_yhg <LinearLayout android:layout_weight="3" > /> an

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

(8) getpi() 함수는정적함수이므로 main() 에서호출할수있다. (9) class Circle private double radius; static final double PI= ; // PI 이름으로 로초기화된정적상수 public

Microsoft PowerPoint - chap13-입출력라이브러리.pptx

PowerPoint Presentation

JMF2_심빈구.PDF

Microsoft PowerPoint 자바-기본문법(Ch2).pptx

C# Programming Guide - Types

03장

JUNIT 실습및발표

PowerPoint 프레젠테이션

Æí¶÷4-¼Ö·ç¼Çc03ÖÁ¾š

Spring Boot/JDBC JdbcTemplate/CRUD 예제

어댑터뷰

유니티 변수-함수.key

Microsoft PowerPoint - 14주차 강의자료

PowerPoint Presentation

Java ...

Google Maps Android API v2

gnu-lee-oop-kor-lec10-1-chap10

SBR-100S User Manual

Poison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3

제11장 프로세스와 쓰레드

[ 그림 7-1] 프로젝트 res 폴더 이미지뷰 [ 예제 7-1] 이미지뷰 1 <LinearLayout 2 ~~~~ 중간생략 ~~~~ 3 android:orientation="vertical" > 4 <ImageView

rmi_박준용_final.PDF

Design Issues

Microsoft PowerPoint - Supplement-03-TCP Programming.ppt [호환 모드]

Microsoft PowerPoint - 03-TCP Programming.ppt

Chapter #01 Subject

아이콘의 정의 본 사용자 설명서에서는 다음 아이콘을 사용합니다. 참고 참고는 발생할 수 있는 상황에 대처하는 방법을 알려 주거나 다른 기능과 함께 작동하는 방법에 대한 요령을 제공합니다. 상표 Brother 로고는 Brother Industries, Ltd.의 등록 상

untitled

13ÀåÃß°¡ºÐ

Microsoft Word - src.doc

12-file.key

서현수

iii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다.

09-interface.key

Network Programming

사용설명서를 읽기 전에 안드로이드(Android)용 아이디스 모바일은 네트워크 연결을 통해 안드로이드 플랫폼 기반의 모바일 기기에서 장치 (DVR, NVR, 네트워크 비디오 서버, 네트워크 카메라) 에 접속하여 원격으로 영상을 감시할 수 있는 프로그램입니다. 장치의 사

미디어 및 엔터테인먼트 업계를 위한 Adobe Experience Manager Mobile

슬라이드 1

PowerPoint 프레젠테이션

<4D F736F F F696E74202D B3E22032C7D0B1E220C0A9B5B5BFECB0D4C0D3C7C1B7CEB1D7B7A1B9D620C1A638B0AD202D20C7C1B7B9C0D320BCD3B5B5C0C720C1B6C0FD>

PowerPoint Template

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >

API 매뉴얼

PowerPoint Presentation

PowerPoint 프레젠테이션

Spring Data JPA Many To Many 양방향 관계 예제

Ver. DS-2012.T3.DWS.STR-1.0 System Test Report for Digital Watch System Test Cases Specification Test Summary Report Project Team 이동아 Latest update on

Web Scraper in 30 Minutes 강철

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp");

Microsoft PowerPoint Android-SDK설치.HelloAndroid(1.0h).pptx

Network Security - Wired Sniffing 실습 ICNS Lab. Kyung Hee University

사용설명서를 읽기 전에 ios용 아이디스 모바일은 네트워크 연결을 통해 ios 플랫폼 기반의 모바일 기기(iOS 버전 6.0 이상의 ipod Touch, iphone 또는 ipad)에서 장치(DVR, 네트워크 비디오 서버 및 네트워크 카메라)에 접속하여 원격으로 영상을

슬라이드 1

쉽게 풀어쓴 C 프로그래밍

Secure Programming Lecture1 : Introduction

Facebook API

Microsoft PowerPoint - Lect04.pptx

UI TASK & KEY EVENT

Multi Channel Analysis. Multi Channel Analytics :!! - (Ad network ) Report! -! -!. Valuepotion Multi Channel Analytics! (1) Install! (2) 3 (4 ~ 6 Page

FMX M JPG 15MB 320x240 30fps, 160Kbps 11MB View operation,, seek seek Random Access Average Read Sequential Read 12 FMX () 2

4S 1차년도 평가 발표자료

¾Ë·¹¸£±âÁöħ¼�1-ÃÖÁ¾

01....b

Transcription:

OvenPlayer SDK for Android Developer s Guide Release 20 AirenSoft 3 월 30, 2016

Contents 1 소개 11 12 13 14 15 1 1 1 2 2 2 2 설치 및 사용방법 21 다운로드 22 라이브러리 등록 23 Android Menifest 정의 3 3 3 4 3 간단한 31 플레이어 생성 32 이벤트 리스너 정의 33 Surface 할당 34 재생, 일시정지 및 중지 35 샘플 코드 다운로드 기능 장점 동작 환경 라이선스 및 유료 정책 다운로드 5 5 5 7 7 7 4 Method 목록 41 setdatasource 42 getdatasource 43 setstartposition 44 prepare 45 Play 46 pause 47 stop 48 setspeed 49 seekto 410 isplaying 411 getduration 412 getcurrentposition 413 setscreenmode 414 getstatus 415 getmediatype 416 getstreamtype 417 getscreenonwhileplaying 418 setuseragent 419 getuseragent 420 getdefaultuseragent 421 release 8 8 8 8 9 9 10 10 10 10 11 11 11 11 11 12 12 13 13 13 13 14 5 Event Listener 목록 15 i

51 setinitcompletelistener 15 52 setonpreparedlistener 15 53 setonbufferingupdatelistener 16 54 setonseekcompletelistener 16 55 setonerrorlistener 17 56 setoncompletionlistener 18 57 setontimedmetatdataupdatelistener 18 6 부록 20 61 State Diagram 20 ii

CHAPTER 1 소개 OvenPlayer SDK for Android 는 50개 이상의 서비스를 통해 3000만대 이상의 기기에서 5년간 안정적으로 동작한 검증된 플레이어 SDK 이며, 사용자에게 최고의 미디어 경험을 제공할 수 있는 가장 좋은 플레이어 솔루션 입니다 OvenPlayer SDK for Android 는 로컬 파일을 재생하는 것 뿐만 아니라 RTMP, HLS, RTSP, HTTP와 같은 다양한 스트리밍 프로토콜을 지원합니다 기능 HLS, RTMP, RTSP, HTTP 프로토콜 MP4/H264, AAC, MP3, Flac(안드로이드 40 이상) 지원 - 하드웨어 디코더 HLS의 AES 암호화 오디오 전용 재생 로컬 파일 재생 로컬 캐시 HLS ID3 Timed Meta, RTMP Metadata 배속 재생 쉬운 UI 통합 장점 광범위한 안드로이드 장치를 지원합니다 안드로이드 233부터 HLS로 라이브 방송을 재생할 수 있습니다 RTMP 프로토콜을 사용하여 라이브 중계를 3초 미만의 저지연으로 재생할 수 있습니다 신규 단말을 빠르게 지원합니다 50개 이상의 서비스를 통해 3천만개 이상의 기기에서 안정성이 검증된 플레이어 입니다 1

OvenPlayer SDK for Android Developer s Guide, Release 20 동작 환경 Android 233 (API 10) 이상 라이선스 및 유료 정책 이 프로그램에 포함된 비디오 디코더는 FFmpeg 을 사용하여 제작하였으며, FFmpeg의 라이선스는 LGPL 을 따릅니다 LGPL에 따른 변경된 소스 코드 및 오브젝트는 Github : OvenPlayer-SDK-forAndroid 에 공개되어 있습니다 본 플레이어는 비영리 목적으로 사용하는 모든 개인 개발자는 무료로 사용할 수 있습니다 비영리 목적으로 사용한 개인 개발자라도 본 SDK를 적용한 최종 결과물(App)이 기업/영리/비영리법인/공공 기관/교육기관/기타단체을 목적으로 개발되었다면 무료 대상에 포함되지 않습니다 본 플레이어가 최종 사용되는 기업/영리/비영리법인/공공기관/교육기관/기타단체는 프로그램을 배 포하기 전에 구매를 진행해야 합니다 자세한 내용은 유료 정책 표와 같습니다 AirenSoft는 OvenPlayer SDK for Android에 대한 기술 지원 프로그램을 운영하고 있으며 자세한 내용 은 기술 지원 프로그램 표와 같습니다 Table 11: 유료 정책 종류 무료 월 구독 영구 대상 비영리 목적의 개인 기업/영리/비영리법인/공공기관/교육기관 기업/영리/비영리법인/공공기관/교육기관 사용기간 무제한 가입기간 무제한 기술지원 없음 가입기간 1년 포함 가격 무료 문의 문의 Table 12: 기술 지원 프로그램 대상 마이너 업데이트 매이저 업데이트 기술 문의 기간 연장 OvenPlayer SDK for Android 구매 기관 및 단체 신규 단말 지원, 버그 패치 등 신규 기능 및 성능 개선 등 24시간 이내 응답(주말 및 공휴일 제외) 횟수 무제한 전화, 이메일, 커뮤니티 support@airensoftcom 으로 문의 다운로드 Github OvenPlayer-SDK-for-Android 13 동작 환경 2

CHAPTER 2 설치 및 사용방법 다운로드 Github OvenPlayer-SDK-for-Android 에서 최신 SDK를 받으십시오 최종 바이너리는 다음과 같이 구성되어 있습니다 Table 21: 라이브러리 구성 파일명 libovenplayercoreso libovenplayerhwcodecv1so libovenplayerhwcodecv2so libovenplayerhwcodecv3so comairensoftandroidovenjar 필수여부 O X X X O 설명 미디어 플레이어 Native 라이브러리 안드로이드 2X를 위한 하드웨어 코덱 모듈 안드로이드 3X를 위한 하드웨어 코덱 모듈 안드로이드 4X를 위한 하드웨어 코덱 모듈 Java 인터페이스 라이브러리 등록 프로젝트의 libs\armeabi 에 so 파일을 등록하십시오 so 파일을 등록한 후에는 JAR 파일을 Java Build Path에 등록해야 합니다 Menu -> Project -> Properties를 선택한 뒤 Add Jar 버튼을 클릭하여 comairensoftandroidovenjar 파일을 등록하십시오 3

OvenPlayer SDK for Android Developer s Guide, Release 20 Android Menifest 정의 스트리밍 기능을 사용하기 위해서는 INTERNET 권한을 추가하고, 로컬 미디어 파일을 재생하기 위해서는 WRITE_EXTERNAL_STORAGE 권한을 추가하십시오 <uses-permission android:name="androidpermissioninternet" /> <uses-permission android:name="androidpermissionwrite_external_storage" /> 23 Android Menifest 정의 4

CHAPTER 3 간단한 OvenMediaPlayer 객체를 생성하고 이벤트 리스너를 등록하는 간단한 입니다 플레이어 생성 OvenMediaPlayer를 멤버 변수로 선언하고 다음과 같이 초기화 하면 플레이어를 생성할 수 있습니다 import comairensoftandroidovenmediaplayer*; private OvenMediaPlayer mmediaplayer = null; public void initmediacontroller(){ mmediaplayer = new OvenMediaPlayer(this); mmediaplayersetinitcompletelistener(minitcompletelistener); mmediaplayersetonpreparedlistener(mpreparedlistener); mmediaplayersetonerrorlistener(merrorlistener); mmediaplayersetoncompletionlistener(mcompletionlistener); mmediaplayersetonbufferingupdatelistener(mbufferingupdatelistener); mmediaplayersetonseekcompletelistener(mseekcompletelistener); mmediaplayersetdisplaychangelistener(mdisplaychangelistener); mmediaplayersetonloglistener(mloglistener); mmediaplayersetsystemlogdisable(false); mmediaplayersetscreenonwhileplaying(true); mmediaplayersetallowbackgroundtask(false); mmediaplayersetontimedmetadataupdatelistener(mtimedmetadatalistener); 이벤트 리스너 정의 다음과 같이 이벤트 리스너를 정의하여 사용하면 플레이어 이벤트를 처리할 수 있습니다 // * 라이브러리 초기화 리스너 OvenInitCompleteListener minitcompletelistener = new OvenInitCompleteListener() { public void oninitcomplete(ovenmediaplayer t) { Logd(TAG, Stringformat("Initialize Complete")); // 플레이어 상태 초기화 treset(); ; // 준비 완료 이벤트 리스너 OvenPreparedListener mpreparedlistener = new OvenPreparedListener() { public void onprepared(ovenmediaplayer t, boolean result) { 5

OvenPlayer SDK for Android Developer s Guide, Release 20 ; // Preparing 이성공하면자동으로재생함 if(result==true) { Logd(TAG, Stringformat("Video Resolution: %d/%d", mmediaplayergetvideowidth(), mmediaplayergetvideoheight())); mmediaplayerstart(); // * 버퍼링업데이트이벤트리스너 OvenBufferingListener mbufferingupdatelistener = new OvenBufferingListener(){ public void onbuffering(ovenmediaplayer t, int percent) { ToastmakeText(getApplicationContext(), Stringformat("%d%%", percent), ToastLENGTH_SHORT)show(); ; // * SEEK 완료이벤트리스터 OvenSeekCompleteListener mseekcompletelistener = new OvenSeekCompleteListener() { public void onseekcomplete(ovenmediaplayer t) { ToastmakeText(getApplicationContext(), Stringformat("Seek Completed"), ToastLENGTH_SHORT)show(); ; // * 에러이벤트리스너 OvenErrorListener merrorlistener = new OvenErrorListener() { public void onerror(ovenmediaplayer t, int code) { switch (code) { case OvenErrorCodeOVEN_ERROR_OPEN_FAILED: Logd(TAG, Stringformat("Couldn't open file")); break; case OvenErrorCodeOVEN_ERROR_PREPARE_FAILED: Logd(TAG, Stringformat("Couldn't find stream information")); break; case OvenErrorCodeOVEN_ERROR_PLAYBACK_FAILED: Logd(TAG, Stringformat("Unstable network or unknown error")); break; case OvenErrorCodeOVEN_ERROR_CODEC_FAILED: Logd(TAG, Stringformat("Couldn't find support codec")); break; ; tstop(); // * 동영상재생완료이벤트리스너 OvenCompletionListener mcompletionlistener = new OvenCompletionListener() { public void oncompletion(ovenmediaplayer t) { ToastmakeText(getApplicationContext(), Stringformat("completed"), ToastLENGTH_SHORT)show(); ; mmediaplayerstop(); mmediaplayerprepare(); 32 이벤트리스너정의 6

OvenPlayer SDK for Android Developer s Guide, Release 20 Surface 할당 비디오 출력을 위한 Surface View의 Surface Holder를 플레이어에 할당해줍니다 mvideoview = (SurfaceView) findviewbyid(ridsurfaceview1); mvideoviewgetholder()addcallback(new SurfaceHolderCallback() { @Override public void surfacechanged(surfaceholder holder, int format, int width, int height) { // * Surface뷰가 변경되면 SurfaceHolder를 등록해줌 mmediaplayersetdisplay(holder); @Override public void surfacecreated(surfaceholder holder) { Loge(TAG, "surfacecreated"); @Override public void surfacedestroyed(surfaceholder holder) { Loge(TAG, "surfacedestroyed"); mmediaplayercleardisplay(); ); 재생, 일시정지 및 중지 기본적인 비디오 제어는 다음과 같은 방식으로 쉽게 연결할 수 있습니다 // 일시정지 mediaplayerpause(); // 재생 mediaplayerstart(); // 중지 mediaplayerstop() 샘플 코드 다운로드 다음 URL에서 샘플 코드를 다운로드 할 수 있습니다 https://githubcom/airensoft/ovenplayer-sdk-for-android/sample 33 Surface 할당 7

CHAPTER 4 Method 목록 OvenPlayer SDK for Android를 사용하기 위한 public OvenMediaPlayer Class 를 제공하며, 이 Class의 Method를 나열합니다 setdatasource void OvenMediaPlayer::setDataSource(String uri) 재생할 미디어 URI를 설정합니다 매개 변수uri (String) 미디어 스트림 주소 또는 로컬 경로 mmediaplayersetdatasource("http://servercom/vod/playlistm3u8"); getdatasource String OvenMediaPlayer::getDataSource() 설정한 미디어의 URI값을 문자열로 반환합니다 반환 형식String 반환설정한 미디어의 URI 값 String url = mmediaplayergetdatasource(); setstartposition void OvenMediaPlayer::setStartPosition(Int startpos) 기본적으로 OvenPlayer는 모든 미디어를 재생시 0초부터 재생하게 되어 있습니다 setstartposition은 이어보기 와 같은 기능을 제공할 경우 특정 위치부터 재생할 수 있도록 시작 위치를 지정해주는 메소드 입니다 반드시 Prepare() 메소드 이전에 설정이 되어 있어야 합니다 매개 변수startPos (Int) 재생 시작 시간, 단위 ms 8

OvenPlayer SDK for Android Developer s Guide, Release 20 // 30초부터 재생함 mmediaplayersetstartposition(30000); prepare void OvenMediaPlayer::prepare() setdatasource로 설정한 미디어 URI가 재생 가능한지 여부를 판단하고 재생을 할 수 있도록 모든 자원을 준비합니다 이 메소드를 호출 한 뒤에 onprepared 이벤트로 준비 완료 여부를 알 수 있습니다 onprepared를 통해 준비 완료 이벤트를 받으면 재생 가능한 상태가 됩니다 주석: prepare의 결과 이벤트를 setonpreparedlistener 를 통해 콜백 받을 수 있습니다 // 30초부터 재생함 mmediaplayerprepare(); // 준비 완료 이벤트 리스너 OvenPreparedListener mpreparedlistener = new OvenPreparedListener() { public void onprepared(ovenmediaplayer t, boolean result) { // Preparing이 성공하면 자동으로 재생함 if(result==true){ Logd(TAG, Stringformat("Video Resolution: %d/%d", mmediaplayergetvideowidth(), mmediaplayergetvideoheight())); mmediaplayerstart(); ; Play void OvenMediaPlayer::start() prepare 가 성공한 후 사용할 수 있으며 미디어 재생을 시작하는 메소드입니다 준비 완료 여부는 onprepared 이벤트를 통해 알 수 있습니다 이 메소드를 호출하면 onbuffering 이벤트를 통해 버퍼링 상태를 알려주며, 버퍼링이 완료되면 재생을 시작합니다 주석: start 호출 후 버퍼링 상태 이벤트를 setonbufferingupdatelistener 를 통해 콜백 받을 수 있습니 다 ; mmediaplayersetdatasource("http://servercom/vod/playlistm3u8"); mmediaplayerprepare(); mmediaplayerstart(); // 버퍼링 업데이트 이벤트 리스너 44 prepare 9

OvenPlayer SDK for Android Developer s Guide, Release 20 OvenBufferingListener mbufferingupdatelistener = new OvenBufferingListener() { public void onbuffering(ovenmediaplayer t, int percent) { ToastmakeText(getApplicationContext(), Stringformat("Buffering : %d%%", percent), ToastLENGTH_SHORT)show(); ; pause void OvenMediaPlayer::pause() 재생을 일시 중지 합니다 재생 중이 아닌 상태에서 호출하면 아무 동작도 하지 않습니다 mmediaplayerpause(); stop void OvenMediaPlayer::stop() 재생을 완전히 중지하고 스트림을 정리합니다 stop 함수를 호출한 뒤에는 start 함수를 호출하더라도 다시 재생되지 않으며, 미디어를 재생하기 위해서는 prepare 부터 다시 호출해야 합니다 mmediaplayerstop(); setspeed void OvenMediaPlayer::setSpeed(float speed) 재생 속도를 조절합니다 05배속 (2배 느리게) 부터 2배속 (2배 빠르게) 사이에서 속도를 지정할 수 있습니다 매개 변수speed (float) 속도 : 범위(05 ~ 20) seekto void OvenMediaPlayer::seekTo(int sec) 현재 재생 중인 미디어를 지정한 위치로 이동하는 기능이며, 로컬 파일 및 VoD 스트림을 재생할 때 사용할 수 있습니다 Live 스트리밍을 재생 할때는 동작하지 않습니다 매개 변수sec (int) 이동할 위치 (초) 46 pause 10

OvenPlayer SDK for Android Developer s Guide, Release 20 isplaying boolean OvenMediaPlayer::isPlaying() 현재 플레이어가 재생중인지 체크합니다 반환 형식boolean 반환 true : 재생중 false : 일시 중지 / 중지 / 버퍼링 등의 상태 getduration int OvenMediaPlayer::getDuration() 현재 재생 중인 미디어의 총 재생 시간을 구합니다 로컬 파일, VoD같은 경우에는 초단위로 값이 반환되며, Live 영상인 경우에는 0을 반환합니다 반환 형식int 반환 > 0 : 로컬 파일, VoD 스트림 영상의 재생 시간 (초) = 0 : Live 영상 getcurrentposition int OvenMediaPlayer::getCurrentPosition() 현재 미디어의 재생 위치를 구합니다 반환 형식int 반환현재 재생 위치(초) setscreenmode void OvenMediaPlayer::setScreenMode(int mode) 영상 출력 모드를 설정합니다 영상 비율 기준으로 출력하거나 화면 비율 기준으로 출력할 수 있습니다 매개 변수mode (int) OVEN_SCREEN_NORMAL(0) : 영상 비율 기준 (기본값) OVEN_SCREEN_NOASPECTRATIO_FULL(1) : 화면 비율 기준 getstatus OvenPlaybackStatus OvenMediaPlayer::getStatus() 현재 플레이어의 상태를 구합니다 반환 형식OvenPlaybackStatus 반환플레이어 상태 410 isplaying 11

OvenPlayer SDK for Android Developer s Guide, Release 20 주석: class OvenPlaybackStatus { // 멈춤 // 준비중 // 준비 완료 // 준비 실패 // 재생중 // 일시 중지 // 버퍼링 중 // 재생 완료 int OVEN_STATUS_STOP = 0; int OVEN_STATUS_PREPARING = 1; int OVEN_STATUS_PREPARED = 2; int OVEN_STATUS_PREPARED_FAILED = 3; int OVEN_STATUS_PLAY = 4; int OVEN_STATUS_PAUSE = 5; int OVEN_STATUS_BUFFERING = 6; int OVEN_STATUS_PBCOMPLETE = 7; getmediatype OvenMediaType OvenMediaPlayer::getMediaType() 현재 재생되고 있는 미디어의 종류를 구합니다 반환 형식OvenMediaType 반환미디어 종류 주석: class OvenMediaType { // 알 수 없음 // 비디오 // 오디오 // 비디오 + 오디오 int AM_MEDIA_UNKNOWN = 0; int AM_MEDIA_VIDONLY = 1; int AM_MEDIA_AUDONLY = 2; int AM_MEDIA_AVBOTH = 3; getstreamtype OvenStreamType OvenMediaPlayer::getStreamType() 재생하고 있는 스트림 종류를 구합니다 VoD 와 LIVE 를 구분할 수 있습니다 반환 형식OvenStreamType 반환스트림 종류 주석: 415 getmediatype 12

OvenPlayer SDK for Android Developer s Guide, Release 20 class OvenStreamType { // 스트림 종류를 판별할 수 없음 int OVEN_STREAM_NONE = 0; // 로컬 파일 또는 VoD 스트림 int OVEN_STREAM_VOD = 1; // 라이브 스트림 int OVEN_STREAM_LIVE = 2; getscreenonwhileplaying void OvenMediaPlayer::setScreenOnWhilePlaying(Boolean screenon) 재생 중 장시간 사용자 입력이 없을 경우 화면 절전 모드로 진입하는 기능을 온오프 합니다 매개 변수screenOn (Boolen) TRUE : 화면 켜짐 유지 FALSE : 화면 절전 모드 사용 (기본값) setuseragent void OvenMediaPlayer::setUserAgent(String useragent) HLS 또는 HTTP Progressive Download 스트림을 요청할 때 HTTP 헤더에 UserAgent 값을 임의로 지정합니다 매개 변수userAgent (String) 사용자 정의 UserAgent 값 getuseragent String OvenMediaPlayer::getUserAgent() HLS 또는 HTTP Progressive Download 스트림을 요청할 때 HTTP 헤더에 넣는 설정된 UserAgent 값을 구합니다 반환 형식String 반환정의된 UserAgent 값 getdefaultuseragent String OvenMediaPlayer::getUserAgent() 시스템에 설정된 HTTP 헤더의 UserAgent 값을 구합니다 반환 형식String 반환정의된 UserAgent 값 417 getscreenonwhileplaying 13

OvenPlayer SDK for Android Developer s Guide, Release 20 release void OvenMediaPlayer::release() 플레이어에 할당된 모든 자원을 해제합니다 플레이어를 더 이상 사용하지 않을 때 호출합니다 421 release 14

CHAPTER 5 Event Listener 목록 OvenMediaPlayer Class가 제공하는 Event Listener를 나열합니다 setinitcompletelistener void OvenMediaPlayer::setInitCompleteListener(OvenInitCompleteListener l) 플레이어 생성 후에 발생되는 초기화 완료 이벤트를 등록합니다 매개 변수l (OvenInitCompleteListener) 초기화 이벤트를 받을 리스너 인터페이스 void oninitcomplete(ovenmediaplayer i) OvenInitCompleteListener의 인터페이스입니다 매개 변수i (OvenMediaPlayer) 플레이어 인스턴스 OvenInitCompleteListener minitcompletelistener = new OvenInitCompleteListener() { public void oninitcomplete(ovenmediaplayer i){ isetdatasource("http://servercom/vod/playlistm3u8"); iprepare(); ; mmediaplayersetoninitcompletelistener(minitcompletelistener); setonpreparedlistener void OvenMediaPlayer::setOnPreparedListener(OvenPreparedListener l) prepare 함수를 호출 후에 발생되는 재생 준비 완료 이벤트를 등록합니다 매개 변수l (OvenPreparedListener) 초기화 이벤트를 받을 리스너 인터페이스 void onprepared(ovenmediaplayer i, boolean result) OvenPreparedListener 인터페이스입니다 15

OvenPlayer SDK for Android Developer s Guide, Release 20 매개 변수 i (OvenMediaPlayer) 플레이어 인스턴스 result (boolean) 준비 성공 여부 OvenPreparedListener mpreparedlistener = new OvenPreparedListener() { public void onprepared(ovenmediaplayer i, boolean result) { Logd("OvenPlayerLib", Stringformat("%s", success?"success":"failed")); ; mmediaplayersetonpreparedlistener(mpreparedlistener); setonbufferingupdatelistener void OvenMediaPlayer::setOnBufferingUpdateListener(OvenBufferingListener l) 버퍼링 진행 상태 이벤트를 등록합니다 매개 변수l (OvenBufferingListener) 초기화 이벤트를 받을 리스너 인터페이스 void onbuffering(ovenmediaplayer i, int percent) OvenBufferingListener 인터페이스입니다 매개 변수 i (OvenMediaPlayer) 플레이어 인스턴스 percent (int) 버퍼링 진행률 (0 ~ 100) OvenBufferingListener mbufferingupdatelistener = new OvenBufferingListener() { public void onbuffering(ovenmediaplayer i, int percent) { ToastmakeText(getApplicationContext(), Stringformat("Buffering : %d%%", percent), ToastLENGTH_SHORT)show(); ; mmediaplayersetonbufferingupdatelistener(mbufferingupdatelistener); setonseekcompletelistener void OvenMediaPlayer::setOnSeekCompleteListener(OvenSeekCompleteListener l) 미디어 재생 위치 이동 완료 이벤트를 등록합니다 매개 변수l (OvenSeekCompleteListener) 초기화 이벤트를 받을 리스너 인터페이스 void onseekcomplete(ovenmediaplayer i) OvenSeekCompleteListener 인터페이스입니다 53 setonbufferingupdatelistener 16

OvenPlayer SDK for Android Developer s Guide, Release 20 매개 변수i (OvenMediaPlayer) 플레이어 인스턴스 OvenSeekCompleteListener mseekcompletelistener = new OvenSeekCompleteListener() { public void onseekcomplete(ovenmediaplayer i) { ToastmakeText(getApplicationContext(), Stringformat("Seek Completed"), ToastLENGTH_SHORT)show(); ; mmediaplayersetonseekcompletelistener(mseekcompletelistener); setonerrorlistener void OvenMediaPlayer::setOnErrorListener(OvenErrorListener l) 플레이어에서 발생하는 에러를 onerror 이벤트를 통해 전달 받을 수 있습니다 미디어 재생 오류, 네트워크 문제, CPU 성능에 따른 디코딩 성능 부족 및 기타 에러가 발생하면 호출됩니다 매개 변수l (OvenErrorListener) 초기화 이벤트를 받을 리스너 인터페이스 void onerror(ovenmediaplayer i, int code) OvenErrorListener 인터페이스입니다 매개 변수 i (OvenMediaPlayer) 플레이어 인스턴스 code (int) OvenErrorCodeOVEN_ERROR_OPEN_FAILED : 파일 열기 실패 OvenErrorCodeOVEN_ERROR_PREPARE_FAILED : 연결 실패 OvenErrorCodeOVEN_ERROR_PLAYBACK_FAILED : 재생 실패 OvenErrorCodeOVEN_ERROR_CODEC_FAILED : 알수없는 코덱 OvenErrorListener merrorlistener = new OvenErrorListener() { public void onerror(ovenmediaplayer t, int code) { switch (code) { case OvenErrorCodeOVEN_ERROR_OPEN_FAILED: Logd(TAG, Stringformat("Couldn't open file")); break; case OvenErrorCodeOVEN_ERROR_PREPARE_FAILED: Logd(TAG, Stringformat("Couldn't find stream information")); break; case OvenErrorCodeOVEN_ERROR_PLAYBACK_FAILED: Logd(TAG, Stringformat("Unstable network or unknown error")); break; case OvenErrorCodeOVEN_ERROR_CODEC_FAILED: Logd(TAG, Stringformat("Couldn't find support codec")); break; ; tstop(); 55 setonerrorlistener 17

OvenPlayer SDK for Android Developer s Guide, Release 20 public OvenMediaPlayer mmediaplayer aplayersetonerrorlistener(merrorlistener); = new OvenMediaPlayer(this); mmedi- setoncompletionlistener void OvenMediaPlayer::setOnCompletionListener(OvenCompletionListener l) 미디어 재생 완료 이벤트를 등록합니다 매개 변수l (OvenCompletionListener) 초기화 이벤트를 받을 리스너 인터페이스 void oncompletion(ovenmediaplayer i) OvenCompletionListener 인터페이스입니다 매개 변수i (OvenMediaPlayer) 플레이어 인스턴스 OvenCompletionListener mcompletionlistener = new OvenCompletionListener() { public void oncompletion(ovenmediaplayer i) { ToastmakeText(getApplicationContext(), Stringformat("Streaming playback is completed"), ToastLENGTH_SHORT)show(); ; mmediaplayerstop(); mmediaplayerprepare(); mmediaplayersetoncompletionlistener(mcompletionlistener); setontimedmetatdataupdatelistener void OvenMediaPlayer::setOnTimedMetadataUpdateListener(OvenTimedMetadateUpdated l) HLS Timed Meta 출력 이벤트를 등록합니다 매개 변수l (OvenTimedMetadateUpdated) 초기화 이벤트를 받을 리스너 인터페이스 void ontimedmetadataupdate(ovenmediaplayer i, String m) OvenTimedMetadateUpdated 인터페이스입니다 매개 변수 i (OvenMediaPlayer) 플레이어 인스턴스 m (String) 메타데이터 OvenTimedMetadataUpdatedListener mtimedmetadatalistener = new OvenTimedMetadataUpdatedListener() { public void ontimedmetadataupdate(ovenmediaplayer t, String meta) { Logd(TAG, Stringformat("TimedMeta : %s", meta)); ; 56 setoncompletionlistener 18

OvenPlayer SDK for Android Developer s Guide, Release 20 mmediaplayersetontimedmetadataupdatelistener(mtimedmetadatalistener); 57 setontimedmetatdataupdatelistener 19

CHAPTER 6 부록 State Diagram 20