发布/取消发布本地的 Track
如果您已经通过采集拿到本地的 Track
对象并且加入房间了。就可以通过发布操作将这些 Track
发布到房间之中供房间里的其他人订阅。
示例代码中的
myRoom
是指实例化并且已经加入房间后的房间 Session 对象,参见 加入房间
发布本地的 Track
调用如下代码发布自己的 Track
// 这里的 tracks 是一个包含 Track 对象的列表
await myRoom.publish(tracks);
console.log("publish sucess!");
当一个 Track
对象经过发布操作后,有 2 个值的变化需要注意。
track.userId
将会被标记为加入这个房间的用户的userId
track.info.trackId
因为 Track 已经被发布到房间中了,所以它会被分配一个这个房间内相对所有其他 Track 唯一的一个 trackId
trackId
是房间内所有 Track
的唯一标识,一些需要指定 Track
的操作都会要求提供 trackId
参数。
设置发布 Track 的 mute 状态
这里的 mute
是指在保留数据传输通道的前提下暂时不再发送数据。对于音频 Track,就是我们常说的 静音
,对于视频 Track, 就是暂时的 黑屏
。
myRoom.muteTracks([
{ trackId: "xxx", muted: true },
{ trackId: "xxxx", muted: false },
]);
注意,
muteTracks
仅对自己发布的 Track 有效。
取消发布音视频轨
当您成功发布了一些 Track
后,就可以指定其中的一些 Track
来取消发布。这里例子演示了将自己所有发布的音视频轨取消发布,您可以根据自己的需求修改代码。
// 先发布 tracks
await myRoom.publish(tracks);
console.log("publish sucess!");
// 将所有 tracks 的 trackId 取出当作参数,取消发布
await myRoom.unpublish(tracks.map(track => track.info.trackId));
取消发布不会销毁本地 Track, 如果想销毁本地采集的 Track,参见 销毁本地Track