跳转至

回放接口

最近更新时间:2022-01-05 11:31:49

回放说明

  • TKRoomSDK 支持房间完全回放功能,可以完整的还原房间实时直播内容和过程。

TKPlaybackManager

  • 回放主接口类

instance

简要描述
- 创建一个 TKPlaybackManager 单例对象,必须通过此接口创建对象

接口名称
- + (instancetype)instance

方法示例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
@interface RoomController : NSObject
@property (strong, nonatomic) TKPlaybackManager  *playbackMgr;
@end

@implementation RoomController
- (instancetype)init {
    self = [super init];
    if (self) {
        _playbackMgr = [TKPlaybackManager  instance];
    }
    return self;
}
@end
返回值说明

类型 说明
instancetype TKPlaybackManager

destory

简要描述 - 销毁 TKPlaybackManager 单例对象,必须调用此接口

接口名称
- + (void)destory

方法示例

1
[TKPlaybackManager destory];
返回值说明

类型 说明

setLogLevel

简要描述
- 设置SDK日志打印等级,日志会写入沙盒。

接口名称
- + (int)setLogLevel:(TKLogLevel)level logPath:(NSString * _Nullable)logPath debugToConsole:(BOOL)debug

参数

参数名 必填 类型 说明
level TKLogLevel 日志等级
logPath NSString 日志写入沙盒的路径; 默认路径为:Libary/Caches/TKSDKLogs
debug BOOL 控制台是否输出日志,YES:表示控制台会打印日志,NO:表示控制台不打印日志

方法示例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
- (instancetype)init {
    self = [super init];
    if (self) {
        _playbackMgr = [TKPlaybackManager instance];
        NSArray *cachesPathArr = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
        NSString *cachesPath = cachesPathArr.firstObject;
        NSString *logPath = [cachesPath stringByAppendingPathComponent:@"logs"];
        [TKPlaybackManager setLogLevel:TKLogLevelInfo logPath:logPath debugToConsole:YES];
    }
    return self;
}
返回值说明

类型 说明
int 0:表示调用成功,非0:表示调用失败

initWithAppKey

简要描述
- 设置AppID,需要调用此接口初始化房间信息
1. 使用 authKey 方式进入房间,需要传入 appKey,可在企业后台中查找appKey值
2. 使用 token 方式进入教室,需要在 optional 中传入 @“tk_companyDomain”字段

接口名称
- - (int)initWithAppKey:(NSString *)appKey optional:(NSDictionary * _Nullable)optional

参数

参数名 必填 类型 说明
appKey NSString 企业Key值
optional NSDictionary 房间扩展信息,可根据自身的需求,在 TKRoomDefines.h 文件中查看 init初始化 定义的相关设置字段

方法示例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
- (instancetype)init {
    self = [super init];
    if (self) {
        _playbackMgr = [TKPlaybackManager instance];
        NSArray *cachesPathArr = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
        NSString *cachesPath = cachesPathArr.firstObject;
        NSString *logPath = [cachesPath stringByAppendingPathComponent:@"logs"];
        [TKPlaybackManager setLogLevel:TKLogLevelInfo logPath:logPath debugToConsole:YES];
                // authKey  方式进房间
        [_playbackMgr initWithAppKey:kAppkey optional:@{TKRoomSettingOptionalSecureSocket:@(YES),
                                                TKRoomSettingOptionalPrivatePort : @(443),
                                                TKRoomSettingOptionalWhiteBoardNotify: @(NO)
                                                }];
        // token 方式进房间
        [_playbackMgr initWithAppKey:kAppkey optional:@{TKRoomSettingOptionalSecureSocket:@(YES),
                                                TKRoomSettingOptionalPrivatePort : @(443),
                                                TKRoomSettingOptionalWhiteBoardNotify: @(NO)
                                                TKRoomSettingOptionalCompanyDomain : @"companyDomain"
                                                }];
    }
    return self;
}
返回值说明

类型 说明
int 0:表示调用成功,非0:表示调用失败

registerRoomManagerDelegate

简要描述
- 注册房间 TKRoomManagerDelegate 代理,用以接受房间信息回调。

接口名称
- - (int)registerPlaybackManagerDelegate:(id<TKPlaybackManagerDelegate> _Nullable)playbackDelegate

参数

参数名 必填 类型 说明
playbackDelegate id 实现 TKPlaybackManagerDelegate 代理的对象

