|
나클립스 모바일 플레이어 SDK(안드로이드 용) - 개발자 레퍼런스 가이드
|
|
|
S/W 명칭 |
안드로이드 OS 기반 나클립스 플레이어 모바일 SDK (Naclips Player Mobile SDK for Android) |
|
S/W 분류 |
어플리케이션 개발용 SDK(Software Development Kit) 라이브러리 |
|
개발 언어 / 개발 툴 |
Java / Android Studio |
|
적용 OS/Platform |
안드로이드 시스템 (Android System) |
|
S/W 패키지 구성 |
SDK 라이브러리(nexlibs.jar), 샘플 소스 |
|
nexlibs.jar | -> cxPlayer > cx_serv_retv > cx_media_inf |
| -> cxString |
| -> cxEtce > cx_media_type |
|
cxPlayer |
SDK 메인 클래스, 암호화된 나클립스 스트리밍 소스URL을 쿼리, 썸네일 이미지 다운로드, Android MediaPlayer 객체에 영상을 플레이 한다. |
|
cx_serv_retv |
나클립스 VOD 서버 엔진으로부터 쿼리된 스트리밍 정보를 저장하고 관리하는 클래스. |
|
cx_media_inf |
나클립스 VOD 서버 엔진으로부터 쿼리된 미디어 파일의 헤더 정보가 저장되는 클래스. |
|
cxString |
문자열 관련 Static 함수를 저장하는 클래스. |
|
cxEtce |
기타 Static 함수를 저장하는 클래스. |
|
cx_media_type |
비디오 / 오디오 파일 확장자 쿼리 클래스. |
|
|
cxPlayer |
|
void setMediaPlayer
(MediaPlayer x_player, Context x_context) |
Android MediaPlayer 객체값 입력, x_context 값은 getApplicationContext() 이다. |
|
boolean setProperty(String s_name, boolean b_value) |
boolean 형의 프로퍼티 값을 cxPlayer 객체의 입력한다. s_name 인자 값은 아래와 같다.
cxPlayer.FXID_AUTOPLAY : 어플리케이션 실행시 자동으로 영상 플레이.
|
|
boolean setProperty(String s_name, int i_value) |
int 형의 프로퍼티 값을 cxPlayer 객체의 입력한다. s_name 인자 값은 아래와 같다.
cxPlayer.FXID_MULBPSDX : 다중 대역폭 별로 저장된 파일 스트리밍시, 대역폭 순서값.
cxPlayer.FXID_TMBSRCDX : 다중 대역폭 별로 저장된 파일 스트리밍시, 썸네일 이미지세트 순서값.
|
|
boolean setProperty(String s_name, String s_value) |
String 형의 프로퍼티 값을 cxPlayer 객체의 입력한다. s_name 인자 값은 아래와 같다.
cxPlayer.FXID_VODURL : 스트리밍할 동영상 파일 URL
cxPlayer.FXID_IMGURL : 썸네일 이미지 디렉토리 URL
cxPlayer.FXID_LICNKEY : SDK 라이센스 키값
|
|
Uri getServerURL(String s_name) |
동영상 파일 위치 URL 또는 썸네일 이미지 디렉토리 위치 URL 값 가져옴. |
|
boolean getPropertyBool(String s_name) |
boolean 형의 프로퍼티 값을 가져온다. s_name 인자값은 setProperty 메서드 참조. |
|
int getPropertyInt(String s_name) |
int 형의 프로퍼티 값을 가져온다. s_name 인자값은 setProperty 메서드 참조. |
|
String getPropertyStr(String s_name) |
String 형의 프로퍼티 값을 가져온다. s_name 인자값은 setProperty 메서드 참조. |
|
void prepareStream() |
cxPlayer 객체의 auto_play 옵션의 비활성 되어 있을때, 수동으로 동영상 플레이를 시작한다.
prepareStream()은 나클립스 VOD 서버에 접속하여 암호화된 미디어 스트리밍 URL을 쿼리한다.
|
|
void prepareMedia() |
cxPlayer 객체의 auto_play 옵션의 비활성 되어 있을때 사용되는 메서드 로써, prepareStream() 메서드 실행후 나클립스 VOD 서버로 부터 얻어진 암호화된 미디어 스트리밍 URL로 Android MediaPlayer 객체에 동영상 스트리밍을 준비하는 역할을 한다. (EVENT-ID가 SFX_EVNT_GetEncuri인 eventNplayer이벤트에서 이 메서드를 실행 권장)
|
|
cx_serv_retv getServretv() |
cxPlayer 객체의 cx_serv_retv 클래스 객체를 리턴. |
|
boolean play() |
cxPlayer 객체의 auto_play 옵션의 비활성 되어 있을때, prepareMedia() 메서드 실행후 동영상의 스트리밍 패킷이 준비되면 영상을 재생하거나(mplayPrepared 이벤트에서 이 메서드를 실행 권장), 재생중 잠시 멈춤상태에서 다시 재생 시작할때 사용한다.
|
|
boolean pause() |
동영상 재생중 잠시 멈춤한다. |
|
boolean stop() |
영상 재생을 종료한다. |
|
void close() |
나클립스 VOD 서버와 스트리밍 연결을 단절 및 초기화 한다. |
|
void destroy() |
Android MediaPlayer 객체를 소멸시키고, VOD 서버엔진과의 연결 쓰레드를 종료한다.
어플 종료시 반드시 수행해야 하는 메서드. (MainActivity의 onDestroy 이벤트 함수에서 수행 권장)
|
|
|
cx_serv_retv |
|
String getMediaFuid() |
동영상 파일의 파일 Unique-ID 값. 썸네일 이미지 파일명 조합시 사용한다. |
|
cx_media_inf getMediaHeader() |
VOD 서버에서 쿼리된 동영상 파일 헤더 정보를 가져온다.
cx_media_inf class는 아래와 같은 프로퍼티를 가지고 있다.
i_type(미디어 파일 타입:정수), i_kbps(초당전송률:Killobits/sec), r_filesize(파일크기: 실수), i_duration(재생시간:정수), s_audio4cc(오디오 압축방식:문자열 / 기본값:null), s_video4cc(비디오 압축방식:문자열 / 기본값:null)
|
|
Uri getMediaUri() |
암호화된 동영상 미디어 소스 URL을 가져온다. |
|
String getServVersion() |
나클립스 VOD 서버의 엔진 버전을 가져온다. |
|
int getThumbCount() |
쿼리된 썸네일 이미지 갯수를 리턴한다. |
|
String getThumbName(int i_dx) |
i_dx 번째 썸네일 이미지 시간정보 문자열을 가져온다.
getMediaFuid() 메서드의 리턴 문자열과 조합하여 디바이스 캐시에 저장된 실제 썸네일 이미지 파일명을 생성한다.
|
|
|
cxEtce |
|
static int SECP(double rVal) |
초단위 시간을 밀리초 단위 시간으로 변환한다. |
|
static int timeToSec
(String s_hour, String s_min, String s_sec) |
시간,분,초 숫자형 문자열을 입력하면 초단위 시간값을 리턴한다. |
|
|
cxString |
|
static boolean isNullOrEmpty(String s_var) |
s_var 문자열이 null 또는 blank(“”)이면 참을 리턴한다. |
|
|
cx_media_type |
|
cx_media_type(int i_type) |
cx_media_type 클래스 생성자. i_type 인자는 Audio/Video 파일 타입의 숫자값이다.
(i_type값은 cx_serv_retv 클래스 객체의 getMediaHeader().i_type 값이다.)
|
|
void setType(int i_type) |
cx_media_type 클래스 객체의 Audio/Video 파일 타입의 숫자값을 입력 또는 변경한다. |
|
String getType() |
입력된 Audio/Video 파일 타입의 숫자 값에 해당하는 미디어 타입 확장자를 리턴하다. |
|
String getTypeDesc() |
입력된 Audio/Video 파일 타입의 숫자 값에 해당하는 미디어 타입 문자열을 리턴한다. |
|
|
cxPlayer |
|
void mplayPrepared(MediaPlayer x_mp) |
MediaPlayer 객체의 onPrepared 이벤트의 확장 이벤트 함수. |
|
void mplayBufferingUpdate
(MediaPlayer x_mp, int percent) |
MediaPlayer 객체의 onBufferingUpdate 이벤트의 확장 이벤트 함수. |
|
void mplayCompletion(MediaPlayer x_mp) |
MediaPlayer 객체의 onCompletion 이벤트의 확장 이벤트 함수. |
|
void mplayVideoSizeChanged
(MediaPlayer x_mp, int width, int height) |
MediaPlayer 객체의 onVideoSizeChanged 이벤트의 확장 이벤트 함수. |
|
void mplaySeekComplete(MediaPlayer x_mp) |
MediaPlayer 객체의 onSeekComplete 이벤트의 확장 이벤트 함수. |
|
boolean mplayInfo(MediaPlayer x_mp, int what, int extra) |
MediaPlayer 객체의 onInfo 이벤트의 확장 이벤트 함수. |
|
boolean mplayError(MediaPlayer x_mp, int what, int extra) |
MediaPlayer 객체의 onError 이벤트의 확장 이벤트 함수. |
|
void mplayEvent(int i_event) |
MediaPlayer 객체의 Event_ID를 출력하는 이벤트. 출력되는 Event_ID 인자값은 아래와 같다.
cxPlayer.IFX_MEVNT_Prepared , cxPlayer.IFX_MEVNT_BufferingUpdate
cxPlayer.IFX_MEVNT_Completion , cxPlayer.IFX_MEVNT_VideoSizeChanged
cxPlayer.IFX_MEVNT_SeekComplete , cxPlayer.IFX_MEVNT_Info
cxPlayer.IFX_MEVNT_Error (예를들면, MediaPlayer 객체에서 onPrepared 이벤트가 발생할 경우 mplayEvent 이벤트 함수가 먼저 실행되고, mplayPrepared 이벤트 함수가 실행된다. 이때 mplayEvent 이벤트 함수의 Event_ID 인자값은 cxPlayer.IFX_MEVNT_Prepared 이다.)
|
|
void eventNplayer
(final String s_name, final String s_option,
final int i_option) |
cxPlayer 클래스 객체의 진행상태 이벤트 함수 이다. 이벤트명에 해당하는 s_name 인자의 목록은 아래와 같다.
cxPlayer.SFX_EVNT_GetEncuri : 나클립스 VOD 서버로 부터 암호화된 소스URL 쿼리 완료.
cxPlayer.SFX_EVNT_Message : cxPlayer 클래스 객체에서 메시지 발생.
cxPlayer.SFX_EVNT_Error : cxPlayer 클래스 객체에서 에러 발생.
cxPlayer.SFX_EVNT_GenThumbs : Nextube 이미지 서버로부터 썸네일 이미지 파일 수신완료.
s_option, i_option 인자값은 s_name 값에 따라 아래와 같은 값이 전달된다.
SFX_EVNT_GetEncuri - s_option: 암호화된 소스URL, i_option: return code
SFX_EVNT_Message - s_option: Message string
SFX_EVNT_Error - s_option: Error description, i_option: Error code
SFX_EVNT_GenThumbs - i_option: Thumbnail count
|
|
6. SDK 라이브러리 적용 프로그래밍 요약. |
1) cxPlayer 클래스의 상속 클래스 정의. |
cxPlayer 클래스를 상속하여 나클립스 플레이어 클래스를 정의한다. 이때 상속된 클래스에서는 cxPlayer 클래스에서 지원하는 이벤트 함수들을 기술한다. |
private class cx_nplayer extends cxPlayer{
@Override
public void mplayEvent(int i_event){
....
}
@Override
public void mplayPrepared(MediaPlayer x_mp){
....
}
....
}
|
2) 상속받은 나클립스 플레이어 클래스의 객체 생성 및 객체의 프로퍼티 값 입력. |
private MediaPlayer m_xVideo = null;
....
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
m_xVideo = new MediaPlayer();
....
m_xPlayer = new cx_nplayer();
m_xPlayer.setMediaPlayer(m_xVideo, getApplicationContext()); // MediaPlayer 객체 입력, 필수 프로퍼티.
m_xPlayer.setProperty(cxPlayer.FXID_LICNKEY,"D48A4B8529F29460104A596C600 .... FB2B2"); //SDK 라이센스키 입력, 필수 프로퍼티.
....
m_xPlayer.setProperty(cxPlayer.FXID_AUTOPLAY,true); //스트리밍 소스 주소 입력시, 자동 플레이 활성화.
m_xPlayer.setProperty(cxPlayer.FXID_VODURL,"assp://192.168.1.1/mp4_files/test.mp4"); //스트리밍 미디어 파일 주소URL
m_xPlayer.setProperty(cxPlayer.FXID_IMGURL,"cssp://192.168.1.1/test_media/"); //Nextube 썸네일 이미지 서버 주소URL (생략시 썸네일 이미지 비활성)
....
}
|
3) VOD 스트리밍 시작. |
나클립스 플레이어 객체의 스트리밍 플레이를 시작한다. m_xPlayer.prepareStream() 메서드는 플레이어 객체가 나클립스 VOD서버와 연결하여 암호화된 VOD 스트리밍 URL을 쿼리한다. 이때 객체의 자동 플레이 옵션(m_xPlayer.setProperty(cxPlayer.FXID_AUTOPLAY.. 참조)이 비활성화 하였다면 “4)수동 스트리밍 플레이 처리” 단락을 참고 하기 바랍니다. |
@Override
public void surfaceCreated(SurfaceHolder x_holder) {
m_xVideo.setDisplay(x_holder);
m_xPlayer.prepareStream();
....
}
|
4) 수동 스트리밍 플레이 처리. |
나클립스 플레이어 객체의 자동 플레이 옵션(m_xPlayer.setProperty(cxPlayer.FXID_AUTOPLAY.. 참조)을 비활성화 하여, 수동으로 단계별 스트리밍 플레이를 처리하려면 아래 셈플 스크립트를 참고하기 바랍니다.
Step 1 : m_xPlayer.prepareStream() 메서드 실행.
Step 2 : eventNplayer 이벤트 함수의 s_name 인자값이 SFX_EVNT_GetEncuri 인경우, m_xPlayer.prepareMedia() 메서드 실행.
(VOD 서버와 접속하여 얻어진 암호화된 스트리밍 URL을 MediaPlayer 객체에 입력하여 스트리밍 재생 시작함)
Step 3 : MediaPlayer가 스트리밍 재생 준비가 완료되면 mplayPrepared 이벤트 함수가 실행되는데, mplayPrepared 이벤트 함수에서 m_xPlayer.play() 메서드 실행.
|
@Override
public void surfaceCreated(SurfaceHolder x_holder) {
m_xVideo.setDisplay(x_holder);
m_xPlayer.prepareStream();
....
}
....
@Override
public void eventNplayer(final String s_name, final String s_option, final int i_option){
....
if(s_name.equals(SFX_EVNT_GetEncuri)){
if(i_option == 0) m_xPlayer.prepareMedia();
}
....
}
....
@Override
public void mplayPrepared(MediaPlayer x_mp){
m_xPlayer.play();
}
|
5) 나클립스 플레이어 객체 소멸. |
cxPlayer 클래스의 destroy() 메서드를 실행하여 cxPlayer클래스 객체를 소멸한다. (어플리케이션 종료전 반드시 수행 요망) |
@Override
public void onDestroy() {
m_xPlayer.destroy();
super.onDestroy();
}
|
|
| 경기도 고양시 덕양구 삼원로 83, 1030호(원흥동, 광양프런티어밸리6차 지식산업센터) 넥스폴리테크놀러지. | TEL: 031) 963-9035. Copyright (C) 2024 Nexpoly Technology Inc. All rights reserved.
|
|