StarPlayerView
Objective-C
@interface StarPlayerView : UIView
#pragma mark - player
@property (nonatomic, weak, nullable) id<StarPlayerViewDelegate> delegate; //target delegate
@property (nonatomic, readonly) StarPlayerOpenState openState; //플레이어 준비 상태
@property (nonatomic, readonly) StarPlayerPlayState playState; //플레이어 재생 상태
/**
* 비디오 layer
* @note
* 비디오 영상이 출력되는 layer
* PlayerStateReadyToPlay 상태 이후에 값이 셋팅됨
*/
@property (nonatomic, readonly) CALayer * _Nullable videoLayer;
/**
* 플레이어 재생 가능 시간
* @note
* 단위 : sec, millisec
* @see millisecModeEnabled
*/
@property (nonatomic, readonly) NSTimeInterval playerDuration;
/**
* 플레이어 현재 재생 시간
* @note
* 단위 : sec, millisec
* @see millisecModeEnabled
*/
@property (nonatomic, readonly) NSTimeInterval playerCurrentTime;
/**
* 플레이어 배속 설정
* @note
* 범위 : 0.5이상 ~ 2이하
* PlayerStatePlaying 상태에서만 배속 설정 가능
* eventEnabled이 true일 경우 playing_content 이벤트 전송 (배속 정보 전송)
* @see eventEnabled */
@property (nonatomic, readwrite) CGFloat rate;
/**
* 플레이어 재생 여부 */
@property (nonatomic, readonly) BOOL isPlaying;
/**
* 플레이어 버퍼링 여부 */
@property (nonatomic, readonly) BOOL isBuffering;
/**
* 기본 플레이어 사용여부
* @note
* 플레이어가 중지 상태(PlayerStateStopped) 일 때 변경 가능
* true 인 경우 : currentAudioDelay 사용불가
* false 인 경우 : captureFrameWithTime 사용불가
* @see captureFrameWithTime
* @see currentAudioDelay */
@property (nonatomic, readwrite) BOOL basicPlayerEnabled;
/**
* 낮은 대기 시간 사용 여부(서브플레이어 전용)
* @note
* 버퍼를 가져오는 시간이 짧아 스트리밍 로딩 속도 향상
* 단, 네트워크 상태가 불안정할 경우 끊김 현상이 발생하여 스트리밍 안정성에 문제가 발생할 수 있음
* (해당 옵션 사용시 LTE 이상 네트워크 속도 권장)
*
* playState가 StatePlayerStateStarting 이상이면 플레이어 reload
* @see basicPlayerEnabled */
@property (nonatomic, readwrite) BOOL lowLatancyEnabled;
/**
* 오디오 지연시간 (millisec)
* @note
* 오디오 싱크가 맞지 않을 때 사용
* 기본 플레이어는 지원하지 않음
* @see basicPlayerEnabled */
@property (nonatomic, readwrite) NSInteger currentAudioDelay;
/**
* 플레이어 이어보기(재생 시작 위치)
* @note
* 단위 : sec, millisec
* OpenStateReady 상태 일때 값 설정 가능
* @see millisecModeEnabled */
//@property (nonatomic, readwrite) NSUInteger beginTime DEPRECATED_MSG_ATTRIBUTE("Use setPlayerContentModel instead of beginTime.");
/**
* 누적 시청 시간
* @note
* 단위 : millisec
* 동영상 PlayerDuration을 초과할 수 없음
* Event 시간 계산에 사용 (play_time, play_time2) */
@property (nonatomic, readonly) NSUInteger watchedPlayTime;
/**
* 플레이어 볼륨크기 (범위 0~1) */
@property (nonatomic, readonly) CGFloat outputVolume;
/**
* 플레이어 화면 종횡비 설정
* @note
* 원본화면, 꽉찬화면, 16:9화면, 4:3화면 */
@property (nonatomic, readwrite) StarPlayerAspectRatio aspectRatio;
/**
* 밀리 세컨드 모드 활성화 여부
* @note
* 플레이어가 millisec 단위로 동작 (기본 설정은 sec)
* 플레이어가 중지 상태(PlayerStateStopped) 일 때 변경 가능 */
@property (nonatomic, readwrite) BOOL millisecModeEnabled;
/**
* 플레이어 백그라운드 재생 활성화 여부
* @note
* pictureInPictureEnabled가 true이면 backgroundPlaybackEnabled는 true 변경됨 (pip가 활성화 되면 백그라운드 재생 자동 활성화)
* @see pictureInPictureEnabled*/
@property (nonatomic, readwrite) BOOL backgroundPlaybackEnabled;
/**
* 미러링 & 화면 캡쳐 차단 여부
* @note
* 플레이어가 중지 상태(PlayerStateStopped) 일 때 변경 가능 */
@property (nonatomic, readwrite) BOOL mirroringGuardEnabled;
/**
* 플레이어 전용 워터마크 활성화 여부 */
@property (nonatomic, readwrite) BOOL watermarkEnabled;
/**
* 플레이어 Audio 전용 Equalizer Animation (mp3 전용) 활성화 여부 */
@property (nonatomic, readwrite) BOOL mP3EqualizerAnimationEnabled;
/**
* 플레이어 구간 반복 모드 활성화 */
@property (nonatomic, readwrite) BOOL rangeRepeatEnabled;
/**
* 플레이어 구간 반복 자동 활성화
* @note
* 구간 반복 자동 재생
* false : 구간 끝에 도달시 pause됨 */
@property (nonatomic, readwrite) BOOL rangeRepeatAutoPlayEnabled;
/**
* 구간반복 최소 시간 */
@property (nonatomic, readwrite) NSUInteger rangeRepeatMinTime;
/**
* 구간반복 최대 시간 */
@property (nonatomic, readwrite) NSUInteger rangeRepeatMaxTime;
/**
* 플레이어 구간 반복 모드 Min, Max 시간 설정
* @param minTime 최소 시간
* @param maxTime 최대 시간 */
- (void)setRangeRepeatMinTime:(NSUInteger)minTime maxTime:(NSUInteger)maxTime;
/**
* 플레이어 open
* @note
* 플레이어 실행에 필요한 준비작업 (라이센스 검증 등)
* 기존에 라이센스 인증을 완료한 상태라면 다운로드된 미디어 파일은 오프라인에서도 재생가능 (스트리밍 재생은 해당x)
* 온라인 상태에서는 서버에 라이센스 인증을 요청하여 상태를 갱신함
* StarPlayerLicense class의 authTheLicenseAtServer 호출의 선행 없이도 해당 함수의 호출로 플레이어 재생 가능
*
* 라이센스 검증 실패 : 에러 발생 (playerEventOccurred)
* 라이센스 검증 성공 : OpenStateIdle -> OpenStateReady 상태 변경
* @see starPlayerView:playerEventOccurred:withEventMethod:
* @see StarPlayerError
* @param license 라이센스 코드*/
- (void)open:(NSString *_Nonnull)license;
/**
* 플레이어 재생에 필요한 StarPlayerContentModel 을 설정
* @note
* OpenStateReady & PlayerStateStopped 상태일 때 변경 가능
* @param content 플레이어 재생 정보 */
- (void)setPlayerContentModel:(StarPlayerContentModel *_Nonnull)content;
/**
* 플레이어 자원 할당 해제
* @note
* 플레이어의 자원 해제
* - viewWillDisappear, viewDidDisappear에서 해당 함수를 호출할 경우 자원 해제가 안될 수 있음, 반드시 플레이어 자원 해제 완료후 ViewController dissmiss 호출을 권장
*
* 자원 할당 해제 플로우
* - playState > PlayerStateStopped : stop(영상 정지) -> 이벤트 전송(EndContnet) -> scms 전송(disconnect) -> 자원 해제 -> completion 호출
* - playState == PlayerStateStopped : 자원 해제 -> completion 호출
*
* 자원 할당 해제 타임아웃 -> 2 sec
* - 이벤트 또는 scms 전송 지연 고려
* - 전송이 지연될 경우 타임아웃 처리(데이터 소실될 수 있음)
*
* @param completion 완료 블록 */
- (void)free:(void (^_Nullable)(void))completion;
/**
* 플레이어 재생
* @note
* eventEnabled 'true'이고 PlayerStateReadyToPlay 상태이면 begin_content 이벤트 전송
* @see eventEnabled */
- (void)play;
/**
* 플레이어 일시정지
* @note
* eventEnabled 'true'일 경우 playing_content 이벤트 전송
* @see eventEnabled */
- (void)pause;
/**
* 플레이어 중지
* @note
* eventEnabled 'true'일 경우 end_content 이벤트 전송
* @see eventEnabled */
- (void)stop;
/**
* 뒤로가기 (seek to left)
* @note
* 단위 : sec, millisec
* @see millisecModeEnabled
* @param skipTime 건너뛸 시간
* @param completion 완료 콜백 */
- (void)backward:(NSUInteger)skipTime completion:(void (^_Nullable)(BOOL finished, BOOL isMoveToTheRepeatMinPosition))completion;
/**
* 앞으로가기 (seek to right)
* @note
* 단위 : sec, millisec
* @see millisecModeEnabled
* @param skipTime 건너뛸 시간
* @param completion 완료 콜백 */
- (void)forward:(NSUInteger)skipTime completion:(void (^_Nullable)(BOOL finished, BOOL isMoveToTheRepeatMinPosition))completion;
/**
* 플레이어 시간 이동
* @note
* 단위 : sec, millisec
* @see millisecModeEnabled
* @param seekTime 건너뛸 시간
* @param completion 완료 콜백 */
- (void)seekToTime:(NSUInteger)seekTime completion:(void (^_Nullable)(BOOL finished, BOOL isMoveToTheRepeatMinPosition))completion;
/**
* 동영상 현재 프레임 이미지 추출 (비트맵)
* @note
* 기본 플레이어 전용
* 라이브스트리밍 : 추출 가능
* default : 480x320
* @see basicPlayerEnabled
* @param size 썸네일 추출 크기(width, height)
* @param completion 완료콜백(썸네일 이미지 반환) */
- (void)captureCurrentFrame:(CGSize)size completion:(void (^_Nullable)(CGImageRef _Nullable image))completion;
/**
* 동영상 프레임 이미지 추출 (비트맵)
* @note
* 스트리밍 : 버퍼 데이터가 있을 경우만 썸네일 추출가능 (현재 재생위치의 썸네일 추출 권장)
* 라이브스트리밍 : 추출 불가
* default : 480x320
* @see millisecModeEnabled
* @param time 영상 추출 시간 (sec, millisec)
* @param size 썸네일 추출 크기(width, height)
* @param completion 완료콜백(썸네일 이미지 반환) */
- (void)captureFrameWithTime:(NSUInteger)time size:(CGSize)size completion:(void (^_Nullable)(CGImageRef _Nullable image))completion;
#pragma mark - HLS (기본 플레이어만 지원)
@property (nonatomic, readonly) NSArray<StarPlayerHLSStream*>* _Nonnull hlsStreamList; //streamList at MasterPlaylist
/**
* HLS MasterPlaylist stream 중에서 하나의 stream만 선택하여 영상 재생
* @note
* Stream은 MasterPlaylist에서 #EXT-X-STREAM-INF 태그에 해당함
* @param stream 선택하여 재생할 stream
*/
- (void)selectHLSVideoStream:(StarPlayerHLSStream *_Nonnull)stream;
/**
* HLS MasterPlaylist Alternative Media중에 하나의 Media를 선택하여 비디오 또는 Audio를 변경
* @note
* Media의 종류는 Audio, Video 두가지가 존재
* Media는 MasterPlaylist에서 #EXT-X-MEDIA 태그에 해당함
*/
- (void)selectHLSAlternativeMedia:(StarPlayerHLSAlternativeMedia *_Nonnull)media;
/**
* HLS 영상 '자동' 모드 활성화
* @note
* xStream list가 2개 이상 존재하면 자동 모드 활성화
* @return 활성화 성공 여부 (이미 활성화 되어 있거나 활성화 할 수 없는 환경이면 return 'NO')
*/
- (BOOL)activateHlsAutoStream;
/**
* HLS 오디오 '기본' 모드 활성화
* @note
* 선택된 오디오를 초기 상태로 원복
* @return 활성화 성공 여부 (이미 활성화 되어 있거나 활성화 할 수 없는 환경이면 return 'NO')
*/
- (BOOL)activateHlsDefaultAlternativeAudio;
#pragma mark - StarPlayer PIP (기본 플레이어만 지원)
/**
* PictureInPicture(PIP) 활성화 여부
* @note
* default : NO
* pictureInPictureEnabled가 true이면 backgroundPlaybackEnabled는 true 변경됨 (pip가 활성화 되면 백그라운드 재생 자동 활성화)
* 기본 플레이어 및 지원되는 기기에 한해서만 (pictureInPictureSupported)
* @see backgroundPlaybackEnabled
* @see pictureInPictureSupported*/
@property (nonatomic, readwrite) BOOL pictureInPictureEnabled;
/**
* PictureInPicture(PIP) skip버튼 비활성화 여부
* @note
* deafalut: NO
* forward, backward skip 활성화 비활성화 가능
* ios 14.0 이상만 지원 */
@property (nonatomic, readwrite) BOOL pictureInPictureSkipDisabled API_AVAILABLE(ios(14.0), macos(11.0), tvos(14.0)) API_UNAVAILABLE(watchos);
/**
* 디바이스 PictureInPicture(PIP) 지원 여부
* @note
* 기본 플레이어만 지원 */
@property (nonatomic, readonly, getter=isPictureInPictureSupported) BOOL pictureInPictureSupported;
/**
* PictureInPicture(PIP) 활성화 여부
* @note
* 기본 플레이어만 지원 */
@property (nonatomic, readonly, getter=isPictureInPictureActive) BOOL pictureInPictureActive;
/**
* PictureInPicture(PIP) 현재 사용 가능 여부
* @note
* 기본 플레이어만 지원 */
@property (nonatomic, readonly, getter=isPictureInPicturePossible) BOOL pictureInPicturePossible;
/**
* PictureInPicture(PIP) 시작
* @note
* 기본 플레이어만 지원 */
- (void)startPictureInPicture;
/**
* PictureInPicture(PIP) 중지
* @note
* 기본 플레이어만 지원 */
- (void)stopPictureInPicture;
/**
* PIP start stop toggle
* @note
* 기본 플레이어만 지원 */
- (void)toggleStartStopPictureInPicture;
/**
* PIP에 StarplayerSubtitleView 설정
* @note
* StarplayerSubtitleView를 추가하면 PIP에 자막 표시 가능
* 기본 플레이어만 지원
*/
-(void)setupSubtitleViewInPIP:(UIView *_Nullable)subtitleView;
#pragma mark - 비디오 줌인&줌아웃
/**
* 비디오 Zoom 활성화 여부
* @note
* UIPinchGestureRecognizer에 starPlayerHandlePinch: 를 연동해줘야 기능을 사용할 수 있음
*/
//@property (nonatomic, readwrite) BOOL videoZoomEnabled;
/**
* Zoom 최대 scale 값 (default:5.0)
* @note
* 1미만의 값은 설정할 수 없음
*/
//@property (nonatomic, readwrite) double videoZoomMaxScale;
/**
* Zoom 상태의 비디오 layer 초기화
* @note
* 1.scale 1상태로 초기화
* 2.이동된 layer 원복
*/
//- (void)resetZoomedVideoLayer;
#pragma mark - player gesture (드래그, 비디오 줌인&줌아웃)
/**
* 플레이어 Pan gesture selector
* 화면 드래그 상태 delegate 호출
* @see starPlayerView:screenDragState:draggingValueChanged: */
- (IBAction)starPlayerHandlePan:(UIPanGestureRecognizer *_Nullable)panGestureRecognizer;
/**
* 플레이어 Pinch gesture selector
* 화면 핀치 상태 delegate 호출
* @see 추가 예정*/
- (IBAction)starPlayerHandlePinch:(UIPinchGestureRecognizer *_Nullable)pinchGestureRecognizer;
#pragma mark - 학습이력 Event
/**
* playing_content(Event) 전송 interval
* @note
* 단위 : sec
* default : 180초
* 플레이어가 재생중 일 때만 이벤트 스케줄러가 동작
* 플레이어가 중지 상태(PlayerStateStopped) 일 때 변경 가능
* @see eventEnabled */
@property (nonatomic, readwrite) uint16_t eventPlayingContentInterval;
/**
* 플레이어 학습이력 이벤트 전송 활성화 여부
* @note
* 학습이력 이벤트(begin_content, playing_content, end_content)
* begin_content : 컨텐츠 재생 준비 완료 됐을 때 전송 (PlayerStateReadyToPlay)
* playing_content : 일시정지(PlayerStatePause), 배속 변경, 재생중(eventPlayingContentInterval 주기) 전송
* end_content : 컨텐츠 재생 정지 또는 완료시 전송 (PlayerStateStop)
*
* 플레이어가 중지 상태(PlayerStateStopped) 일 때 변경 가능
* @see eventPlayingContentInterval */
@property (nonatomic, readwrite) BOOL eventEnabled;
/**
* 미전송 데이터 개수 조회
* @note 플레이어가 재생 준비가 되었을 경우 작동 (OpenStateReady) */
- (int)selectMissedEventDataCount;
/**
* 미전송 이벤트 데이터 전체 삭제
* @note
* 미전송 데이터가 전송이 안되고 많이 쌓여 있을 경우 부하가 발생할 수 있으므로 삭제할 수 있는 함수 제공
* 플레이어가 재생 준비가 되었을 경우 동작 (OpenStateReady) */
- (void)deleteAllMissedEventData;
@end
Swift
class StarPlayerView
Undocumented
-
Undocumented
Declaration
Objective-C
@property (nonatomic, weak, nullable) id<StarPlayerViewDelegate> delegateSwift
weak var delegate: StarPlayerViewDelegate? { get set } -
Undocumented
Declaration
Objective-C
@property (nonatomic, readonly) StarPlayerOpenState openStateSwift
var openState: StarPlayerOpenState { get } -
Undocumented
Declaration
Objective-C
@property (nonatomic, readonly) StarPlayerPlayState playStateSwift
var playState: StarPlayerPlayState { get } -
비디오 layer
Note
비디오 영상이 출력되는 layer PlayerStateReadyToPlay 상태 이후에 값이 셋팅됨Declaration
Objective-C
@property (nonatomic, readonly) int *_Nullable videoLayer;Swift
var videoLayer: UnsafeMutablePointer<Int32>? { get } -
플레이어 재생 가능 시간 @note 단위 : sec, millisec
See
millisecModeEnabledDeclaration
Objective-C
@property (nonatomic, readonly) NSTimeInterval playerDuration;Swift
var playerDuration: TimeInterval { get } -
플레이어 현재 재생 시간 @note 단위 : sec, millisec
See
millisecModeEnabledDeclaration
Objective-C
@property (nonatomic, readonly) NSTimeInterval playerCurrentTime;Swift
var playerCurrentTime: TimeInterval { get } -
플레이어 배속 설정 @note 범위 : 0.5이상 ~ 2이하 PlayerStatePlaying 상태에서만 배속 설정 가능 eventEnabled이 true일 경우 playing_content 이벤트 전송 (배속 정보 전송)
See
eventEnabledDeclaration
Objective-C
@property (nonatomic) CGFloat rate;Swift
var rate: Double { get set } -
플레이어 재생 여부
Declaration
Objective-C
@property (nonatomic, readonly) BOOL isPlaying;Swift
var isPlaying: Bool { get } -
플레이어 버퍼링 여부
Declaration
Objective-C
@property (nonatomic, readonly) BOOL isBuffering;Swift
var isBuffering: Bool { get } -
기본 플레이어 사용여부 @note 플레이어가 중지 상태(PlayerStateStopped) 일 때 변경 가능 true 인 경우 : currentAudioDelay 사용불가 false 인 경우 : captureFrameWithTime 사용불가
See
captureFrameWithTimeSee
currentAudioDelayDeclaration
Objective-C
@property (nonatomic) BOOL basicPlayerEnabled;Swift
var basicPlayerEnabled: Bool { get set } -
낮은 대기 시간 사용 여부(서브플레이어 전용) @note 버퍼를 가져오는 시간이 짧아 스트리밍 로딩 속도 향상 단, 네트워크 상태가 불안정할 경우 끊김 현상이 발생하여 스트리밍 안정성에 문제가 발생할 수 있음 (해당 옵션 사용시 LTE 이상 네트워크 속도 권장)
playState가 StatePlayerStateStarting 이상이면 플레이어 reload
See
basicPlayerEnabledDeclaration
Objective-C
@property (nonatomic) BOOL lowLatancyEnabled;Swift
var lowLatancyEnabled: Bool { get set } -
오디오 지연시간 (millisec) @note 오디오 싱크가 맞지 않을 때 사용 기본 플레이어는 지원하지 않음
See
basicPlayerEnabledDeclaration
Objective-C
@property (nonatomic) NSInteger currentAudioDelay;Swift
var currentAudioDelay: Int { get set } -
누적 시청 시간 @note 단위 : millisec 동영상 PlayerDuration을 초과할 수 없음 Event 시간 계산에 사용 (play_time, play_time2)
Declaration
Objective-C
@property (nonatomic, readonly) NSUInteger watchedPlayTime;Swift
var watchedPlayTime: UInt { get } -
플레이어 볼륨크기 (범위 0~1)
Declaration
Objective-C
@property (nonatomic, readonly) CGFloat outputVolume;Swift
var outputVolume: Double { get } -
플레이어 화면 종횡비 설정 @note 원본화면, 꽉찬화면, 16:9화면, 4:3화면
Declaration
Objective-C
@property (nonatomic) StarPlayerAspectRatio aspectRatio;Swift
var aspectRatio: StarPlayerAspectRatio { get set } -
밀리 세컨드 모드 활성화 여부 @note 플레이어가 millisec 단위로 동작 (기본 설정은 sec) 플레이어가 중지 상태(PlayerStateStopped) 일 때 변경 가능
Declaration
Objective-C
@property (nonatomic) BOOL millisecModeEnabled;Swift
var millisecModeEnabled: Bool { get set } -
플레이어 백그라운드 재생 활성화 여부 @note pictureInPictureEnabled가 true이면 backgroundPlaybackEnabled는 true 변경됨 (pip가 활성화 되면 백그라운드 재생 자동 활성화)
See
pictureInPictureEnabledDeclaration
Objective-C
@property (nonatomic) BOOL backgroundPlaybackEnabled;Swift
var backgroundPlaybackEnabled: Bool { get set } -
미러링 & 화면 캡쳐 차단 여부 @note 플레이어가 중지 상태(PlayerStateStopped) 일 때 변경 가능
Declaration
Objective-C
@property (nonatomic) BOOL mirroringGuardEnabled;Swift
var mirroringGuardEnabled: Bool { get set } -
플레이어 전용 워터마크 활성화 여부
Declaration
Objective-C
@property (nonatomic) BOOL watermarkEnabled;Swift
var watermarkEnabled: Bool { get set } -
플레이어 Audio 전용 Equalizer Animation (mp3 전용) 활성화 여부
Declaration
Objective-C
@property (nonatomic) BOOL mP3EqualizerAnimationEnabled;Swift
var mP3EqualizerAnimationEnabled: Bool { get set } -
플레이어 구간 반복 모드 활성화
Declaration
Objective-C
@property (nonatomic) BOOL rangeRepeatEnabled;Swift
var rangeRepeatEnabled: Bool { get set } -
플레이어 구간 반복 자동 활성화 @note 구간 반복 자동 재생 false : 구간 끝에 도달시 pause됨
Declaration
Objective-C
@property (nonatomic) BOOL rangeRepeatAutoPlayEnabled;Swift
var rangeRepeatAutoPlayEnabled: Bool { get set } -
구간반복 최소 시간
Declaration
Objective-C
@property (nonatomic) NSUInteger rangeRepeatMinTime;Swift
var rangeRepeatMinTime: UInt { get set } -
구간반복 최대 시간
Declaration
Objective-C
@property (nonatomic) NSUInteger rangeRepeatMaxTime;Swift
var rangeRepeatMaxTime: UInt { get set } -
플레이어 구간 반복 모드 Min, Max 시간 설정
Declaration
Objective-C
- (void)setRangeRepeatMinTime:(NSUInteger)minTime maxTime:(NSUInteger)maxTime;Swift
func setRangeRepeatMinTime(_ minTime: UInt, maxTime: UInt)Parameters
minTime최소 시간
maxTime최대 시간
-
플레이어 open @note 플레이어 실행에 필요한 준비작업 (라이센스 검증 등) 기존에 라이센스 인증을 완료한 상태라면 다운로드된 미디어 파일은 오프라인에서도 재생가능 (스트리밍 재생은 해당x) 온라인 상태에서는 서버에 라이센스 인증을 요청하여 상태를 갱신함 StarPlayerLicense class의 authTheLicenseAtServer 호출의 선행 없이도 해당 함수의 호출로 플레이어 재생 가능
라이센스 검증 실패 : 에러 발생 (playerEventOccurred) 라이센스 검증 성공 : OpenStateIdle -> OpenStateReady 상태 변경
See
starPlayerView:playerEventOccurred:withEventMethod:See
StarPlayerErrorDeclaration
Objective-C
- (void)open:(NSString *_Nonnull)license;Swift
func open(_ license: String)Parameters
license라이센스 코드
-
플레이어 재생에 필요한 StarPlayerContentModel 을 설정 @note OpenStateReady & PlayerStateStopped 상태일 때 변경 가능
Declaration
Objective-C
- (void)setPlayerContentModel:(StarPlayerContentModel *_Nonnull)content;Swift
func setPlayerContentModel(_ content: StarPlayerContentModel)Parameters
content플레이어 재생 정보
-
플레이어 자원 할당 해제 @note 플레이어의 자원 해제
- viewWillDisappear, viewDidDisappear에서 해당 함수를 호출할 경우 자원 해제가 안될 수 있음, 반드시 플레이어 자원 해제 완료후 ViewController dissmiss 호출을 권장
자원 할당 해제 플로우
- playState > PlayerStateStopped : stop(영상 정지) -> 이벤트 전송(EndContnet) -> scms 전송(disconnect) -> 자원 해제 -> completion 호출
- playState == PlayerStateStopped : 자원 해제 -> completion 호출
자원 할당 해제 타임아웃 -> 2 sec
- 이벤트 또는 scms 전송 지연 고려
전송이 지연될 경우 타임아웃 처리(데이터 소실될 수 있음)
Declaration
Objective-C
- (void)free:(void (^_Nullable)(void))completion;Swift
func free() asyncParameters
completion완료 블록
-
플레이어 재생 @note eventEnabled ‘true'이고 PlayerStateReadyToPlay 상태이면 begin_content 이벤트 전송
See
eventEnabledDeclaration
Objective-C
- (void)play;Swift
func play() -
플레이어 일시정지 @note eventEnabled ‘true'일 경우 playing_content 이벤트 전송
See
eventEnabledDeclaration
Objective-C
- (void)pause;Swift
func pause() -
플레이어 중지 @note eventEnabled ‘true'일 경우 end_content 이벤트 전송
See
eventEnabledDeclaration
Objective-C
- (void)stop;Swift
func stop() -
뒤로가기 (seek to left) @note 단위 : sec, millisec
See
millisecModeEnabledDeclaration
Objective-C
- (void)backward:(NSUInteger)skipTime completion:(void (^_Nullable)(BOOL, BOOL))completion;Swift
func backward(_ skipTime: UInt) async -> (Bool, Bool)Parameters
skipTime건너뛸 시간
completion완료 콜백
-
앞으로가기 (seek to right) @note 단위 : sec, millisec
See
millisecModeEnabledDeclaration
Objective-C
- (void)forward:(NSUInteger)skipTime completion:(void (^_Nullable)(BOOL, BOOL))completion;Swift
func forward(_ skipTime: UInt) async -> (Bool, Bool)Parameters
skipTime건너뛸 시간
completion완료 콜백
-
플레이어 시간 이동 @note 단위 : sec, millisec
See
millisecModeEnabledDeclaration
Objective-C
- (void)seekToTime:(NSUInteger)seekTime completion:(void (^_Nullable)(BOOL, BOOL))completion;Swift
func seek(toTime seekTime: UInt) async -> (Bool, Bool)Parameters
seekTime건너뛸 시간
completion완료 콜백
-
동영상 현재 프레임 이미지 추출 (비트맵) @note 기본 플레이어 전용 라이브스트리밍 : 추출 가능 default : 480x320
See
basicPlayerEnabledDeclaration
Objective-C
- (void)captureCurrentFrame:(CGSize)size completion:(void (^_Nullable)(int))completion;Swift
func captureCurrentFrame(_ size: CGSize) async -> Int32Parameters
size썸네일 추출 크기(width, height)
completion완료콜백(썸네일 이미지 반환)
-
동영상 프레임 이미지 추출 (비트맵) @note 스트리밍 : 버퍼 데이터가 있을 경우만 썸네일 추출가능 (현재 재생위치의 썸네일 추출 권장) 라이브스트리밍 : 추출 불가 default : 480x320
See
millisecModeEnabledDeclaration
Objective-C
- (void)captureFrameWithTime:(NSUInteger)time size:(CGSize)size completion:(void (^_Nullable)(int))completion;Swift
func captureFrame(withTime time: UInt, size: CGSize) async -> Int32Parameters
time영상 추출 시간 (sec, millisec)
size썸네일 추출 크기(width, height)
completion완료콜백(썸네일 이미지 반환)
-
Undocumented
Declaration
Objective-C
@property (nonatomic, readonly) NSArray<StarPlayerHLSStream*>* _Nonnull hlsStreamListSwift
var hlsStreamList: [StarPlayerHLSStream] { get } -
HLS MasterPlaylist stream 중에서 하나의 stream만 선택하여 영상 재생 @note Stream은 MasterPlaylist에서 #EXT-X-STREAM-INF 태그에 해당함
Declaration
Objective-C
- (void)selectHLSVideoStream:(StarPlayerHLSStream *_Nonnull)stream;Swift
func selectHLSVideoStream(_ stream: StarPlayerHLSStream)Parameters
stream선택하여 재생할 stream
-
HLS MasterPlaylist Alternative Media중에 하나의 Media를 선택하여 비디오 또는 Audio를 변경 @note Media의 종류는 Audio, Video 두가지가 존재 Media는 MasterPlaylist에서 #EXT-X-MEDIA 태그에 해당함
Declaration
Objective-C
- (void)selectHLSAlternativeMedia: (StarPlayerHLSAlternativeMedia *_Nonnull)media;Swift
func select(_ media: StarPlayerHLSAlternativeMedia) -
HLS 영상 ‘자동’ 모드 활성화 @note xStream list가 2개 이상 존재하면 자동 모드 활성화
Declaration
Objective-C
- (BOOL)activateHlsAutoStream;Swift
func activateHlsAutoStream() -> BoolReturn Value
활성화 성공 여부 (이미 활성화 되어 있거나 활성화 할 수 없는 환경이면 return ‘NO’)
-
HLS 오디오 ‘기본’ 모드 활성화 @note 선택된 오디오를 초기 상태로 원복
Declaration
Objective-C
- (BOOL)activateHlsDefaultAlternativeAudio;Swift
func activateHlsDefaultAlternativeAudio() -> BoolReturn Value
활성화 성공 여부 (이미 활성화 되어 있거나 활성화 할 수 없는 환경이면 return ‘NO’)
-
PictureInPicture(PIP) 활성화 여부 @note default : NO pictureInPictureEnabled가 true이면 backgroundPlaybackEnabled는 true 변경됨 (pip가 활성화 되면 백그라운드 재생 자동 활성화) 기본 플레이어 및 지원되는 기기에 한해서만 (pictureInPictureSupported)
See
backgroundPlaybackEnabledSee
pictureInPictureSupportedDeclaration
Objective-C
@property (nonatomic) BOOL pictureInPictureEnabled;Swift
var pictureInPictureEnabled: Bool { get set } -
PictureInPicture(PIP) skip버튼 비활성화 여부 @note deafalut: NO forward, backward skip 활성화 비활성화 가능 ios 14.0 이상만 지원
Declaration
Objective-C
@property (nonatomic) BOOL pictureInPictureSkipDisabled;Swift
var pictureInPictureSkipDisabled: Bool { get set } -
디바이스 PictureInPicture(PIP) 지원 여부 @note 기본 플레이어만 지원
Declaration
Objective-C
@property (nonatomic, readonly, getter=isPictureInPictureSupported) BOOL pictureInPictureSupported;Swift
var isPictureInPictureSupported: Bool { get } -
PictureInPicture(PIP) 활성화 여부 @note 기본 플레이어만 지원
Declaration
Objective-C
@property (nonatomic, readonly, getter=isPictureInPictureActive) BOOL pictureInPictureActive;Swift
var isPictureInPictureActive: Bool { get } -
PictureInPicture(PIP) 현재 사용 가능 여부 @note 기본 플레이어만 지원
Declaration
Objective-C
@property (nonatomic, readonly, getter=isPictureInPicturePossible) BOOL pictureInPicturePossible;Swift
var isPictureInPicturePossible: Bool { get } -
PictureInPicture(PIP) 시작 @note 기본 플레이어만 지원
Declaration
Objective-C
- (void)startPictureInPicture;Swift
func startPictureInPicture() -
PictureInPicture(PIP) 중지 @note 기본 플레이어만 지원
Declaration
Objective-C
- (void)stopPictureInPicture;Swift
func stopPictureInPicture() -
PIP start stop toggle @note 기본 플레이어만 지원
Declaration
Objective-C
- (void)toggleStartStopPictureInPicture;Swift
func toggleStartStopPictureInPicture() -
PIP에 StarplayerSubtitleView 설정 @note StarplayerSubtitleView를 추가하면 PIP에 자막 표시 가능 기본 플레이어만 지원
Declaration
Objective-C
- (void)setupSubtitleViewInPIP:(id)subtitleView;Swift
func setupSubtitleView(inPIP subtitleView: Any!)
-
플레이어 Pan gesture selector 화면 드래그 상태 delegate 호출
See
starPlayerView:screenDragState:draggingValueChanged:Declaration
Objective-C
- (void)starPlayerHandlePan:(id)panGestureRecognizer;Swift
@IBAction func starPlayerHandlePan(_ panGestureRecognizer: Any!) -
플레이어 Pinch gesture selector 화면 핀치 상태 delegate 호출
See
추가 예정Declaration
Objective-C
- (void)starPlayerHandlePinch:(id)pinchGestureRecognizer;Swift
@IBAction func starPlayerHandlePinch(_ pinchGestureRecognizer: Any!)
-
playing_content(Event) 전송 interval @note 단위 : sec default : 180초 플레이어가 재생중 일 때만 이벤트 스케줄러가 동작 플레이어가 중지 상태(PlayerStateStopped) 일 때 변경 가능
See
eventEnabledDeclaration
Objective-C
@property (nonatomic) uint16_t eventPlayingContentInterval;Swift
var eventPlayingContentInterval: UInt16 { get set } -
플레이어 학습이력 이벤트 전송 활성화 여부 @note 학습이력 이벤트(begin_content, playing_content, end_content) begin_content : 컨텐츠 재생 준비 완료 됐을 때 전송 (PlayerStateReadyToPlay) playing_content : 일시정지(PlayerStatePause), 배속 변경, 재생중(eventPlayingContentInterval 주기) 전송 end_content : 컨텐츠 재생 정지 또는 완료시 전송 (PlayerStateStop)
플레이어가 중지 상태(PlayerStateStopped) 일 때 변경 가능
See
eventPlayingContentIntervalDeclaration
Objective-C
@property (nonatomic) BOOL eventEnabled;Swift
var eventEnabled: Bool { get set } -
미전송 데이터 개수 조회
Note
플레이어가 재생 준비가 되었을 경우 작동 (OpenStateReady)Declaration
Objective-C
- (int)selectMissedEventDataCount;Swift
func selectMissedEventDataCount() -> Int32 -
미전송 이벤트 데이터 전체 삭제 @note 미전송 데이터가 전송이 안되고 많이 쌓여 있을 경우 부하가 발생할 수 있으므로 삭제할 수 있는 함수 제공 플레이어가 재생 준비가 되었을 경우 동작 (OpenStateReady)
Declaration
Objective-C
- (void)deleteAllMissedEventData;Swift
func deleteAllMissedEventData()
StarPlayerView Class Reference