| 类名 | 类描述 |
|---|---|
| VHallMoviePlayer | 视频直播类 |
| 属性 | 属性描述 |
|---|---|
| delegate | 代理对象 |
| moviePlayerView | 获取播放器 view |
| documentView | 获取文档演示 view,如果没有文档则为 nil (在收到"文档显示/隐藏回调"后获取) |
| waterImg | 水印(在收到"播放连接成功回调"后使用) |
| realityBufferTime | 获取 RTMP 播放实际的缓冲时间,单位毫秒 |
| playMode | 获取当前视频观看模式 |
| activeState | 活动状态 (在收到"视频信息预加载回调"或"播放连接成功回调"后使用) |
| playerState | 获取播放器状态 |
| webinarInfo | 活动详情 |
| timeout | 设置链接的超时时间 默认 5000 毫秒,单位为毫秒 MP4 点播 最小 10000 毫秒 |
| bufferTime | 设置 RTMP 的缓冲时间 默认 6 秒 单位为秒 必须>0 值越小延时越小,卡顿增加 |
| movieScalingMode | 设置视频的填充模式 默认是自适应模式:VHRTMPMovieScalingModeAspectFit |
| defaultDefinition | 设置默认播放的清晰度 默认原画 |
| curDefinition | 设置当前播放的清晰度 |
| duration | 视频时长 |
| playableDuration | 可播放时长 |
| rate | 点播倍速播放速率 0.50, 0.67, 0.80, 1.0, 1.25, 1.50, and 2.0 |
| currentPlaybackTime | 当前播放时间点 |
| initialPlaybackTime | 初始化要播放的位置 |
| 方法 | 方法描述 |
|---|---|
| initWithDelegate | 初始化 |
| preLoadRoomWithParam | 预加载房间信息 |
| startPlayback | 观看回放/点播视频 |
| pausePlay | 暂停播放 |
| reconnectPlay | 恢复播放 |
| stopPlay | 停止播放 |
| setMute | 设置静音 |
| destroyMoivePlayer | 销毁播放器 |
| 方法 | 方法描述 |
|---|---|
| takeVideoScreenshot | 获得当前时间视频截 图仅支持化蝶 |
| getRecordListWithWebinarId | 获取指定活动下的回放列表 |
| cleanLastFrame | 清空视频剩余的最后一帧画面 |
| dlnaMappingObject | 设置投屏对象 |
| reconnectSocket | 重连 socket |
| playerBackgroundColor | 设置播放器背景色 |
| playerBackgroundImage | 设置播放器背景图片 |
| audioOutput | 设置音频输出设备 |
| 方法 | 方法描述 |
|---|---|
| preLoadVideoFinish | 视频信息预加载完成回调 |
| connectSucceed | 播放连接成功回调 |
| bufferStart | 缓冲开始回调 |
| bufferStop | 缓冲结束回调 |
| downloadSpeed | 下载速率的回调 |
| recStreamtype | 视频流类型回调 |
| playError | 播放时错误的回调 |
| activeStateDidChange | 当前活动状态回调 |
| loadVideoPlayMode | 当前视频播放模式,以及是否为 vr 活动回调 |
| loadVideoPlayModeList | 当前视频支持的播放模式列表回调 |
| loadVideoDefinitionList | 当前视频支持的清晰度列表回调 |
| statusDidChange | 播放器状态回调 |
| videoSize | 视频宽高回调(支持直播与点播) |
| currentTime | 当前播放时间回调 |
| videoPointArr | 视频打点 |
| isKickout | 被踢出 |
| isCast_screen | 当前是否支持投屏功能 |
| isHaveDocument | 主持人显示/隐藏文档 |
| documentDelayTime | 直播文档同步,直播文档有延迟,指定需要延迟的秒数 |
| announcementContentDidChange | 发布公告的回调 |
| isQuestion_status | 当前是否开启问答功能 |
| is_file_download | 当前是否开启文件下载功能 |
初始化 VHMoviePlayer 对象
- (instancetype)initWithDelegate:(id <VHallMoviePlayerDelegate>)delegate;| 参数名称 | 是否必须 | 示例 | 备注 |
|---|---|---|---|
| delegate | 是 | self | 代理对象 |
| 参数名称 | 备注 |
|---|---|
| VHMoviePlayer | 观看直播对象 |
@interface UIViewController ()<VHallMoviePlayerDelegate>
// 播放器
@property (nonatomic, strong) VHallMoviePlayer *moviePlayer;
@end
- (void)viewDidLoad {
[super viewDidLoad];
/// 初始化
self.moviePlayer = [[VHallMoviePlayer alloc]initWithDelegate:self];
}在收到"视频信息预加载完成回调"后,即可使用聊天、签到、问答、抽奖等功能,然后择机调用 startPlay/startPlayback 进行播放,注意使用此方法后,startPlay 和 startPlayback 传参将不再生效(此方法主要用于播放之前需要使用聊天等功能)
- (void)preLoadRoomWithParam:(NSDictionary *)param;| 参数名称 | 是否 必须 | 示例 | 备注 |
|---|---|---|---|
| param | 是 | 字典 | 活动基础信息,包含以下参数 |
| param[@"id"] | 是 | 123456789 | 活动 Id,必传 |
| param[@"record_id"] | 否 | 6781736 | 回放 id,通过列表获取 getRecordListWithWebinarId |
| param[@"name"] | 否 | 阿超 | 昵称 |
| param[@"auth_model"] | 否 | 1 | 0 : 校验观看权限(默认) 1 : 不校验观看权限 |
NSMutableDictionary * param = [[NSMutableDictionary alloc] init];
param[@"id"] = @"123456789";
param[@"name"] = @"阿超";
param[@"auth_model"] = @(1);
[self.moviePlayer preLoadRoomWithParam:param];在收到"播放连接成功回调"后,才可使用聊天、签到、问答、抽奖等功能
- (BOOL)startPlayback:(NSDictionary *)param;| 参数名称 | 是否必须 | 示例 | 备注 |
|---|---|---|---|
| param | 是 | 字典 | 活动基础信息,包含以下参数 |
| param[@"id"] | 是 | 123456789 | 活动 Id,必传 |
| param[@"name"] | 否 | 阿超 | 昵称 |
| param[@"auth_model"] | 否 | 1 | 0 : 校验观看权限(默认) 1 : 不校验观看权限 |
NSMutableDictionary * param = [[NSMutableDictionary alloc] init];
param[@"id"] = @"123456789";
param[@"name"] = @"阿超";
param[@"auth_model"] = @(1);
[self.moviePlayer startPlayback:param];直播等同于 stopPlay,停止播放
- (void)pausePlay;[self.moviePlayer pausePlay];播放出错/暂停播放后恢复播放
- (BOOL)reconnectPlay;[self.moviePlayer reconnectPlay];- (BOOL)stopPlay;[self.moviePlayer stopPlay];- (void)setMute:(BOOL)mute;| 参数名称 | 是否必须 | 示例 | 备注 |
|---|---|---|---|
| mute | 是 | YES | 是否静音 |
[self.moviePlayer setMute:YES];- (void)destroyMoivePlayer;[self.moviePlayer destroyMoivePlayer];- (void)takeVideoScreenshot:(void (^)(UIImage* image))screenshotBlock;[_moviePlayer takeVideoScreenshot:^(UIImage *image) {
}];+ (void)getRecordListWithWebinarId:(NSString *)webinarId pageNum:(NSInteger)pageNum pageSize:(NSInteger)pageSize complete:(void (^)(NSArray <VHRecordListModel *> *recordList, NSError *error))complete| 参数名称 | 是否必须 | 示例 | 备注 |
|---|---|---|---|
| webinarId | 是 | 12345678 | 活动 Id,必传 |
| pageNum | 是 | 1 | 页数 |
| pageSize | 否 | 10 | 一页几个 |
[VHWebinarBaseInfo getRecordListWithWebinarId:self.webinar_id pageNum:1 pageSize:10 complete:^(NSArray<VHRecordListModel *> *recordList, NSError *error) {
}];