400-881-9892

文档中心

官方文档,可查阅产品介绍、快速入门、用户指南、开发指南、API参考、SDK参考、帮助等信息。

文档中心 互动课堂

Playback interface

    Playback Instructions

    The TKRoomSDK supports the complete playback of rooms, which can fully restore the content and process of the real-time live broadcast of the room.

    TKPlaybackManager

    Playback Main Interface Class

    instance

    • Brief description

    Create a singleton object of TKPlaybackManager, which must be created through this interface.

    • Interface Name

    + (instancetype)instance

    • Method Example
    1
    2
    3
    4
    5
    6
    7
    @interface RoomController : NSObject@property (strong, nonatomic) TKPlaybackManager  *playbackMgr;@end
    @implementation RoomController- (instancetype)init {
        self = [super init];
        if (self) {
            _playbackMgr = [TKPlaybackManager  instance];
        }
        return self;}@end
    
    • Return Value Description
    Type Description
    instancetype TKPlaybackManager

    destory

    • Brief description

    Destroy the singleton object of TKPlaybackManager, and this interface must be called

    • Interface Name

    + (void)destory

    • Method Example

    [TKPlaybackManager destory];

    • Return Value Description
    Type Description
    None None

    setLogLevel

    • Brief description

    Set the SDK log printing level, and logs will be written to the sandbox.

    • Interface Name

    + (int)setLogLevel:(TKLogLevel)level logPath:(NSString * _Nullable)logPath debugToConsole:(BOOL)debug

    • Parameter
    Parameter Name Required Type Description
    level Yes TKLogLevel Log Level
    llogPath No NSString The path for logs to be written to the sandbox; the default path is: Libary/Caches/TKSDKLogs
    debug Yes BOOL Whether the console outputs logs: YES means logs will be printed to the console, NO means logs will not be printed to the console
    • Method Example
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    - (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;}
    
    • Return Value Description
    Type Description
    int 0: Indicates that the call is successful. Non-zero: Indicates that the call fails

    initWithAppKey

    • Brief description

    Set the AppID. This interface must be called to initialize room information. 1.To enter the room using the authKey method, the appKey must be passed in. The value of appKey can be found in the corporate backend. 2.To enter the classroom using the token method, the field @"tk_companyDomain" must be passed in the optional parameters

    • Interface Name

    - (int)initWithAppKey:(NSString *)appKey optional:(NSDictionary * _Nullable)optional

    • Parameter
    Parameter Name Required Type Description
    appKey Yes NSString Corporate Key
    optional No NSDictionary Room extension information. You can view the relevant setting fields defined in the TKRoomDefines.h file for initialization according to your own needs
    • Method Example
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    - (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  方式进房间  Enter the room using the authKey method
            [_playbackMgr initWithAppKey:kAppkey optional:@{TKRoomSettingOptionalSecureSocket:@(YES),
                                                    TKRoomSettingOptionalPrivatePort : @(443),
                                                    TKRoomSettingOptionalWhiteBoardNotify: @(NO)
                                                    }];
            // token 方式进房间 Enter the room using the token method
            [_playbackMgr initWithAppKey:kAppkey optional:@{TKRoomSettingOptionalSecureSocket:@(YES),
                                                    TKRoomSettingOptionalPrivatePort : @(443),
                                                    TKRoomSettingOptionalWhiteBoardNotify: @(NO)
                                                    TKRoomSettingOptionalCompanyDomain : @"companyDomain"
                                                    }];
        }
        return self;}
    
    • Return Value Description
    Type Description
    int 0: Indicates that the call is successful. Non-zero: Indicates that the call fails

    registerRoomManagerDelegate

    • Brief description

    Register the TKRoomManagerDelegate delegate to receive room information callbacks.

    • Interface Name

    - (int)registerPlaybackManagerDelegate:(id<TKPlaybackManagerDelegate> _Nullable)playbackDelegate

    • Parameter
    Parameter Name Required Type Description
    playbackDelegate No id The object that implements the TKPlaybackManagerDelegate delegate
    • Method Example
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    @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  方式进房间  Enter the room using the authKey method
            [_playbackMgr initWithAppKey:kAppkey optional:@{TKRoomSettingOptionalSecureSocket:@(YES),
                                                    TKRoomSettingOptionalPrivatePort : @(443),
                                                    TKRoomSettingOptionalWhiteBoardNotify: @(NO)
                                                    }];
            // token 方式进房间  Enter the room using the token method
            [_playbackMgr initWithAppKey:kAppkey optional:@{TKRoomSettingOptionalSecureSocket:@(YES),
                                                    TKRoomSettingOptionalPrivatePort : @(443),
                                                    TKRoomSettingOptionalWhiteBoardNotify: @(NO)
                                                    TKRoomSettingOptionalCompanyDomain : @"companyDomain"
                                                    }];
            [_playbackMgr registerPlaybackManagerDelegate:self];
        }
        return self;}@end
    
    • Return Value Description
    Type Description
    int 0: Indicates that the call is successful. Non-zero: Indicates that the call fails

    joinPlaybackRoomWithHost

    • Brief description

    Playback Room Entry Interface

    • Interface Name
    1
    2
    3
    4
    5
        - (int)joinPlaybackRoomWithHost:(NSString *)host
                                                 port:(int)port
                                            nickName:(NSString *)nickname
                                        roomParams:(NSDictionary *)roomParams
                                            userParams:(NSDictionary * _Nullable)userParams;
    
    • Parameter
    Parameter Name Required Type Description
    host Yes NSString Server address. The default is https
    port Yes int Server port. If TKRoomSettingOptionalSecureSocket is set to YES in the initialization interface [- (int)initWithAppKey:optional:], indicating the use of https or wss, then this port should be set to: 443 (default). If TKRoomSettingOptionalSecureSocket is set to NO or not set in the initialization interface, the port should be: 80 (default).
    nickname Yes NSString Nickname
    roomParams Yes NSDictionary The basic parameters required for the room, of type NSDictionary. For details of the key values, refer to the relevant definitions in TKRoomDefines.h
    userParams Yes NSDictionary The initialization information of the user when entering the room. This information will be saved in the properties attribute of the TKRoomUser object. You can customize it according to your own needs, such as giftNumber (number of gifts)
    • Method Example

    AuthKey method:

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
        [_roomMgr joinPlaybackRoomWithHost:@"global.talk-cloud.net"
                                            port:@"443"
                                    nickName:@"iOS"
                                  roomParams:@{
                                                TKJoinRoomParamsRoomIDKey : @"1473793911",  //Room ID
                                              TKJoinRoomParamsUserRoleKey : @"0",                   //User role
                                             TKJoinRoomParamsPasswordKey : @"1",                    //Password 
                                                                        @"clientType" : @(3)                     //The number 3 indicates that it is an iOS platform device
                                                    }
                                  userParams:nil];
    
    • Return Value Description
    Type Description
    int 0: Indicates that the call is successful. Non-zero: Indicates that the call fails

    leaveRoom

    • Brief description

    Exit the classroom

    After calling the interface, both I and the other users in the room will receive corresponding callbacks. 1.I will receive a callback for myself leaving the room: [- (void)roomManagerRoomLeft][11]. 2.Other users in the room will receive a callback for my departure: - (void)roomManagerUserLeft:(NSString *)peerID.

    • Interface Name

    - (int)leaveRoom:(BOOL)sync Completion:(completion_block _Nullable)completion;

    Synchronized exit

    - (int)leaveRoom:(completion_block _Nullable)completion;

    • Parameter
    Parameter Name Required Type Description
    sync Yes BOOL whether executed synchronously
    completion No completion_block The callback of the API call will return an error message if there is an error
    • Method Example
    1
    2
    3
    4
    5
    6
        int ret = [_playbackMgr leaveRoom:NO Completion:^(NSError *error) {
                if (error) {
                    NSLog(@"leave room error:%@", error);
                }
         }];OR
        int ret = [_playbackMgr leaveRoom:nil];
    
    • Return Value Description
    Type Description
    int 0: Indicates that the call is successful. Non-zero: Indicates that the call fails

    getRoomProperty

    • Brief description

    Get room attributes

    This method must be called after the joinRoom API is invoked to obtain valid results. It returns all information related to the room, such as the room ID, room type, and configuration options. Configuration options: These indicate whether the room has enabled teaching assistant features, such as automatic class dismissal, quiz tools, and other interactive teaching functions.

    • Interface Name

    - (NSDictionary *)getRoomProperty;

    • Method Example

    NSDictionary *roomProperty = [_playbackMgr getRoomProperty];

    • Return Value Description
    Type Description
    NSDictionary Dictionary of room-related information

    getRoomUserWithUId

    • Brief description

    Retrieve a user based on the user ID

    The TKRoomUser is a user object class that stores relevant user information. It must be called after the joinRoom interface is invoked to obtain valid results.

    • Interface Name

    - (TKRoomUser * _Nullable)getRoomUserWithUId:(NSString *)peerId;

    • Parameter
    Parameter Name Required Type Description
    peerId Yes NSString User ID
    • Method Example

    TKRoomUser *roomUser = [_playbackMgr getRoomUserWithUId:@"ade123456"];

    • Return Value Description
    Type Description
    TKRoomUser If there is a user with the specified user ID in the room, it returns the user object of TKRoomUser; otherwise, it returns nil

    playVideo

    • Brief description

    Play the user's video

    This function takes effect after calling initWithAppKey. It can be called multiple times for the same user ID. •  Multiple calls: 1.When the same peerID and the same view are passed in, the function does not perform any operation and returns success directly. 2.When the same peerID but a different view is passed in, the video will be rendered on the new view, and the previous view that was playing the video will stop rendering. 3.It must be called on the main thread.

    •  After calling this interface, there will be relevant callbacks for video playback notifications: 1.Callback for receiving the first frame of data: -(void)roomManagerOnFirstVideoFrameWithPeerID:(NSString )peerID width:(NSInteger)width height:(NSInteger)height mediaType:(TKMediaType)type][5] 2.Callback for video interruption during playback: -(void)roomManagerOnVideoStateChange:(NSString )peerId deviceId:(NSString *)deviceId videoState:(TKRenderState)state mediaType:(TKMediaType)type ][6]

    • Interface Name
    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;
    
    • Parameter
    Parameter Name Required Type Description
    peerId Yes NSString User ID
    TKRenderMode Yes TKRenderMode The rendering mode is an enumeration. For detailed definitions, see TKRoomDefines.h
    window Yes UIView Video window
    canvas Yes TKVideoCanvas Rendering window class. For detailed definitions, see TKRoomDefines.h
    deviceId No NSString The video's capture device ID, in the case where the user is publishing from multiple cameras simultaneously
    completion No completion_block The callback upon completion of the call can handle operations after playback is finished
    • Method Example
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
        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;                                        //The view for rendering the video
            canvas.isMirror = NO;                                          // whether the video mirrored
            canvas.renderMode = TKRenderMode_adaptive;     // Rendering mode
            [_playbackMgr playVideo:@"ade123456"
                                canvas:canvas
                              deviceId:nil
                           completion:^(NSError *error) {
                if (error) {
                   NSLog(@"paly video error = %@", error);
                }
            }];
    
    • Return Value Description
    Type Description
    int 0: Indicates that the call is successful. Non-zero: Indicates that the call fails

    playAudio

    • Brief description

    Play the user's audio

    The following requirements must be met: •  The function takes effect after calling initWithAppKey. •  There is no need to play one's own audio. If the parameter passed to playAudio is one's own ID, the function will directly return. •  After calling this interface, the following callback notifications related to audio playback will be triggered: 1.Callback for receiving the first frame of data: -(void)roomManagerOnFirstAudioFrameWithPeerID:(NSString )peerID mediaType:(TKMediaType)type ][7] 2.Callback for audio interruption during video playback: -(void)roomManagerOnAudioStateChange:(NSString )peerId audioState:(TKRenderState)state mediaType:(TKMediaType)type ][8] 3.Callback for changes in audio volume during user audio playback (including one's own volume and remote audio volume): -(void)roomManagerOnAudioVolumeWithPeerID:(NSString *)peerID volume:(int)volume ][9]

    • Interface Name

    - (int)playAudio:(NSString *)peerID completion:(completion_block _Nullable)completion;

    • Parameter
    Parameter Name Required Type Description
    peerId Yes NSString User ID
    completion No completion_block Completion callback
    • Method Example

    [_playbackMgr playAudio:@"ade123456" completion:nil];

    • Return Value Description
    Type Description
    int 0: Indicates that the call is successful. Non-zero: Indicates that the call fails

    unPlayVideo

    • Brief description

    Stop playing the user's video

    The function takes effect after calling initWithAppKey. It must be called on the main thread.

    • Interface Name
    1
    2
    3
    4
    5
        - (int)unPlayVideo:(NSString *)peerID
                  completion:(completion_block _Nullable)completion;OR
        - (int)unPlayVideo:(NSString *)peerID
                       deviceId:(NSString *_Nullable)deviceId
                   completion:(completion_block _Nullable)completion;
    
    • Parameter
    Parameter Name Required Type Description
    peerId Yes NSString User ID
    deviceId No NSString The device ID that captured this video, in the case where the user is publishing from multiple camera devices simultaneously
    completion No completion_block Completion callback
    • Method Example
    1
    2
        [_playbackMgr unPlayVideo:@"ade123456" completion:nil];OR:
        [_playbackMgr unPlayVideo:@"ade123456" deviceId:nil completion:nil];
    
    • Return Value Description
    Type Description
    int 0: Indicates that the call is successful. Non-zero: Indicates that the call fails

    unPlayAudio

    • Brief description

    Stop playing the user's audio

    • Interface Name

    - (int)unPlayAudio:(NSString *)peerID completion:(completion_block _Nullable)completion;

    • Parameter
    Parameter Name Required Type Description
    peerId Yes NSString User ID
    completion No completion_block Completion callback
    • Method Example

    [_playbackMgr unPlayAudio:@"ade123456" completion:nil];

    • Return Value Description
    Type Description
    int 0: Indicates that the call is successful. Non-zero: Indicates that the call fails

    playMediaFile

    • Brief description

    Play the media stream file shared by the user

    When receiving the callback for a user sharing a media stream: -(void)roomManagerOnShareMediaState:(NSString )peerId state:(TKMediaState)state extensionMessage:(NSDictionary )message call the interface to play the video

    • Interface Name
    1
    2
    3
    4
    - (int)playMediaFile:(NSString *)peerId
                renderType:(TKRenderMode)renderType
                    window:(UIView *)window
                 completion:(completion_block _Nullable)completion;
    
    • Parameter
    Parameter Name Required Type Description
    peerId Yes NSString User ID
    renderType Yes TKRenderMode Rendering mode
    window Yes UIView The window for rendering the video
    completion No completion_block Completion callback
    • Method Example
    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];
    
    • Return Value Description
    Type Description
    int 0: Indicates that the call is successful. Non-zero: Indicates that the call fails

    unPlayMediaFile

    • Brief description

    Stop playing the shared media stream file

    • Interface Name

    - (int)unPlayMediaFile:(NSString *)peerId completion:(completion_block _Nullable)completion;

    • Parameter
    Parameter Name Required Type Description
    peerId Yes NSString User ID
    completion No completion_block Completion callback
    • Method Example

    [_playbackMgr unPlayMediaFile:@"adc123456" completion:nil];

    • Return Value Description
    Type Description
    int 0: Indicates that the call is successful. Non-zero: Indicates that the call fails

    pauseMediaFile

    • Brief description

    Pause playing the shared media stream file

    • Interface Name

    - (int)pauseMediaFile:(BOOL)pause;

    • Parameter
    Parameter Name Required Type Description
    pause Yes BOOL Whether paused
    • Method Example

    [_playbackMgr pauseMediaFile:NO];

    • Return Value Description
    Type Description
    int 0: Indicates that the call is successful. Non-zero: Indicates that the call fails

    seekMediaFile

    • Brief description

    Seek the progress of the shared media stream file

    • Interface Name

    - (int)seekMediaFile:(NSTimeInterval)pos;

    • Parameter
    Parameter Name Required Type Description
    pos Yes NSTimeInterval The seek time progress
    • Method Example

    [_playbackMgr seekMediaFile:1000];

    • Return Value Description
    Type Description
    int 0: Indicates that the call is successful. Non-zero: Indicates that the call fails

    playScreen

    • Brief description

    Play screen sharing

    The interface specifically used for playing the screen-sharing stream shared by a user. When the callback is received: -(void)roomManagerOnShareScreenState:(NSString *)peerId state:(TKMediaState)state,it indicates that a user has published a screen share, and this interface can be called to play it.

    • Interface Name
    1
    2
    3
    4
    - (int)playScreen:(NSString *)peerID
            renderType:(TKRenderMode)renderType
                  window:(UIView *)window
             completion:(completion_block _Nullable)completion;
    
    • Parameter
    Parameter Name Required Type Description
    peerID Yes NSString User ID
    renderType Yes TKRenderMode Rendering mode
    window Yes UIView The window for rendering the video
    completion No completion_block Completion callback
    • Method Example
    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];
    
    • Return Value Description
    Type Description
    int 0: Indicates that the call is successful. Non-zero: Indicates that the call fails

    unPlayScreen

    • Brief description

    Stop playing the screen share

    The interface specifically used for stopping the playback of the screen-sharing stream shared by a user

    • Interface Name

    - (int)unPlayScreen:(NSString *)peerID completion:(completion_block _Nullable)completion;

    • Parameter
    Parameter Name Required Type Description
    peerID Yes NSString User ID
    completion No completion_block Completion callback
    • Method Example

    [_playbackMgr unPlayScreen:@"adc123456" completion:nil];

    • Return Value Description
    Type Description
    int 0: Indicates that the call is successful. Non-zero: Indicates that the call fails

    playFile

    • Brief description

    Play the movie file shared by the user

    The interface specifically used for playing the movie file stream shared by a user. When the callback is received: -(void)roomManagerOnShareFileState:(NSString )peerId state:(TKMediaState)state extensionMessage:(NSDictionary )message;,it indicates that a user has published a shared movie, and this interface can be called to play it.

    • Interface Name
    1
    2
    3
    4
    - (int)playFile:(NSString *)peerID
       renderType:(TKRenderMode)renderType
             window:(UIView *)window
         completion:(completion_block _Nullable)completion;
    
    • Parameter
    Parameter Name Required Type Description
    peerID Yes NSString User ID
    renderType Yes TKRenderMode Rendering mode
    window Yes UIView The window for rendering the video
    completion No completion_block Completion callback
    • Method Example
    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];
    
    • Return Value Description
    Type Description
    int 0: Indicates that the call is successful. Non-zero: Indicates that the call fails

    unPlayFile

    • Brief description

    Stop playing the movie file shared by the user

    The interface specifically used for stopping the playback of the movie file stream shared by a user

    • Interface Name

    - (int)unPlayFile:(NSString *)peerID completion:(completion_block _Nullable)completion;

    • Parameter
    Parameter Name Required Type Description
    peerID Yes NSString User ID
    completion No completion_block Completion callback
    • Method Example

    [_playbackMgr unPlayFile:@"adc123456" completion:nil];

    • Return Value Description
    Type Description
    int 0: Indicates that the call is successful. Non-zero: Indicates that the call fails

    seekPlayback

    • Brief description

    Set the playback progress

    • Interface Name

    - (int)seekPlayback:(NSTimeInterval)positionTime;

    • Parameter
    Parameter Name Required Type Description
    positionTime Yes NSTimeInterval Progress timestamp
    • Method Example

    [_playbackMgr seekPlayback:10000];

    • Return Value Description
    Type Description
    int 0: Indicates that the call is successful. Non-zero: Indicates that the call fails

    pausePlayback

    • Brief description

    Pause playback

    • Interface Name

    - (int)pausePlayback;

    • Parameter

    None

    • Method Example

    [_playbackMgr pausePlayback];

    • Return Value Description
    Type Description
    int 0: Indicates that the call is successful. Non-zero: Indicates that the call fails

    playback

    • Brief description

    Start playback

    • Interface Name

    - (int)playback;

    • Parameter

    None

    • Method Example

    [_playbackMgr playback];

    • Return Value Description
    Type Description
    int 0: Indicates that the call is successful. Non-zero: Indicates that the call fails

    Notes

    For more return error codes, please refer to the error code descriptions in TKRoomErrorCode