빠른메뉴

컨텍정보

로그인

제품소개 회사소개 고객사 제품문의 제품관리

나클립스 모바일 플레이어 SDK(안드로이드 용) - 개발자 레퍼런스 가이드
1. 소프트웨어 사양
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), 샘플 소스
2. 라이브러리 클래스 구조.
nexlibs.jar-> cxPlayer > cx_serv_retv > cx_media_inf
-> cxString
-> cxEtce > cx_media_type
3. 클래스별 기능 설명
cxPlayer SDK 메인 클래스, 암호화된 나클립스 스트리밍 소스URL을 쿼리, 썸네일 이미지 다운로드, Android MediaPlayer 객체에 영상을 플레이 한다.
cx_serv_retv 나클립스 VOD 서버 엔진으로부터 쿼리된 스트리밍 정보를 저장하고 관리하는 클래스.
cx_media_inf 나클립스 VOD 서버 엔진으로부터 쿼리된 미디어 파일의 헤더 정보가 저장되는 클래스.
cxString 문자열 관련 Static 함수를 저장하는 클래스.
cxEtce 기타 Static 함수를 저장하는 클래스.
cx_media_type 비디오 / 오디오 파일 확장자 쿼리 클래스.
4. 클래스별 메서드 목록
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 파일 타입의 숫자 값에 해당하는 미디어 타입 문자열을 리턴한다.
5. 클래스별 이벤트 함수 목록.
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();
}


경기도 고양시 일산동구 정발산로 19, 802호(장항동 863, 지평프라자) 넥스폴리테크놀러지. | TEL: 031) 963-9035. FAX: 031) 601-8094.
Copyright (C) 2018 Nexpoly Technology Inc. All rights reserved.