方法示例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
@interface RoomController : NSObject<TKPlaybackManagerDelegate>
@property (strong, nonatomic) TKPlaybackManager *playbackMgr;
@end

@implementation RoomController
- (instancetype)init {
    self = [super init];
    if (self) {
        _playbackMgr = [TKPlaybackManager instance];
        NSArray *cachesPathArr = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
        NSString *cachesPath = cachesPathArr.firstObject;
        NSString *logPath = [cachesPath stringByAppendingPathComponent:@"logs"];
        [TKPlaybackManager setLogLevel:TKLogLevelInfo logPath:logPath debugToConsole:YES];
                // authKey  方式进房间
        [_playbackMgr initWithAppKey:kAppkey optional:@{TKRoomSettingOptionalSecureSocket:@(YES),
                                                TKRoomSettingOptionalPrivatePort : @(443),
                                                TKRoomSettingOptionalWhiteBoardNotify: @(NO)
                                                }];
        // token 方式进房间
        [_playbackMgr initWithAppKey:kAppkey optional:@{TKRoomSettingOptionalSecureSocket:@(YES),
                                                TKRoomSettingOptionalPrivatePort : @(443),
                                                TKRoomSettingOptionalWhiteBoardNotify: @(NO)
                                                TKRoomSettingOptionalCompanyDomain : @"companyDomain"
                                                }];
        [_playbackMgr registerPlaybackManagerDelegate:self];
    }
    return self;
}
@end
返回值说明

类型 说明
int 0:表示调用成功,非0:表示调用失败

joinPlaybackRoomWithHost

简要描述
- 进入回放房间接口

接口名称

1
2
3
4
5
    - (int)joinPlaybackRoomWithHost:(NSString *)host
                                             port:(int)port
                                        nickName:(NSString *)nickname
                                    roomParams:(NSDictionary *)roomParams
                                        userParams:(NSDictionary * _Nullable)userParams;

参数

参数名 必填 类型 说明
host NSString 服务器地址 默认是https
port int 服务器端口 若在初始化“- (int)initWithAppKey:optional:”接口中设置 TKRoomSettingOptionalSecureSocketYES,表示使用 https 或者 wss,所以此端口需要设置为:443(默认);若初始化接口中设置 TKRoomSettingOptionalSecureSocketNO 或者 不设置,端口为:80(默认).
nickname NSString 昵称
roomParams NSDictionary 房间所需的基本参数,NSDictionary类型,key值详情见 TKRoomDefines.h 相关定义
userParams NSDictionary 进入房间时用户的初始化的信息, 该信息会保存到 TKRoomUser 对象的 properties 属性中。可根据自身需求自定义,比如 giftNumber(礼物数)

方法示例
authKey方式:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
    [_roomMgr joinPlaybackRoomWithHost:@"global.talk-cloud.net"
                                        port:@"443"
                                nickName:@"iOS"
                              roomParams:@{
                                            TKJoinRoomParamsRoomIDKey : @"1473793911",  //房间ID
                                          TKJoinRoomParamsUserRoleKey : @"0",                   //用户角色
                                         TKJoinRoomParamsPasswordKey : @"1",                    //密码 
                                                                    @"clientType" : @(3)                     // 3表示是iOS平台设备
                                                }
                              userParams:nil];
返回值说明

类型 说明
int 0:表示调用成功,非0:表示调用失败

leaveRoom

简要描述
- 退出教室

调用接口后,我和房间其他用户会收到相应的 回调。
1、我会接收到自己离开房间的回调:[- (void)roomManagerRoomLeft][11]。
2、在房间其他用户收到我离开房间的回调:- (void)roomManagerUserLeft:(NSString *)peerID

接口名称
- - (int)leaveRoom:(BOOL)sync Completion:(completion_block _Nullable)completion;
同步退出
- (int)leaveRoom:(completion_block _Nullable)completion;

参数

参数名 必填 类型 说明
sync BOOL 是否同步执行
completion completion_block 调用接口的回调,若出错,会返回错误信息

方法示例

1
2
3
4
5
6
7
    int ret = [_playbackMgr leaveRoom:NO Completion:^(NSError *error) {
            if (error) {
                NSLog(@"leave room error:%@", error);
            }
     }];
OR
    int ret = [_playbackMgr leaveRoom:nil];
返回值说明

类型 说明
int 0:表示调用成功,非0:表示调用失败

getRoomProperty

