Skip to content

使用 SEI 通道发送自定义消息给房间内所有用户

说明

该接口可以让您借助 TRTC 的 SEI 通道,向当前房间里的其他用户广播自定义数据,已达到传输信令的目的。
视频帧的头部有一个叫做 SEI 的头部数据块,该接口的原理就是利用这个被称为 SEI 的头部数据块,将您要发送的自定义信令嵌入其中,使其同视频帧一并发送出去。
因此,与 sendCustomCmdMsg 相比,SEI 通道传输的信令具有更好的兼容性:信令可以伴随着视频帧一直传输到直播 CDN 上。
不过,由于视频帧头部的数据块不能太大,建议您使用该接口时,尽量将信令控制在几个字节的大小。
最常见的用法是把自定义的时间戳(timestamp)用本接口嵌入视频帧中,实现消息和画面的完美对齐(例如:教育场景下的课件和视频信号的对齐)。
房间中的其他用户可以通过 addListener 中的 onRecvSEIMsg 回调接收消息。

方法名

sendCustomCmdMsg

用法

  • 用法如下:
js
module.sendCustomCmdMsg({
  params:{
  },
  //成功执行的函数
  success: (res) => {
    let data = res.data;
    console.log(data)
  },
  //失败执行的函数
  fail: (res) => {
    console.log(res)
  },
  //接口调用完成返回函数,不管成功还是失败都会返回
  complete: (res) => {
    // console.log(res)
  }
})
js
module.sendCustomCmdMsg({
  params:{
  },
  //成功执行的函数
  success: (res) => {
    const data = res.data;
    console.log(data)
  },
  //失败执行的函数
  fail: (res) => {
    console.log(res)
  },
  //接口调用完成返回函数,不管成功还是失败都会返回
  // complete: (res) => {
  //   console.log(res)
  // }
} as LevenOptions)
  • 参数说明

    参数名参数类型是否必填默认值参数描述
    paramsObject参数配置
    params.repeatCountInteger发送数据次数
    params.dataString待发送的数据,最大支持 1KB(1000字节)的数据大小
    successFunction执行成功的函数
    failFunction执行失败的函数
    completeFunction执行完成的函数,不管成功还是失败都会执行

    注意

    本接口有以下限制:

    1. 数据在接口调用完后不会被即时发送出去,而是从下一帧视频帧开始与视频帧一起发送。
    2. 发送消息到房间内所有用户,每秒最多能发送 40 条消息(与 sendCustomCmdMsg 共享限制)。
    3. 每个包最大为 1KB,若发送大量数据,会导致视频码率增大,可能导致视频画质下降甚至卡顿(与 sendCustomCmdMsg 共享限制)。
    4. 每个客户端每秒最多能发送总计 16KB 数据(与 sendCustomCmdMsg 共享限制)。
    5. 若指定多次发送(repeatCount > 1),则数据会被带在后续的连续 repeatCount 个视频帧中发送出去,同样会导致视频码率增大。接收消息 onRecvSEIMsg 回调也可能会收到多次相同的消息,需要去重。

回调

  • 示例
json
{
"data": {
  "result": true
},
"message": "",
"code": 0
}
  • 回调说明:
    参数名参数类型参数描述
    messageString消息提示
    dataObject数据对象
    data.resultBooleantrue:消息已通过限制,等待后续视频帧发送;false:消息被限制发送
    codeInteger返回类型,0.成功,其他:失败