sendSEIMessage method
@detail api
@hiddensdk(audiosdk)
@author wangzhanqiang
@brief 通过视频帧发送 SEI 数据。
在视频通话场景下,SEI 数据会随视频帧发送;在语音通话场景下,SDK 会自动生成一路 16px × 16px 的黑帧视频流用来发送 SEI 数据。
@param message SEI 消息,建议每帧 SEI 数据总长度不超过 4 KB。超过长度限制的消息会被丢弃。
@param repeatCount 消息发送重复次数。取值范围是 0, max{29, \%{视频帧率}-1}。推荐范围 2,4。
调用此接口后,这些 SEI 数据会添加到从当前视频帧开始的连续 \%{repeatCount}+1 个视频帧中。
@param mode SEI 发送模式,参看 SEICountPerFrame{@link #SEICountPerFrame}。
@return
- >= 0: 将被添加到视频帧中的 SEI 的数量。
- < 0: 发送失败。查看 ReturnStatus{@link #ReturnStatus} 获得更多错误说明。
@note
- 每秒发送的 SEI 消息数量建议不超过当前的视频帧率。在语音通话场景下,黑帧帧率为 15 fps。
- 语音通话场景中,仅支持在内部采集模式下调用该接口发送 SEI 数据。
- 视频通话场景中,使用自定义采集并通过 pushExternalVideoFrame{@link #RTCEngine#pushExternalVideoFrame} 推送至 SDK 的视频帧,若本身未携带 SEI 数据,也可通过本接口发送 SEI 数据;若原视频帧中已添加了 SEI 数据,则调用此方法不生效。
- 视频帧仅携带前后 2s 内收到的 SEI 数据;语音通话场景下,若调用此接口后 1min 内未有 SEI 数据发送,则 SDK 会自动取消发布视频黑帧。
- 消息发送成功后,远端会收到 onSEIMessageReceived{@link #IRTCEngineEventHandler#onSEIMessageReceived} 回调。
- 语音通话切换至视频通话时,会停止使用黑帧发送 SEI 数据,自动转为用采集到的正常视频帧发送 SEI 数据。
Implementation
Future<int?> sendSEIMessage(
ArrayBuffer message, int repeatCount, SEICountPerFrame mode) async {
$a() => ($instance as $p_a.RTCEngine).sendSEIMessage(
message, repeatCount, t_SEICountPerFrame.code_to_android(mode));
$i() => ($instance as $p_i.ByteRTCEngine).sendSEIMessage(
message, repeatCount, t_SEICountPerFrame.code_to_ios(mode));
if (Platform.isAndroid) {
return $a();
} else if (Platform.isIOS) {
return $i();
} else {
throw UnsupportedError(
'Not Support Platform ${Platform.operatingSystem}');
}
}