简要描述
- 获取房间属性

需在调用 joinroom 接口后调用才能获取有效结果。
返回房间相关的所有信息,例如房间ID、房间类型、配置项等。
配置项:表示该房间是否开启了教学辅助功能,例如自动下课、答题器等等教学互动功能。

接口名称
- - (NSDictionary *)getRoomProperty;

方法示例

1
    NSDictionary *roomProperty = [_playbackMgr getRoomProperty];
返回值说明

类型 说明
NSDictionary 房间相关信息的字典

getRoomUserWithUId

简要描述
- 根据用户ID获取用户

TKRoomUser 是用户对象类,存储了用户的相关信息。
需在调用 joinroom 接口后调用才能获取有效结果。

接口名称
- - (TKRoomUser * _Nullable)getRoomUserWithUId:(NSString *)peerId;

参数

参数名 必填 类型 说明
peerId NSString 用户ID

方法示例

1
    TKRoomUser *roomUser = [_playbackMgr getRoomUserWithUId:@"ade123456"];
返回值说明

类型 说明
TKRoomUser 如果房间中有这个用户ID的用户,则返回 TKRoomUser的用户对象,否则返回 nil

playVideo

简要描述
- 播放用户视频

需在调用 initWithAppKey 后,调用生效。
对同一个用户ID,可以调用多次此函数。
- 多次调用:
1、当对传入相同peerID,相同view时,函数不执行任何操作,直接返回成功;
2、当对传入相同peerID,不同view时,会在新的view上渲染视频,之前播放视频的view将停止渲染视频;
3、须都在主线程调用。
- 调用此接口后,会有播放视频的相关回调通知:
1、收到第一帧数据的回调
[-(void)roomManagerOnFirstVideoFrameWithPeerID:(NSString *)peerID width:(NSInteger)width height:(NSInteger)height mediaType:(TKMediaType)type][5]
2、播放视频的过程中,出现视频中断的回调
[-(void)roomManagerOnVideoStateChange:(NSString )peerId deviceId:(NSString )deviceId videoState:(TKRenderState)state mediaType:(TKMediaType)type][6]

接口名称

1
2
3
4
5
6
7
8
9
    - (int)playVideo:(NSString *)peerID
        renderType:(TKRenderMode)renderType
               window:(UIView *)window
         completion:(completion_block _Nullable)completion;

      - (int)playVideo:(NSString *)peerID
                 canvas:(TKVideoCanvas *)canvas
                 deviceId:(NSString *_Nullable)deviceId
           completion:(completion_block _Nullable)completion;

参数

参数名 必填 类型 说明
peerID NSString 用户ID
TKRenderMode TKRenderMode 渲染模式枚举,定义详情见 TKRoomDefines.h
window UIView 视频窗口
canvas TKVideoCanvas 渲染窗口类,定义详情见 TKRoomDefines.h
deviceId NSString 该视频的采集设备ID,针对该用户是多摄像头设备同时发布情况
completion completion_block 调用完成的回调,可以处理播放完成之后的操作

方法示例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
    UIView *videoView = [[UIView alloc] initWithFrame:self.view.bounds];
    [self.view addSubview:videoView];
    [_playbackMgr playVideo:@"ade123456 "
                  renderType:TKRenderMode_adaptive
                        window:videoView
                   completion:^(NSError *error) {
            if (error) {
               NSLog(@"paly video error = %@", error);
            }
        }];
OR:
        UIView *videoView = [[UIView alloc] initWithFrame:self.view.bounds];
        [self.view addSubview:videoView];
        TKVideoCanvas *canvas = [[TKVideoCanvas alloc] init];
        canvas.view = videoView;                                        //渲染视频的view
        canvas.isMirror = NO;                                          //视频是否镜像
        canvas.renderMode = TKRenderMode_adaptive;     // 渲染模式
        [_playbackMgr playVideo:@"ade123456"
                            canvas:canvas
                          deviceId:nil
                       completion:^(NSError *error) {
            if (error) {
               NSLog(@"paly video error = %@", error);
            }
        }];
返回值说明

类型 说明
int 0:表示调用成功,非0:表示调用失败

playAudio

简要描述
- 播放用户音频

