|
|
[TOC]
|
|
|
|
|
|
# 云直播回放观看端SDK开发指南
|
|
|
|
|
|
# 1.概述
|
|
|
|
|
|
## 1.1 阅读对象
|
... | ... | @@ -13,7 +17,7 @@ |
|
|
| 功能 | 描述 |
|
|
|
| -------- | ---------------------- |
|
|
|
| 直播视频 | 观看直播视频 |
|
|
|
| 视频倍速 | 观看直播回放倍速播放 |
|
|
|
| 视频倍速 | 观看直播回放倍速播放 |
|
|
|
| 文档展示 | 能够观看当前直播文档 |
|
|
|
| 聊天 | 所有直播时的聊天 |
|
|
|
| 简介 | 支持对直播间的信息展示 |
|
... | ... | @@ -202,7 +206,6 @@ PS:其中3.8.0与3.11.2为SDK版本号可自行更改。 |
|
|
解决方案:
|
|
|
Targets -> Build Settings -> 搜索 "Enable Bitcode" 设置为 "NO"
|
|
|
```
|
|
|
|
|
|
2.command + r 运行
|
|
|
|
|
|
```
|
... | ... | @@ -249,7 +252,6 @@ Destination 选择 "Frameworks" -> |
|
|
ERROR_USELESS_INFO = 1002 没有获取到有用的视频信息
|
|
|
ERROR_PASSWORD = 1003 密码错误
|
|
|
```
|
|
|
|
|
|
系统错误类型
|
|
|
|
|
|
```objc
|
... | ... | @@ -286,45 +288,28 @@ Destination 选择 "Frameworks" -> |
|
|
* @param parameter 配置参数信息
|
|
|
* 必填参数 userId //用户ID
|
|
|
* 必填参数 roomId //房间ID
|
|
|
* (已弃用!) liveid; //直播ID,回放时才用到 (已废弃)
|
|
|
* 必填参数 viewerName //用户名称
|
|
|
* 必填参数 token //房间密码
|
|
|
* (已弃用!) security //是否使用https
|
|
|
*/
|
|
|
- (id)initLoginWithParameter:(PlayParameter *)parameter;
|
|
|
/**
|
|
|
* @brief 进入房间,并请求画图聊天数据并播放视频(可以不登陆,直接从此接口进入直播间)
|
|
|
* @param parameter 配置参数信息
|
|
|
* 必填参数 userId; //用户ID
|
|
|
* 必填参数 roomId; //房间ID
|
|
|
* (已弃用!) liveid; //直播ID,回放时才用到 (已废弃)
|
|
|
* 必填参数 viewerName; //用户名称
|
|
|
* 必填参数 token; //房间密码
|
|
|
* 必填参数 docParent; //文档父类窗口
|
|
|
* 必填参数 docFrame; //文档区域
|
|
|
* 必填参数 playerParent; //视频父类窗口
|
|
|
* 必填参数 playerFrame; //视频区域
|
|
|
* (已弃用!) security //是否使用https
|
|
|
* 必填参数 pauseInBackGround; //后台是否继续播放,注意:如果开启后台播放需要打开 xcode->Capabilities->Background Modes->on->Audio,AirPlay,and Picture in Picture
|
|
|
* 必填参数 defaultColor; //ppt默认底色,不写默认为白色 不写默认为白色 (16进制颜色,默认白色 @"#FFFFFF");
|
|
|
* 必填参数 PPTScalingMode; //PPT适配方式
|
|
|
PPT适配模式分为四种,
|
|
|
1.拉伸填充,PPT内容全部展示在显示区域,会被拉伸或压缩,不会存在黑边
|
|
|
2.等比居中,PPT内容保持原始比例,适应窗口展示在显示区域,会存在黑边
|
|
|
3.等比填充,PPT内容保持原始比例,以横向或纵向适应显示区域,另一方向将会超出显示区域,超出部分会被裁减,不会存在黑边
|
|
|
4.根据直播间文档显示模式的返回值进行设置(推荐)
|
|
|
* 必填参数 scalingMode; //屏幕适配方式
|
|
|
*/
|
|
|
- (id)initWithParameter:(PlayParameter *)parameter;
|
|
|
/// 初始化SDK
|
|
|
/// @param parameter 参数
|
|
|
/// @param succed 初始化成功回调
|
|
|
/// @param player 播放视图回调
|
|
|
/// @param failed 初始化失败回调
|
|
|
- (id)initSDKWithParameter:(PlayParameter *)parameter
|
|
|
succed:(initSuccedClosure)succed
|
|
|
player:(HDSPlayerViewClosure)player
|
|
|
failed:(initFailedClosure)failed;
|
|
|
```
|
|
|
|
|
|
代理方法
|
|
|
|
|
|
```objc
|
|
|
/**
|
|
|
* @brief 请求回放地址成功
|
|
|
* @brief 媒体准备完成
|
|
|
*/
|
|
|
-(void)requestSucceed;
|
|
|
- (void)mediaPrepared;
|
|
|
/**
|
|
|
* @brief 请求回放地址失败
|
|
|
*/
|
... | ... | @@ -374,10 +359,6 @@ Destination 选择 "Frameworks" -> |
|
|
* @brief 房间密码
|
|
|
*/
|
|
|
@property(nonatomic, copy)NSString *token;//房间密码
|
|
|
/**
|
|
|
* @brief 直播ID,回放时才用到(已废弃)
|
|
|
*/
|
|
|
@property(nonatomic, copy)NSString *liveId;//直播ID,回放时才用到(已废弃)
|
|
|
/**
|
|
|
* @brief 回放ID
|
|
|
*/
|
... | ... | @@ -385,9 +366,9 @@ Destination 选择 "Frameworks" -> |
|
|
/**
|
|
|
* @brief 用户自定义参数,需和后台协商,没有定制传@""
|
|
|
*/
|
|
|
@property(nonatomic, copy)NSString *viewerCustomua;//用户自定义参数,需和后台协商,没有定制传@""
|
|
|
@property(nonatomic, copy)NSString *viewerCustomua;//用户自定义参数,需和后台协商,没有定制传@"" 长度不能超过40个字符
|
|
|
/**
|
|
|
* json格式字符串,可选,自定义用户信息,该信息会记录在用户访问记录中,用于统计分析使用(长度不能超过1000个字符,若直播间启用接口验证则该参数无效)如果不需要的话就不要传值
|
|
|
* json格式字符串,可选,自定义用户信息,该信息会记录在用户访问记录中,用于统计分析使用(长度不能超过200个字符,若直播间启用接口验证则该参数无效)如果不需要的话就不要传值
|
|
|
* 格式如下:
|
|
|
* viewercustominfo: '{"exportInfos": [ {"key": "城市", "value": "北京"}, {"key": "姓名", "value": "哈哈"}]}'
|
|
|
*/
|
... | ... | @@ -401,19 +382,11 @@ Destination 选择 "Frameworks" -> |
|
|
*/
|
|
|
@property(nonatomic,assign)CGRect docFrame;//文档区域
|
|
|
/**
|
|
|
* @brief 视频父类窗口
|
|
|
*/
|
|
|
@property(nonatomic,strong)UIView *playerParent;//视频父类窗口
|
|
|
/**
|
|
|
* @brief 视频区域
|
|
|
*/
|
|
|
@property(nonatomic,assign)CGRect playerFrame;//视频区域
|
|
|
/**
|
|
|
* @brief
|
|
|
* 0:IJKMPMovieScalingModeNone
|
|
|
* 1:IJKMPMovieScalingModeAspectFit
|
|
|
* 2:IJKMPMovieScalingModeAspectFill
|
|
|
* 3:IJKMPMovieScalingModeFill
|
|
|
* @brief 屏幕适配方式
|
|
|
* 0:HDSMediaScalingModeNone
|
|
|
* 1:HDSMediaScalingModeAspectFit
|
|
|
* 2:HDSMediaScalingModeAspectFill
|
|
|
* 3:HDSMediaScalingModeFill
|
|
|
*/
|
|
|
@property(assign, nonatomic)NSInteger scalingMode;//屏幕适配方式,含义见上面
|
|
|
/**
|
... | ... | @@ -496,12 +469,56 @@ typedef NS_ENUM(NSUInteger, HAVE_AUDIO_LINE) { |
|
|
PlayParameter *parameter = [[PlayParameter alloc] init];
|
|
|
//配置PlayParameter里面的属性,如userId,roomId等!
|
|
|
//第二步实例化RequestData类
|
|
|
_requestDataPlayBack = [[RequestDataPlayBack alloc] initWithParameter:parameter];
|
|
|
_requestDataPlayBack = [[RequestDataPlayBack alloc] initSDKWithParameter:parameter succed:^(BOOL succed) {
|
|
|
|
|
|
} player:^(UIView * _Nonnull playerView) {
|
|
|
--> **playerView** 即为视频流视图
|
|
|
} failed:^(NSError *error, NSString *reason) {
|
|
|
|
|
|
}];
|
|
|
_requestDataPlayBack.delegate = self;
|
|
|
//第三步添加代理
|
|
|
_requestDataPlayBack.delegate = self;
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
初始化SDK(新)
|
|
|
|
|
|
| 方法 | 注释 |
|
|
|
| ------------------------------------------------- | --------- |
|
|
|
| (id)initSDKWithParameter: succed: player: failed: | 初始化SDK |
|
|
|
|
|
|
示例代码
|
|
|
|
|
|
```objc
|
|
|
/// 初始化SDK
|
|
|
/// @param parameter 参数
|
|
|
/// @param succed 初始化成功回调
|
|
|
/// @param player 播放视图回调
|
|
|
/// @param failed 初始化失败回调
|
|
|
- (id)initSDKWithParameter:(PlayParameter *)parameter
|
|
|
succed:(initSuccedClosure)succed
|
|
|
player:(HDSPlayerViewClosure)player
|
|
|
failed:(initFailedClosure)failed;
|
|
|
```
|
|
|
|
|
|
| 参数 | 注释 |
|
|
|
| --------- | ------------------------------------------------------------ |
|
|
|
| parameter | 初始化SDK参数,其中 "playerParent","playerFrame" 已废弃删除,新的流视图由 HDSPlayerViewClosure 异步回调,自行处理 |
|
|
|
| succed | 初始化SDK成功回调 |
|
|
|
| player | 流视图异步回调,存在回调多次。 |
|
|
|
| failed | 初始化SDK失败回调 |
|
|
|
|
|
|
流视图(callback回调)
|
|
|
|
|
|
| 注意 |
|
|
|
| ------------------------------------------------------------ |
|
|
|
| **“新的流视图”** 通过 初始化SDK(initSDKWithParameter:)方法中的 **player:**,通过 **callback 返回 “流视图”** |
|
|
|
| **“流视图”**(属于UIView 类型),所在 **视图区域**,**视图大小** 可根据业务自行调整设置 |
|
|
|
|
|
|
|
|
|
|
|
|
添加代理
|
|
|
|
|
|
```objc
|
... | ... | @@ -512,28 +529,15 @@ typedef NS_ENUM(NSUInteger, HAVE_AUDIO_LINE) { |
|
|
|
|
|
```objc
|
|
|
/**
|
|
|
* @brief 请求回放地址成功
|
|
|
* @brief 媒体准备完成
|
|
|
*/
|
|
|
-(void)requestSucceed;
|
|
|
- (void)mediaPrepared;
|
|
|
/**
|
|
|
* @brief 请求回放地址失败
|
|
|
*/
|
|
|
-(void)requestFailed:(NSError *)error reason:(NSString *)reason;
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
**至此您的项目已经可以运行了,并且已经集成好了视频基本功能;如果不需要文档功能则不配置文档相关属性即可,另外添加文档功能写一个定时器在视频开始播放时调用下面的方法即可**
|
|
|
|
|
|
```objc
|
|
|
/**
|
|
|
* (已废弃)
|
|
|
* @brief time:从直播开始到现在的秒数,SDK会在画板上绘画出来相应的图形
|
|
|
* 该方法已废弃:配置完SDK基本信息,开始播放会自行播放文档,不需求再次处理;!!!获取播放时间通过代理方法获取: - (void)HDPlayerCurrentTime:(NSTimeInterval)currentTime totalTime:(NSTimeInterval)totalTime;
|
|
|
*/
|
|
|
- (void)continueFromTheTime:(NSInteger)time;
|
|
|
```
|
|
|
|
|
|
代理方法 (可选)
|
|
|
|
|
|
```objc
|
... | ... | @@ -591,21 +595,6 @@ typedef NS_ENUM(NSUInteger, HAVE_AUDIO_LINE) { |
|
|
type //当前类型 text 文本 image 图片
|
|
|
*/
|
|
|
-(void)receivedMarqueeInfo:(NSDictionary *)dic;
|
|
|
/**
|
|
|
* 接收到播放线路 例:int值 2 代表两条 changeLineWithNum传0或1 (已废弃)
|
|
|
*/
|
|
|
-(void)numberOfReceivedLines:(NSInteger)linesCount;
|
|
|
/**
|
|
|
* @brief 接收到播放线路 (已废弃)
|
|
|
* 例:videoArray元素个数 2 代表2条线路 changeLineWithPlayParameter传0或1
|
|
|
*
|
|
|
* 废弃版本 3.13.0
|
|
|
* 兼容版本 2021年10月08日之后将不再维护
|
|
|
* 新方法 清晰度回调 - (void)HDReceivedVideoQuality:(NSDictionary *)dict;
|
|
|
* 线路回调 - (void)HDReceivedVideoAudioLines:(NSDictionary *)dict;
|
|
|
*
|
|
|
*/
|
|
|
-(void)numberOfReceivedLinesWithVideo:(NSArray *)videoArray audio:(NSArray *)audioArray;
|
|
|
/**
|
|
|
* The New Method (3.13.0)
|
|
|
* @brief 是否开启音频模式
|
... | ... | @@ -650,14 +639,6 @@ typedef NS_ENUM(NSUInteger, HAVE_AUDIO_LINE) { |
|
|
* @brief 销毁文档和视频,清除视频和文档的时候需要调用,推出播放页面的时候也需要调用
|
|
|
*/
|
|
|
- (void)requestCancel;
|
|
|
/**
|
|
|
* @brief 改变播放器frame
|
|
|
*/
|
|
|
- (void)changePlayerFrame:(CGRect) playerFrame;
|
|
|
/**
|
|
|
* @brief 改变播放器父窗口
|
|
|
*/
|
|
|
- (void)changePlayerParent:(UIView *) playerParent;
|
|
|
/**
|
|
|
* @brief 播放器暂停
|
|
|
*/
|
... | ... | @@ -708,31 +689,6 @@ typedef NS_ENUM(NSUInteger, HAVE_AUDIO_LINE) { |
|
|
* @brief 获取随堂测信息
|
|
|
*/
|
|
|
-(void)getPracticeInformation;
|
|
|
/**
|
|
|
* @brief 切换线路 (已废弃)
|
|
|
* index 传入numberOfReceivedLines的返回值 如:返回2 则传0或1
|
|
|
* results:
|
|
|
success 0 切换成功 -1切换失败 -2 切换频繁
|
|
|
currentIndex 当前播放线路
|
|
|
*/
|
|
|
- (void)changeLineWithNum:(NSInteger)index completion:(void (^)(NSDictionary * results))completion;
|
|
|
/**
|
|
|
* @brief 切换线路 (已废弃)
|
|
|
* param
|
|
|
* disableVideo 视频传no,音频传yes(账号开启音频模式下才可以传yes)
|
|
|
* lineNum 线路 例:-(void)numberOfReceivedLinesWithVideo:(NSArray *)videoArray audio:(NSArray *)audioArray;中videoArray元素个数为2 则传0或1
|
|
|
* results:
|
|
|
success 0 切换成功 -1切换失败 -2 切换频繁
|
|
|
currentIndex 当前播放线路
|
|
|
*
|
|
|
* 废弃版本 3.13.0
|
|
|
* 兼容版本 2021年10月08日之后将不再维护
|
|
|
* 新方法 切换播放器类型 - (void)changePlayMode:(PLAY_MODE_TYEP)mode;
|
|
|
* 切换清晰度 - (void)changeQuality:(NSString *)quality completion:(void (^)(NSDictionary * results))completion;
|
|
|
* 切换线路 - (void)changeLine:(NSInteger)index completion:(void (^)(NSDictionary * results))completion;
|
|
|
*
|
|
|
*/
|
|
|
- (void)changeLineWithPlayParameter:(PlayParameter *)param completion:(void (^)(NSDictionary * results))completion;
|
|
|
/**
|
|
|
* The New Method (3.13.0)
|
|
|
* @brief 切换播放类型
|
... | ... | @@ -827,11 +783,6 @@ typedef NS_ENUM(NSUInteger, HAVE_AUDIO_LINE) { |
|
|
3.3.2 主动方法(可选)
|
|
|
|
|
|
```objc
|
|
|
/**
|
|
|
* @brief time:从直播开始到现在的秒数,SDK会在画板上绘画出来相应的图形
|
|
|
*/
|
|
|
- (void)continueFromTheTime:(NSInteger)time;
|
|
|
|
|
|
/**
|
|
|
* @brief 获取文档区域内白板或者文档本身的宽高比,返回值即为宽高比,做屏幕适配用
|
|
|
*/
|
... | ... | @@ -845,17 +796,6 @@ typedef NS_ENUM(NSUInteger, HAVE_AUDIO_LINE) { |
|
|
* @brief 改变文档父窗口
|
|
|
*/
|
|
|
- (void)changeDocParent:(UIView *) docParent;
|
|
|
/**
|
|
|
* @brief 主动调用方法 用于调整PPT缩放模式 (已废弃)
|
|
|
* @param docFrame 文档的frame
|
|
|
* @param PPTScalingMode PPT缩放模式
|
|
|
* 1 = 拉伸填充:PPT内容全部展示在显示区域,会被拉伸或压缩,不会存在黑边
|
|
|
* 2 = 等比居中:PPT内容保持原始比例,适应窗口展示在显示区域,会存在黑边
|
|
|
* 3 = 等比填充:PPT内容保持原始比例,以横向或纵向适应显示区域,另一方向将会超出显示区域,超出部分会被裁减,不会存在黑边
|
|
|
*
|
|
|
* 需要调整docFrame 请直接调用 - (void)changeDocFrame:(CGRect)docFrame;方法
|
|
|
*/
|
|
|
- (void)changeDocFrame:(CGRect)docFrame withPPTScalingMode:(NSInteger)PPTScalingMode;
|
|
|
/**
|
|
|
* @brief 主动调用方法 用于调整PPT缩放模式
|
|
|
* @param pptScalingMode PPT缩放模式
|
... | ... | @@ -1019,33 +959,15 @@ answerArr 数组中包含的字段信息如下: |
|
|
|
|
|
## 3.8 随堂测
|
|
|
|
|
|
代理方法(可选)
|
|
|
|
|
|
```objc
|
|
|
/**
|
|
|
* @brief 接收到随堂测
|
|
|
* rseultDic 随堂测内容
|
|
|
resultDic {isExist //1 随堂考存在 0随堂考不存在
|
|
|
practice {id //随堂考主键ID
|
|
|
isAnswered //false 未回答过 true 回答过
|
|
|
options = ({ id //选项主键ID
|
|
|
index //选项序号})
|
|
|
publishTime //发布时间
|
|
|
status //发布状态 1开启 0关闭
|
|
|
type //题目类型 0判断 1单选 2多选}
|
|
|
serverTime //分发时间}
|
|
|
*
|
|
|
*/
|
|
|
-(void)receivePracticeWithDic:(NSDictionary *)resultDic;
|
|
|
```
|
|
|
|
|
|
主动方法(可选)
|
|
|
|
|
|
```objc
|
|
|
/**
|
|
|
* @brief 获取随堂测信息
|
|
|
* 3.16.0 new
|
|
|
* @brief 获取全量随堂测数据
|
|
|
* @param completion 数据回调
|
|
|
*/
|
|
|
- (void)getPracticeInformation;
|
|
|
- (void)fetchAllPractic:(void (^)(NSArray * results))completion;
|
|
|
```
|
|
|
|
|
|
|
... | ... | @@ -1057,46 +979,46 @@ answerArr 数组中包含的字段信息如下: |
|
|
```objc
|
|
|
/**
|
|
|
* 视频播放状态
|
|
|
* HDMoviePlaybackStateStopped 播放停止
|
|
|
* HDMoviePlaybackStatePlaying 开始播放
|
|
|
* HDMoviePlaybackStatePaused 暂停播放
|
|
|
* HDMoviePlaybackStateInterrupted 播放间断
|
|
|
* HDMoviePlaybackStateSeekingForward 播放快进
|
|
|
* HDMoviePlaybackStateSeekingBackward 播放后退
|
|
|
*/
|
|
|
typedef NS_ENUM(NSUInteger, HDMoviePlaybackState) {
|
|
|
HDMoviePlaybackStateStopped,
|
|
|
HDMoviePlaybackStatePlaying,
|
|
|
HDMoviePlaybackStatePaused,
|
|
|
HDMoviePlaybackStateInterrupted,
|
|
|
HDMoviePlaybackStateSeekingForward,
|
|
|
HDMoviePlaybackStateSeekingBackward,
|
|
|
* HDSMediaPlaybackStateStopped 播放停止
|
|
|
* HDSMediaPlaybackStatePlaying 开始播放
|
|
|
* HDSMediaPlaybackStatePaused 暂停播放
|
|
|
* HDSMediaPlaybackStateInterrupted 播放间断
|
|
|
* HDSMediaPlaybackStateSeekingForward 播放快进
|
|
|
* HDSMediaPlaybackStateSeekingBackward 播放后退
|
|
|
*/
|
|
|
typedef NS_ENUM(NSUInteger, HDSMediaPlaybackState) {
|
|
|
HDSMediaPlaybackStateStopped,
|
|
|
HDSMediaPlaybackStatePlaying,
|
|
|
HDSMediaPlaybackStatePaused,
|
|
|
HDSMediaPlaybackStateInterrupted,
|
|
|
HDSMediaPlaybackStateSeekingForward,
|
|
|
HDSMediaPlaybackStateSeekingBackward,
|
|
|
};
|
|
|
|
|
|
/**
|
|
|
* 视频加载状态
|
|
|
* HDMovieLoadStateUnknown 未知状态
|
|
|
* HDMovieLoadStatePlayable 视频未完成全部缓冲,但已缓冲的数据可以进行播放
|
|
|
* HDMovieLoadStatePlaythroughOK 缓冲已经完成
|
|
|
* HDMovieLoadStateStalled 缓冲已经开始
|
|
|
*/
|
|
|
typedef NS_ENUM(NSUInteger, HDMovieLoadState) {
|
|
|
HDMovieLoadStateUnknown,
|
|
|
HDMovieLoadStatePlayable,
|
|
|
HDMovieLoadStatePlaythroughOK,
|
|
|
HDMovieLoadStateStalled,
|
|
|
* HDSMediaLoadStateUnknown 未知状态
|
|
|
* HDSMediaLoadStatePlayable 视频未完成全部缓存,但已缓存的数据可以进行播放
|
|
|
* HDSMediaLoadStatePlaythroughOK 缓冲已经完成
|
|
|
* HDSMediaLoadStateStalled 缓冲已经开始
|
|
|
*/
|
|
|
typedef NS_ENUM(NSUInteger, HDSMediaLoadState) {
|
|
|
HDSMediaLoadStateUnknown,
|
|
|
HDSMediaLoadStatePlayable,
|
|
|
HDSMediaLoadStatePlaythroughOK,
|
|
|
HDSMediaLoadStateStalled,
|
|
|
};
|
|
|
|
|
|
/**
|
|
|
* 视频播放完成原因
|
|
|
* HDMovieFinishReasonPlaybackEnded 自然播放结束
|
|
|
* HDMovieFinishReasonUserExited 用户人为结束
|
|
|
* HDMovieFinishReasonPlaybackError 发生错误崩溃结束
|
|
|
*/
|
|
|
typedef NS_ENUM(NSUInteger, HDMovieFinishReason) {
|
|
|
HDMovieFinishReasonPlaybackEnded,
|
|
|
HDMovieFinishReasonUserExited,
|
|
|
HDMovieFinishReasonPlaybackError,
|
|
|
* HDSMediaFinishReasonPlaybackEnded 自然播放结束
|
|
|
* HDSMediaFinishReasonUserExited 用户人为结束
|
|
|
* HDSMediaFinishReasonPlaybackError 发生错误崩溃结束
|
|
|
*/
|
|
|
typedef NS_ENUM(NSUInteger, HDSMediaFinishReason) {
|
|
|
HDSMediaFinishReasonPlaybackEnded,
|
|
|
HDSMediaFinishReasonUserExited,
|
|
|
HDSMediaFinishReasonPlaybackError,
|
|
|
};
|
|
|
```
|
|
|
|
... | ... | @@ -1106,36 +1028,36 @@ typedef NS_ENUM(NSUInteger, HDMovieFinishReason) { |
|
|
/**
|
|
|
* @brief 视频状态改变
|
|
|
* @param state
|
|
|
* HDMoviePlaybackStateStopped 播放停止
|
|
|
* HDMoviePlaybackStatePlaying 开始播放
|
|
|
* HDMoviePlaybackStatePaused 暂停播放
|
|
|
* HDMoviePlaybackStateInterrupted 播放间断
|
|
|
* HDMoviePlaybackStateSeekingForward 播放快进
|
|
|
* HDMoviePlaybackStateSeekingBackward 播放后退
|
|
|
* HDSMediaPlaybackStateStopped 播放停止
|
|
|
* HDSMediaPlaybackStatePlaying 开始播放
|
|
|
* HDSMediaPlaybackStatePaused 暂停播放
|
|
|
* HDSMediaPlaybackStateInterrupted 播放间断
|
|
|
* HDSMediaPlaybackStateSeekingForward 播放快进
|
|
|
* HDSMediaPlaybackStateSeekingBackward 播放后退
|
|
|
*/
|
|
|
- (void)HDMoviePlayBackStateDidChange:(HDMoviePlaybackState)state;
|
|
|
- (void)HDSMediaPlayBackStateDidChange:(HDSMediaPlaybackState)state;
|
|
|
/**
|
|
|
* @brief 视频加载状态
|
|
|
* @param state 播放状态
|
|
|
* HDMovieLoadStateUnknown 未知状态
|
|
|
* HDMovieLoadStatePlayable 视频未完成全部缓存,但已缓存的数据可以进行播放
|
|
|
* HDMovieLoadStatePlaythroughOK 完成缓存
|
|
|
* HDMovieLoadStateStalled 数据缓存已经停止,播放将暂停
|
|
|
* HDSMediaLoadStateUnknown 未知状态
|
|
|
* HDSMediaLoadStatePlayable 视频未完成全部缓存,但已缓存的数据可以进行播放
|
|
|
* HDSMediaLoadStatePlaythroughOK 缓冲已经完成
|
|
|
* HDSMediaLoadStateStalled 缓冲已经开始
|
|
|
*/
|
|
|
- (void)HDMovieLoadStateDidChange:(HDMovieLoadState)state;
|
|
|
- (void)HDSMediaLoadStateDidChange:(HDSMediaLoadState)state;
|
|
|
/**
|
|
|
* @brief 视频播放完成原因
|
|
|
* @param reason 原因
|
|
|
* HDMovieFinishReasonPlaybackEnded 自然播放结束
|
|
|
* HDMovieFinishReasonUserExited 用户人为结束
|
|
|
* HDMovieFinishReasonPlaybackError 发生错误崩溃结束
|
|
|
* HDSMediaFinishReasonPlaybackEnded 自然播放结束
|
|
|
* HDSMediaFinishReasonUserExited 用户人为结束
|
|
|
* HDSMediaFinishReasonPlaybackError 发生错误崩溃结束
|
|
|
*/
|
|
|
- (void)HDMoviePlayerPlaybackDidFinish:(HDMovieFinishReason)reason;
|
|
|
- (void)HDSMediaPlayerPlaybackDidFinish:(HDSMediaFinishReason)reason;
|
|
|
/**
|
|
|
* @brief 播放器初始化完成 (会多次回调)
|
|
|
* @param dict 数据
|
|
|
*/
|
|
|
- (void)HDMediaPlaybackIsPreparedToPlayDidChange:(NSDictionary *)dict;
|
|
|
- (void)HDMediaPlaybackIsPreparedToPlayDidChange;
|
|
|
```
|
|
|
|
|
|
## 3.10 视频缓存速度
|
... | ... | @@ -1152,16 +1074,7 @@ typedef NS_ENUM(NSUInteger, HDMovieFinishReason) { |
|
|
|
|
|
## 3.11 防录屏
|
|
|
|
|
|
主动方法(可选)
|
|
|
|
|
|
```objc
|
|
|
/**
|
|
|
* @brief 设置防录屏功能
|
|
|
* @param isEnable YES 开启 NO 关闭(默认)
|
|
|
*/
|
|
|
- (void)setAntiRecordScreen:(BOOL)isEnable;
|
|
|
```
|
|
|
|
|
|
防录屏功能拆分到demo层处理,具体实现参考 4.0.0 demo
|
|
|
|
|
|
|
|
|
# 4.常见问题
|
... | ... | @@ -1301,3 +1214,4 @@ PS:直播、在线回放只有上述api会在子线程回调,其余的api均 |
|
|
| audience | 旁听 | 12 |
|
|
|
| inspector | 隐身者 | 13 |
|
|
|
| assistant | 助教 | 14 |
|
|
|
|