观看直播模块

头文件

VHLivePlayer.h

类名

VHLivePlayer

属性

delegate

@property(nonatomic,weak)id <VHLivePlayerDelegate>  delegate;

view

@property(nonatomic,strong,readonly)UIView          *view;

playerState

@property(nonatomic,assign,readonly)int             playerState;//播放器状态  详见 VHPlayerStatus 的定义.

bufferTime

@property(nonatomic,assign)NSInteger                bufferTime; //RTMP 的缓冲时间 默认 6秒 单位为秒 必须>0 值越小延时越小,卡顿增加

timeout

@property(nonatomic,assign)int timeout;     //RTMP链接的超时时间 默认5000毫秒,单位为毫秒

defaultDefinition

/**
 *  设置默认播放的清晰度 默认原画
 */
@property(nonatomic,assign)VHDefinition             defaultDefinition;

curDefinition

/**
 * 当前播放的清晰度 默认原画 只有在播放开始后调用 并在支持的清晰度列表中
 */
@property(nonatomic,assign)VHDefinition             curDefinition;

scalingMode

/*
 * 设置画面的裁剪模式 详见 VHPlayerScalingMode 的定义
 */
@property(nonatomic,assign)int                      scalingMode;

mute

@property(nonatomic,assign)BOOL                     mute;

方法

- startPlay:accessToken:

/**
 *  开始播放
 *  @param roomID       房间ID
 *  @param accessToken  accessToken
 */
- (BOOL)startPlay:(NSString*)roomID accessToken:(NSString*)accessToken;

- pause

/**
 *  暂停播放
 */
- (BOOL)pause;

- resume

/**
 *  恢复播放
 */
- (BOOL)resume;

- stopPlay

/**
 *  结束播放
 */
- (BOOL)stopPlay;

- destroyPlayer

/**
 *  销毁播放器
 */
- (BOOL)destroyPlayer;

- takeVideoScreenshot:

/**
 *  获得当前时间视频截图
 */
- (void)takeVideoScreenshot:(void (^)(UIImage* image))screenshotBlock;

代理方法

VHLivePlayerDelegate

- player:statusDidChange:
/**
 *  观看状态回调
 *  @param player   播放器实例
 *  @param state   状态类型 详见 VHPlayerStatus 的定义.
 */
- (void)player:(VHLivePlayer *)player statusDidChange:(int)state;
- player:stoppedWithError:
/**
 *  错误回调
 *  @param player   播放器实例
 *  @param error    错误
 */
- (void)player:(VHLivePlayer *)player stoppedWithError:(NSError *)error;
- player:downloadSpeed:
/**
 *  播放过程中下载速度回调
 *  @param player   播放器实例
 *  @param speed    kb/s
 */
- (void)player:(VHLivePlayer *)player downloadSpeed:(NSString*)speed;
- player:validDefinitions:
/**
 *  当前房间支持的清晰度列表
 *  @param definitions   支持的清晰度列表
 *  @param definition    当前播放清晰度
 */
- (void)player:(VHLivePlayer *)player validDefinitions:(NSArray*)definitions curDefinition:(VHDefinition)definition;
- player:streamtype:
/**
 *  streamtype 观看流类型
 *
 *  @param player       player
 *  @param streamtype   观看流类型
 */
- (void)player:(VHLivePlayer *)player streamtype:(VHStreamType)streamtype;
- player:receiveMessage:
/**
 *  接收流中消息
 *
 *  @param player       player
 *  @param msg          流中消息
 */
- (void)player:(VHLivePlayer *)player receiveMessage:(NSDictionary*)msg;
- player:onlineMessage:
/**
 *  上下线消息
 *
 *  @param player       player
 *  @param msg          消息
 */
- (void)player:(VHLivePlayer *)player onlineMessage:(id)msg;

结构体

VHLivePlayErrorType

/**
 * 观看端错误事件
 */
typedef NS_ENUM(NSInteger,VHLivePlayErrorType)
{
    VHLivePlayErrorNone                 = -1,   //初始化状态
    VHivePlayGetUrlError                = 0,    //获取服务器rtmpUrl错误
    VHLivePlayParamError                = 1,    //参数错误
    VHLivePlayRecvError                 = 2,    //接受数据错误
    VHLivePlayCDNConnectError           = 3,    //CDN链接失败
    VHLivePlayStopPublish               = 4,    //已停止推流
};

VHStreamType

//流类型
typedef NS_ENUM(NSInteger,VHStreamType){
    VHStreamTypeNone = 0, 		//初始化状态
    VHStreamTypeVideoAndAudio,		//音视频
    VHStreamTypeOnlyVideo,		//视频
    VHTypeOnlyAudio,			//音频
};

VHPlayerStatus

播放器状态

typedef NS_ENUM(NSInteger, VHPlayerStatus) {
    VHPlayerStatusUnkown,       //初始化时指定的状态,播放器初始化
    VHPlayerStatusLoading,      //加载中
    VHPlayerStatusPlaying,      //播放中
    VHPlayerStatusPause,        //播放暂停
    VHPlayerStatusStop,         //停止播放
    VHPlayerStatusComplete,     //本次播放完
};

VHPlayerScalingMode

播放器图像填充模式

typedef NS_ENUM(NSInteger, VHPlayerScalingMode) {
    VHPlayerScalingModeFill,      //将图像拉伸填充
    VHPlayerScalingModeAspectFit, //将图像等比例缩放,适配最长边,缩放后的宽和高都不会超过显示区域,居中显示,画面可能会留有黑边。
    VHPlayerScalingModeAspectFill,//将图像等比例铺满整个屏幕,多余部分裁剪掉,此模式下画面不会留黑边,但可能因为部分区域被裁剪而显示不全。
};

VHDefinition

视频清晰度

/**
 *  视频清晰度
 */
typedef NS_ENUM(NSInteger,VHDefinition) {
    VHDefinitionOrigin             = 0,    //原画
    VHDefinitionUHD                = 1,    //超高清
    VHDefinitionHD                 = 2,    //高清
    VHDefinitionSD                 = 3,    //标清
    VHDefinitionAudio              = 4,    //纯音频
};