... | ... | @@ -280,13 +280,13 @@ Destination 选择 "Frameworks" -> |
|
|
|
|
|
3.1.1 调用方法
|
|
|
|
|
|
```
|
|
|
```objective-c
|
|
|
/**
|
|
|
* @brief 登录房间
|
|
|
* @param parameter 配置参数信息
|
|
|
* 必填参数 userId //用户ID
|
|
|
* 必填参数 roomId //房间ID
|
|
|
* 必填参数 liveid //直播ID,回放时才用到
|
|
|
* (已弃用!) liveid; //直播ID,回放时才用到 (已废弃)
|
|
|
* 必填参数 viewerName //用户名称
|
|
|
* 必填参数 token //房间密码
|
|
|
* (已弃用!) security //是否使用https
|
... | ... | @@ -297,7 +297,7 @@ Destination 选择 "Frameworks" -> |
|
|
* @param parameter 配置参数信息
|
|
|
* 必填参数 userId; //用户ID
|
|
|
* 必填参数 roomId; //房间ID
|
|
|
* 必填参数 liveid; //直播ID,回放时才用到
|
|
|
* (已弃用!) liveid; //直播ID,回放时才用到 (已废弃)
|
|
|
* 必填参数 viewerName; //用户名称
|
|
|
* 必填参数 token; //房间密码
|
|
|
* 必填参数 docParent; //文档父类窗口
|
... | ... | @@ -320,7 +320,7 @@ Destination 选择 "Frameworks" -> |
|
|
|
|
|
代理方法
|
|
|
|
|
|
```
|
|
|
```objective-c
|
|
|
/**
|
|
|
* @brief 请求回放地址成功
|
|
|
*/
|
... | ... | @@ -357,7 +357,7 @@ Destination 选择 "Frameworks" -> |
|
|
|
|
|
配置参数:PlayParameter的属性如下
|
|
|
|
|
|
```
|
|
|
```objective-c
|
|
|
/**
|
|
|
* @brief 用户ID
|
|
|
*/
|
... | ... | @@ -375,9 +375,9 @@ Destination 选择 "Frameworks" -> |
|
|
*/
|
|
|
@property(nonatomic, copy)NSString *token;//房间密码
|
|
|
/**
|
|
|
* @brief 直播ID,回放时才用到
|
|
|
* @brief 直播ID,回放时才用到(已废弃)
|
|
|
*/
|
|
|
@property(nonatomic, copy)NSString *liveId;//直播ID,回放时才用到
|
|
|
@property(nonatomic, copy)NSString *liveId;//直播ID,回放时才用到(已废弃)
|
|
|
/**
|
|
|
* @brief 回放ID
|
|
|
*/
|
... | ... | @@ -446,6 +446,42 @@ Destination 选择 "Frameworks" -> |
|
|
|
|
|
```
|
|
|
|
|
|
新增 **HDQualityModel** 类 (切换线路清晰度)
|
|
|
|
|
|
```objective-c
|
|
|
@interface HDQualityModel : NSObject
|
|
|
/** 清晰度 */
|
|
|
@property (nonatomic, copy) NSString * _Nonnull quality;
|
|
|
/** 描述 */
|
|
|
@property (nonatomic, copy) NSString * _Nonnull desc;
|
|
|
@end
|
|
|
```
|
|
|
|
|
|
新增枚举类型
|
|
|
|
|
|
```objective-c
|
|
|
/**
|
|
|
* 音视频模式
|
|
|
* PLAY_MODE_TYEP_VIDEO 视频
|
|
|
* PLAY_MODE_TYEP_AUDIO 音频
|
|
|
*/
|
|
|
typedef NS_ENUM(NSUInteger, PLAY_MODE_TYEP) {
|
|
|
PLAY_MODE_TYEP_VIDEO,//视频
|
|
|
PLAY_MODE_TYEP_AUDIO,//音频
|
|
|
};
|
|
|
/**
|
|
|
* 是否有音频线路
|
|
|
* HAVE_AUDIO_LINE_TURE 有音频线路
|
|
|
* HAVE_AUDIO_LINE_FALSE 无音频线路
|
|
|
*/
|
|
|
typedef NS_ENUM(NSUInteger, HAVE_AUDIO_LINE) {
|
|
|
HAVE_AUDIO_LINE_TURE,//有音频线路
|
|
|
HAVE_AUDIO_LINE_FALSE,//无音频线路
|
|
|
};
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
开始配置
|
|
|
|
|
|
```
|
... | ... | @@ -467,7 +503,7 @@ Destination 选择 "Frameworks" -> |
|
|
|
|
|
实现代理
|
|
|
|
|
|
```
|
|
|
```objective-c
|
|
|
/**
|
|
|
* @brief 请求回放地址成功
|
|
|
*/
|
... | ... | @@ -482,7 +518,7 @@ Destination 选择 "Frameworks" -> |
|
|
|
|
|
**至此您的项目已经可以运行了,并且已经集成好了视频基本功能;如果不需要文档功能则不配置文档相关属性即可,另外添加文档功能写一个定时器在视频开始播放时调用下面的方法即可**
|
|
|
|
|
|
```
|
|
|
```objective-c
|
|
|
/**
|
|
|
* (已废弃)
|
|
|
* @brief time:从直播开始到现在的秒数,SDK会在画板上绘画出来相应的图形
|
... | ... | @@ -493,7 +529,7 @@ Destination 选择 "Frameworks" -> |
|
|
|
|
|
代理方法 (可选)
|
|
|
|
|
|
```
|
|
|
```objective-c
|
|
|
/**
|
|
|
* @brief 播放器时间
|
|
|
* @param currentTime 当前时间
|
... | ... | @@ -508,7 +544,7 @@ Destination 选择 "Frameworks" -> |
|
|
|
|
|
3.2.1 代理方法(可选)
|
|
|
|
|
|
```
|
|
|
```objective-c
|
|
|
/**
|
|
|
* @brief 加载视频失败
|
|
|
*/
|
... | ... | @@ -602,7 +638,7 @@ Destination 选择 "Frameworks" -> |
|
|
|
|
|
3.2.2 主动方法(可选)
|
|
|
|
|
|
```
|
|
|
```objective-c
|
|
|
/**
|
|
|
* @brief 销毁文档和视频,清除视频和文档的时候需要调用,推出播放页面的时候也需要调用
|
|
|
*/
|
... | ... | @@ -735,7 +771,7 @@ Destination 选择 "Frameworks" -> |
|
|
|
|
|
3.3.1 代理方法(可选)
|
|
|
|
|
|
```
|
|
|
```objective-c
|
|
|
/**
|
|
|
* @brief 获取文档内白板或者文档本身的宽高,来进行屏幕适配用的
|
|
|
*/
|
... | ... | @@ -777,7 +813,7 @@ Destination 选择 "Frameworks" -> |
|
|
|
|
|
3.3.2 主动方法(可选)
|
|
|
|
|
|
```
|
|
|
```objective-c
|
|
|
/**
|
|
|
* @brief time:从直播开始到现在的秒数,SDK会在画板上绘画出来相应的图形
|
|
|
*/
|
... | ... | @@ -823,7 +859,7 @@ Destination 选择 "Frameworks" -> |
|
|
|
|
|
代理方法(可选)
|
|
|
|
|
|
```
|
|
|
```objective-c
|
|
|
/**
|
|
|
* @brief 获取房间信息,主要是要获取直播间模版来类型,根据直播间模版类型来确定界面布局
|
|
|
* 房间信息
|
... | ... | @@ -853,7 +889,7 @@ Destination 选择 "Frameworks" -> |
|
|
|
|
|
代理方法(可选)
|
|
|
|
|
|
```
|
|
|
```objective-c
|
|
|
/**
|
|
|
* @brief 解析本房间的历史聊天数据
|
|
|
* @param chatArr [{ chatId //聊天ID
|
... | ... | @@ -873,7 +909,7 @@ Destination 选择 "Frameworks" -> |
|
|
|
|
|
代理方法(可选)
|
|
|
|
|
|
```
|
|
|
```objective-c
|
|
|
/**
|
|
|
* @brief 收到历史提问&回答
|
|
|
* @param questionArr [{content //问答内容
|
... | ... | @@ -903,7 +939,7 @@ Destination 选择 "Frameworks" -> |
|
|
|
|
|
代理方法(可选)
|
|
|
|
|
|
```
|
|
|
```objective-c
|
|
|
/**
|
|
|
* @brief 收到本房间历史广播(The new method)
|
|
|
* content 广播内容
|
... | ... | @@ -916,7 +952,7 @@ Destination 选择 "Frameworks" -> |
|
|
|
|
|
代理方法(可选)
|
|
|
|
|
|
```
|
|
|
```objective-c
|
|
|
/**
|
|
|
* @brief 接收到随堂测(The new method)
|
|
|
* rseultDic 随堂测内容
|
... | ... | @@ -938,7 +974,7 @@ Destination 选择 "Frameworks" -> |
|
|
|
|
|
播放器状态类型
|
|
|
|
|
|
```
|
|
|
```objective-c
|
|
|
/**
|
|
|
* 视频播放状态
|
|
|
* HDMoviePlaybackStateStopped 播放停止
|
... | ... | @@ -986,7 +1022,7 @@ typedef NS_ENUM(NSUInteger, HDMovieFinishReason) { |
|
|
|
|
|
代理方法(可选)
|
|
|
|
|
|
```
|
|
|
```objective-c
|
|
|
/**
|
|
|
* @brief 视频状态改变
|
|
|
* @param state
|
... | ... | @@ -1016,7 +1052,7 @@ typedef NS_ENUM(NSUInteger, HDMovieFinishReason) { |
|
|
*/
|
|
|
- (void)HDMoviePlayerPlaybackDidFinish:(HDMovieFinishReason)reason;
|
|
|
/**
|
|
|
* @brief 视频准备播放
|
|
|
* @brief 播放器初始化完成 (会多次回调)
|
|
|
* @param dict 数据
|
|
|
*/
|
|
|
- (void)HDMediaPlaybackIsPreparedToPlayDidChange:(NSDictionary *)dict;
|
... | ... | @@ -1026,7 +1062,7 @@ typedef NS_ENUM(NSUInteger, HDMovieFinishReason) { |
|
|
|
|
|
代理方法(可选)
|
|
|
|
|
|
```
|
|
|
```objective-c
|
|
|
/**
|
|
|
* @brief 视频加载速度
|
|
|
* @param speed 视频加载速度字符串
|
... | ... | @@ -1048,13 +1084,13 @@ typedef NS_ENUM(NSUInteger, HDMovieFinishReason) { |
|
|
|
|
|
HD云直播的页面跳转均是采用模态形式跳转
|
|
|
|
|
|
```
|
|
|
```objective-c
|
|
|
- (void)presentViewController:(UIViewController *)viewControllerToPresent animated: (BOOL)flag completion:(void (^ __nullable)(void))completion NS_AVAILABLE_IOS(5_0);
|
|
|
```
|
|
|
|
|
|
在每个控制器或者基类控制器设置旋转选项
|
|
|
|
|
|
```
|
|
|
```objective-c
|
|
|
#pragma mark - 屏幕旋转
|
|
|
- (BOOL)shouldAutorotate{
|
|
|
return NO;//该旋转的页面自己变量控制
|
... | ... | @@ -1073,7 +1109,7 @@ HD云直播的页面跳转均是采用模态形式跳转 |
|
|
|
|
|
## 4.2 Swift实现代理错误
|
|
|
|
|
|
```
|
|
|
```swift
|
|
|
//初始化
|
|
|
let parameter = PlayParameter.init()
|
|
|
/**
|
... | ... | @@ -1117,3 +1153,38 @@ error: Bundle only contains bitcode-marker /var/folders/s5/lnk362pd4cs0lmtn_43pp |
|
|
第二步: Shared Workspace Settings:
|
|
|
|
|
|
第三步:Build System -> Legacy Build System
|
|
|
|
|
|
## 4.5 关于api回调所在线程问题
|
|
|
|
|
|
```objective-c
|
|
|
/**
|
|
|
* @brief 回放翻页数据列表 (会在子线程回调)
|
|
|
*/
|
|
|
- (void)pageChangeList:(NSMutableArray *)array;
|
|
|
```
|
|
|
|
|
|
```objective-c
|
|
|
/**
|
|
|
* @brief 获取ppt当前页数和总页数 (会在子线程回调)
|
|
|
*
|
|
|
* 回调当前翻页的页数信息
|
|
|
* 白板docTotalPage一直为0, pageNum从1开始
|
|
|
* 其他文档docTotalPage为正常页数,pageNum从0开始
|
|
|
* @param dictionary 翻页信息
|
|
|
*/
|
|
|
- (void)onPageChange:(NSDictionary *) dictionary;
|
|
|
```
|
|
|
|
|
|
```objective-c
|
|
|
/**
|
|
|
* @brief 文档加载状态 (会在子线程回调)
|
|
|
* index
|
|
|
* 0 文档组件初始化完成
|
|
|
* 1 动画文档加载完成
|
|
|
* 2 非动画文档加载完成
|
|
|
*/
|
|
|
- (void)docLoadCompleteWithIndex:(NSInteger)index;
|
|
|
```
|
|
|
|
|
|
PS:直播、在线回放只有上述api会在子线程回调,其余的api均在主线程进行回调。
|
|
|
|