需在调用 initWithAppKey 后,调用生效。
无需播放自己的音频,若playAudio传入参数是自己的ID,函数会直接return。
- 调用此接口后,会有播放音频的相关回调通知:
1、收到第一帧数据的回调
[- (void)roomManagerOnFirstAudioFrameWithPeerID:(NSString *)peerID mediaType:(TKMediaType)type][7]
2、播放视频的过程中,出现音频中断的回调
[- (void)roomManagerOnAudioStateChange:(NSString *)peerId audioState:(TKRenderState)state mediaType:(TKMediaType)type][8]
3、播放用户音频时,音量大小变化的回调(包括自己的音量和远端音频的音量):
[-(void)roomManagerOnAudioVolumeWithPeerID:(NSString *)peeID volume:(int)volume][9]

接口名称
- - (int)playAudio:(NSString *)peerID completion:(completion_block _Nullable)completion;

参数

参数名 必填 类型 说明
peerID NSString 用户ID
completion completion_block 调用完成回调

方法示例

1
   [_playbackMgr playAudio:@"ade123456" completion:nil];
返回值说明

类型 说明
int 0:表示调用成功,非0:表示调用失败

unPlayVideo

简要描述
- 停止播放用户视频

需在调用 initWithAppKey 后,调用生效。 须都在主线程调用。

接口名称

1
2
3
4
5
6
    - (int)unPlayVideo:(NSString *)peerID
              completion:(completion_block _Nullable)completion;
OR
    - (int)unPlayVideo:(NSString *)peerID
                   deviceId:(NSString *_Nullable)deviceId
               completion:(completion_block _Nullable)completion;

参数

参数名 必填 类型 说明
peerID NSString 用户ID
deviceId NSString 采集该视频的设备ID,针对该用户是多摄像头设备同时发布情况
completion completion_block 调用完成的回调

方法示例

1
2
3
    [_playbackMgr unPlayVideo:@"ade123456" completion:nil];
OR:
    [_playbackMgr unPlayVideo:@"ade123456" deviceId:nil completion:nil];

返回值说明

类型 说明
int 0:表示调用成功,非0:表示调用失败

unPlayAudio

简要描述
- 停止播放用户音频

接口名称
- - (int)unPlayAudio:(NSString *)peerID completion:(completion_block _Nullable)completion;

参数

参数名 必填 类型 说明
peerID NSString 用户ID
completion completion_block 调用完成回调

方法示例

1
    [_playbackMgr unPlayAudio:@"ade123456" completion:nil];
返回值说明

类型 说明
int 0:表示调用成功,非0:表示调用失败

playMediaFile

简要描述
- 播放用户分享的媒体流文件

收到用户分享的媒体流回调:-(void)roomManagerOnShareMediaState:(NSString )peerId state:(TKMediaState)state extensionMessage:(NSDictionary )message时,调用接口去播放视频

接口名称

1
2
3
4
- (int)playMediaFile:(NSString *)peerId
            renderType:(TKRenderMode)renderType
                window:(UIView *)window
             completion:(completion_block _Nullable)completion;

参数

参数名 必填 类型 说明
peerId NSString 用户ID
renderType TKRenderMode 渲染模式
window UIView 渲染视频的窗口
completion completion_block 调用完成的回调

方法示例

1
2
3
4
5
6
    UIView *view = [[UIView alloc] initWithFrame:self.view.bounds];
    self.view addSubview:view];
    [_playbackMgr playMediaFile:@"adc123456"
                      renderType:TKRenderMode_fit
                            window:view
                       completion:nil];
返回值说明

类型 说明
int 0:表示调用成功,非0:表示调用失败

unPlayMediaFile

简要描述
- 停止播放分享的媒体流文件

接口名称
- - (int)unPlayMediaFile:(NSString *)peerId completion:(completion_block _Nullable)completion;

参数

参数名 必填 类型 说明
peerId NSString 用户ID
completion completion_block 调用完成的回调

方法示例

1
    [_playbackMgr unPlayMediaFile:@"adc123456" completion:nil];
返回值说明

类型 说明
int 0:表示调用成功,非0:表示调用失败

pauseMediaFile

简要描述
- 暂停播放共享的媒体流文件

接口名称
- - (int)pauseMediaFile:(BOOL)pause;

参数

参数名 必填 类型 说明
pause BOOL 是否暂停

方法示例

1
    [_playbackMgr pauseMediaFile:NO];
返回值说明

类型 说明
int 0:表示调用成功,非0:表示调用失败

seekMediaFile

简要描述
- seek分享的媒体流文件进度

接口名称
- - (int)seekMediaFile:(NSTimeInterval)pos;

