sendSEIMsg method Null safety

Future<bool?> sendSEIMsg(
  1. String data,
  2. int repeatCount
)

将小数据量的自定义数据嵌入视频帧中

与 sendCustomCmdMsg 的原理不同,sendSEIMsg 是将数据直接塞入视频数据头中。因此,即使视频帧被旁路到了直播 CDN 上, 这些数据也会一直存在。由于需要把数据嵌入视频帧中,建议尽量控制数据大小,推荐使用几个字节大小的数据。

最常见的用法是把自定义的时间戳(timstamp)用 sendSEIMsg 嵌入视频帧中,这种方案的最大好处就是可以实现消息和画面的完美对齐。

参数:

data 待发送的数据,最大支持1kb(1000字节)的数据大小。

repeatCount 发送数据次数

返回:

true:消息已通过限制,等待后续视频帧发送;false:消息被限制发送

本接口有以下限制:

数据在接口调用完后不会被即时发送出去,而是从下一帧视频帧开始带在视频帧中发送。

发送消息到房间内所有用户,每秒最多能发送30条消息(与 sendCustomCmdMsg 共享限制)。

每个包最大为1KB,若发送大量数据,会导致视频码率增大,可能导致视频画质下降甚至卡顿(与 sendCustomCmdMsg 共享限制)。

每个客户端每秒最多能发送总计8KB数据(与 sendCustomCmdMsg 共享限制)。

若指定多次发送(repeatCount > 1),则数据会被带在后续的连续 repeatCount 个视频帧中发送出去,同样会导致视频码率增大。

如果 repeatCount > 1,多次发送,接收消息 onRecvSEIMsg 回调也可能会收到多次相同的消息,需要去重。

Implementation

Future<bool?> sendSEIMsg(String data, int repeatCount) {
  return _channel
      .invokeMethod('sendSEIMsg', {"data": data, "repeatCount": repeatCount});
}