观看直播模块
头文件
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, //纯音频
};