媒体补充增强信息(SEI)
提示
RTCLib SDK 从 5.3.0 版本开始正式支持媒体补充增强信息(SEI)。
在音视频流媒体应用中,可以使用流 SEI(Supplemental Enhancement Information,媒体补充增强信息)将文本信息与音视频内容打包在一起,从推流端推出,并从拉流端接收,以此实现文本数据与音视频内容的精准同步的目的。一般可用于视频画面的精准布局、远端歌词同步、直播答题等应用场景。
自 5.3.0 起,RTCLib SDK 提供了 sendSEI
方法,支持在发布音视频时添加媒体补充增强信息(SEI)。
SEI 开关
SDK 支持在加入房间后动态开启或者关闭发送 SEI 的能力。加入房间后,通过调用 RCRTCLocalUser.h
的 setEnableSEI
方法开启或者关闭发送 SEI 能力。该方法支持在发布流前后调用。
提示
会议模式下所有参会用户均可以发流,直播模式下主播角色用户可以发流。注意,直播模式下的观众角色不发布资源,因此开启发送 SEI 能力对于观众角色无效。观众角色调用该 API 后会返回对应的错误码。
// 加入房间后,通过 RCRTCRoom 对象持有的 RCRTCLocalUser 对象作为调用入口。
// 开启 SEI 能力
[self.room.localUser setEnableSEI:YES completion:^(BOOL isSuccess, RCRTCCode errCode) {
NSLog(@"isSuccess:%@, errCode:%@",@(isSuccess),@(errCode));
}];
发送 SEI 数据
用户如果在发布流数据之前已经开启 SEI 开关,通过 RCRTCLocalUser.h
头文件的 sendSEI
方法发送 SEI 数据。发送的结果通过返回值确定,不满足发送条件会返回对应的错误码。
提示
考虑到有可能因为网络问题导致丢失 SEI 数据帧,可以在频率限制范围内多次发送 SEI 信息。频率限制:1 秒钟不要超过 30 次。SEI 数据长度限制为 4096 字节。
//用户自定义数据
NSString *seiJson = @"xxx";
RCRTCCode result = [self.room.localUser sendSEI:seiJson];
if (result != RCRTCCodeSuccess) {
NSLog(@"发送失败:%@",@(code));
}
接收 SEI 数据
用户订阅房间内的流后,可以接收当前房间的 SEI 数据。