CNLivePlayer.h 3.52 KB
//
//  CNLivePlayer.h
//  CNLivePlayer_Example
//
//  Created by CNLive-zxw on 2019/7/26.
//  Copyright © 2019 153993236@qq.com. All rights reserved.
//

#import <Foundation/Foundation.h>
#import <libksygpulive/KSYMoviePlayerController.h>
#import "KSYMediaPlayback.h"
#import "KSYQosInfo.h"
#import "KSYMoviePlayerDefines.h"
#import "KSYReachability.h"

//播放器管理类
#import "CNLivePlayerManager.h"

NS_ASSUME_NONNULL_BEGIN
typedef NS_ENUM(NSUInteger, CNLivePlayerType) {
    CNLivePlayerVod, //点播
    CNLivePlayerLive //直播

};
//成功回调
typedef void(^AuthSuccessBlock)(void);
//失败回调
typedef void(^AuthFailedBlock)(NSDictionary *errorInfo);

@interface CNLivePlayer : NSObject
/*
 * 播放器类型
 */
@property (nonatomic, assign) CNLivePlayerType type;

/*
 * 播放器
 */
@property (nonatomic, strong) KSYMoviePlayerController *player;


/* 初始化点播播放器  初始化成功后才能对播放器进行设置(如:自动播放、是否开启硬件解码等)和调用准备播放视频方法(prepareToPlay)
 *
 * videoId           视频Id
 * authSuccess       初始化成功block
 * authFailed        初始化失败block 回调一个errorInfo的字典
 *
 */
- (instancetype)initVodPlayerWithVideoId:(NSString *)videoId authSuccess:(AuthSuccessBlock)authSuccessBlock authFailed:(AuthFailedBlock)authFailedBlock;


/* 初始化直播播放器(* 以channelId播放)  初始化成功后才能对播放器进行设置(如:自动播放、是否开启硬件解码等)和调用准备播放视频方法(prepareToPlay)
 *
 * channelId         直播视频Id (注* 若agree为YES时,必传,用于获取主播状态; 若agree为NO,可不传)
 * activityId        活动Id
 * agree             是否允许获取主播状态 YES:获取 NO:不获取
 * authSuccess       初始化成功block
 * authFailed        初始化失败block 回调一个errorInfo的字典
 *
 * result            获取主播状态 YES:获取状态成功
 *                               NO:获取失败,不影响视频播放,但是获取不到主播离开、回来、直播结束等通知。可通过
 * - (void)retryToGetAnchorStatusResult:(void(^)(BOOL result))result;方法重新获取
 */
- (instancetype)initLivePlayerWithChannelId:(NSString *)channelId activityId:(NSString *)activityId anchorStatus:(BOOL)agree authSuccess:(AuthSuccessBlock)authSuccessBlock authFailed:(AuthFailedBlock)authFailedBlock getAnchorStatusResult:(void(^)(BOOL result))result;


/* 初始化音频播放器  初始化成功后才能对播放器进行设置(如:自动播放、是否开启硬件解码等)和调用准备播放视频方法(prepareToPlay)
 *
 * contentId         音频Id
 * authSuccess       初始化成功block
 * authFailed        初始化失败block 回调一个errorInfo的字典
 *
 */
- (instancetype)initAudioPlayerWithAudioId:(NSString *)audioId authSuccess:(AuthSuccessBlock)authSuccessBlock authFailed:(AuthFailedBlock)authFailedBlock;


/**
 @abstract 包含视频播放内容的VIEW(只读)。
 @discussion view的使用逻辑:
 
 * 可以通过frame设置view大大小
 * 使用[scalingMode]([KSYMoviePlayerController scalingMode]) 可以更改视频内容在VIEW中的显示情况
 
 @see scalingMode
 */
// The view in which the media and playback controls are displayed.
@property (nonatomic, strong, readonly) UIView *view;

/* 准备视频播放
 *
 * MPMediaPlaybackIsPreparedToPlayDidChangeNotification  播放器完成对视频文件的初始化时发送通知
 *
 */
- (void)prepareToPlay;


@end

NS_ASSUME_NONNULL_END