服务器录制

服务器录制服务将客户端发送的白板及语音数据在服务端录制,方便开发者做回放等相关开发。该功能需要开通以后才能使用。

点对点白板服务器录制信息回调

点对点互动白板中,主叫和被叫在 option 中 设置 serverRecordDataserverRecordAudio 参数后,通过该回调获取服务端录制信息。

@protocol NIMRTSManagerDelegate <NSObject>

/**
 *  白板录制信息
 *
 *  @param info 录制信息
 *  @param sessionID   白板会话ID
 */
- (void)onRTSRecordingInfo:(NIMRTSRecordingInfo *)info
                forSession:(NSString *)sessionID;
@end

API 接口参数:

参数 类型 说明
info NIMRTSRecordingInfo 服务端录制信息
sessionID NSString 白板会话 ID

info 参数说明:

参数 类型 说明
service NIMRTSService 录制文件的服务类型,通过该参数区分是白板话数据还是语音数据
recordFileName NSString 录制存储文件名
- (void)onRTSRecordingInfo:(NIMRTSRecordingInfo *)info
                forSession:(NSString *)sessionID
{
    NSLog(@"Server record info: session %@, service %@, name %@" , sessionID, (info.service == NIMRTSServiceReliableTransfer) ? @"白板" : @"语音", info.recordFileName);
}

多人白板服务器录制信息

多人互动白板中,在加入时设置 conferenceserverRecording 参数,通过加入回调获取录制相关信息。

@protocol NIMRTSConferenceManagerDelegate <NSObject>

/**
 *  加入多人互动白板结果回调
 *
 *  @param conference 加入的会话
 *  @param result     结果. nil 表示加入成功
 */
- (void)onJoinConference:(NIMRTSConference *)conference
                  result:(nullable NSError *)result;

@end
参数 类型 说明
conference NIMRTSConference 回调对应的多人白板会话
result NSError 加入多人互动白板的结果。nil 表示加入成功

conference 中与服务端录制相关的参数:

参数 类型 说明
name NSString 多人互动白板名称。相同的名称只在会话使用完以后才可以重复使用, 开发者需要保证不会出现重复预订某会话名称而不使用的情况
channelID UInt64 多人互动直播会话对应的当前频道号, 在成功加入会话以后可以在回调的 conference 中读取到
serverRecordName NSString 服务器录制文件名, 在成功加入会话以后可以在回调的 conference 中读取到
//加入
- (NSError *)joinConference:(NSString *)name
{    
    NIMRTSConference *conference = [[NIMRTSConference alloc] init];
    conference.name = name;
    conference.serverRecording = YES;
    __weak typeof (self) wself = self;
    conference.dataHandler = ^(NIMRTSConferenceData *data) {
        [wself handleReceivedData:data];
    };
    NSError *result = [[NIMAVChatSDK sharedSDK].rtsConferenceManager joinConference:conference];

    return result;
}


//加入结果
- (void)onJoinConference:(NIMRTSConference *)conference
                  result:(NSError *)result
{
    if (nil == result) {
        NSLog(@"Conference %@ server record name %@", conference.name, conference. serverRecordName);
    }
}

服务器录制文件格式

在开启了相关功能后,服务器为白板会话中的每个成员发送的所有数据录制一个单独的文件,其中写入数据的格式根据网易云通信客户端 SDK 版本的不同有所区别:

用户发送的数据包直接被写入文件,不包含任何数据包头

用户发送每一个数据包前增加包头(包长字段和时间戳字段)后再写入录制文件,每一个写入文件的包格式如下:

| 包长 | 时间戳 | 数据 |

包长:4字节,写入文件的整个包的字节长度,包含包长和时间戳字段的长度

时间戳:4字节,从会话开始到服务器收到该数据经历的相对时间,单位是毫秒

数据:客户端调用 SDK 发送的白板会话数据