Appearance
使用 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)参数说明
参数名 参数类型 是否必填 默认值 参数描述 params Object 是 无 参数配置 params.repeatCount Integer 否 无 发送数据次数 params.data String 否 无 待发送的数据,最大支持 1KB(1000字节)的数据大小 success Function 否 无 执行成功的函数 fail Function 否 无 执行失败的函数 complete Function 否 无 执行完成的函数,不管成功还是失败都会执行 注意
本接口有以下限制:
- 数据在接口调用完后不会被即时发送出去,而是从下一帧视频帧开始与视频帧一起发送。
- 发送消息到房间内所有用户,每秒最多能发送 40 条消息(与 sendCustomCmdMsg 共享限制)。
- 每个包最大为 1KB,若发送大量数据,会导致视频码率增大,可能导致视频画质下降甚至卡顿(与 sendCustomCmdMsg 共享限制)。
- 每个客户端每秒最多能发送总计 16KB 数据(与 sendCustomCmdMsg 共享限制)。
- 若指定多次发送(repeatCount > 1),则数据会被带在后续的连续 repeatCount 个视频帧中发送出去,同样会导致视频码率增大。接收消息
onRecvSEIMsg回调也可能会收到多次相同的消息,需要去重。
回调
- 示例
json
{
"data": {
"result": true
},
"message": "",
"code": 0
}- 回调说明:
参数名 参数类型 参数描述 message String 消息提示 data Object 数据对象 data.result Boolean true:消息已通过限制,等待后续视频帧发送;false:消息被限制发送 code Integer 返回类型,0.成功,其他:失败