参数

参数名 必填 类型 说明
pos NSTimeInterval seek的时间进度

方法示例

1
    [_playbackMgr seekMediaFile:1000];
返回值说明

类型 说明
int 0:表示调用成功,非0:表示调用失败

playScreen

简要描述
- 播放屏幕共享

专门用于播放用户分享的屏幕共享流接口 接收到回调:- (void)roomManagerOnShareScreenState:(NSString *)peerId state:(TKMediaState)state,表示有用户发布了屏幕共享,即可调用此接口播放。

接口名称

1
2
3
4
- (int)playScreen:(NSString *)peerID
        renderType:(TKRenderMode)renderType
              window:(UIView *)window
         completion:(completion_block _Nullable)completion;

参数

参数名 必填 类型 说明
peerID NSString 用户ID
renderType TKRenderMode 渲染模式
window UIView 渲染视频的窗口
completion completion_block 调用完成的回调

方法示例

1
2
3
4
5
6
    UIView *view = [[UIView alloc] initWithFrame:self.view.bounds];
    self.view addSubview:view];
    [_playbackMgr playScreen:@"adc123456"
                    renderType:TKRenderMode_fit
                        window:view
                    completion:nil];
返回值说明

类型 说明
int 0:表示调用成功,非0:表示调用失败

unPlayScreen

简要描述
- 停止播放屏幕共享

专门用于停止播放用户分享的屏幕共享流接口

接口名称
- - (int)unPlayScreen:(NSString *)peerID completion:(completion_block _Nullable)completion;

参数

参数名 必填 类型 说明
peerID NSString 用户ID
completion completion_block 调用完成的回调

方法示例

1
    [_playbackMgr unPlayScreen:@"adc123456" completion:nil];
返回值说明

类型 说明
int 0:表示调用成功,非0:表示调用失败

playFile

简要描述
- 播放用户共享的电影文件

专门用于播放用户分享的电影文件流接口 接收到回调:- (void)roomManagerOnShareFileState:(NSString )peerId state:(TKMediaState)state extensionMessage:(NSDictionary )message;,表示有用户发布了共享电影,即可调用此接口播放。

接口名称

1
2
3
4
- (int)playFile:(NSString *)peerID
   renderType:(TKRenderMode)renderType
         window:(UIView *)window
     completion:(completion_block _Nullable)completion;

参数

参数名 必填 类型 说明
peerID NSString 用户ID
renderType TKRenderMode 渲染模式
window UIView 渲染视频窗口
completion completion_block 调用完成的回调

方法示例

1
2
3
4
5
6
    UIView *view = [[UIView alloc] initWithFrame:self.view.bounds];
    self.view addSubview:view];
    [_playbackMgr playScreen:@"adc123456"
                    renderType:TKRenderMode_fit
                        window:view
                    completion:nil];
返回值说明

类型 说明
int 0:表示调用成功,非0:表示调用失败

unPlayFile

简要描述
- 停止播放用户共享的电影文件

专门用于停止播放用户分享的电影文件流接口

接口名称
- - (int)unPlayFile:(NSString *)peerID completion:(completion_block _Nullable)completion;

参数

参数名 必填 类型 说明
peerID NSString 用户ID
completion completion_block 调用完成的回调

方法示例

1
    [_playbackMgr unPlayFile:@"adc123456" completion:nil];
返回值说明

类型 说明
int 0:表示调用成功,非0:表示调用失败

seekPlayback

简要描述
- 设置回放的进度

接口名称
- - (int)seekPlayback:(NSTimeInterval)positionTime;

参数

参数名 必填 类型 说明
positionTime NSTimeInterval 进度时间点

方法示例

1
    [_playbackMgr seekPlayback:10000];
返回值说明

类型 说明
int 0:表示调用成功,非0:表示调用失败

pausePlayback

简要描述
- 暂停回放

接口名称
- - (int)pausePlayback;

参数

方法示例

1
    [_playbackMgr pausePlayback];
返回值说明

类型 说明
int 0:表示调用成功,非0:表示调用失败

playback

简要描述
- 开始回放

接口名称
- - (int)playback;

参数

方法示例

1
    [_playbackMgr playback];
返回值说明

类型 说明
int 0:表示调用成功,非0:表示调用失败

备注

© 2016-2023 北京拓课网络科技有限公司 版权所有  京ICP备17018423号-1 京公网安备11010502043461号