赞
踩
房间很好理解,类似一个腾讯会议中的 一个会议
用户指的是 加入房间的所有人。
每个用户的权限是相同的
await room.connect(wsUrl, token); // 在开发时 wsUrl 为 ws://127.0.0.1:7880
await room.connect(wsUrl, token); // 在开发时 wsUrl 为 ws://127.0.0.1:7880
将本地参与者的摄像头和/或麦克风流发布到房间
// 打开摄像头
room.localParticipant.setCameraEnabled(true)
//打开麦克风
room.localParticipant.setMicrophoneEnabled(true)
可以通过以下方法来将自己的麦克风静音
room.localParticipant.setCameraEnabled(false) //关闭摄像头
room.localParticipant.setMicrophoneEnabled(false) //关闭麦克风
禁用摄像头或麦克风将关闭各自的录音,房间内的其他用户将收到一个TrackMuted事件。
LiveKit还支持跨所有平台的本机屏幕共享。
// 需要浏览器支持
await currentRoom.localParticipant.setScreenShareEnabled(true);
LiveKit使用两个结构来建模轨道:TrackPublication和Track。将TrackPublication视为向服务器注册的轨道的元数据,将Track视为原始媒体流。
订阅的回调将在Room和RemoteParticipant对象回调
import {
connect,
RoomEvent,
} from 'livekit-client';
room
.on(RoomEvent.TrackSubscribed, handleTrackSubscribed)
function handleTrackSubscribed(
track: RemoteTrack,
publication: RemoteTrackPublication,
participant: RemoteParticipant
) {
}
订阅了音频就可以播放了
function handleTrackSubscribed(
track: RemoteTrack,
publication: RemoteTrackPublication,
participant: RemoteParticipant
) {
// attach track to a new HTMLVideoElement or HTMLAudioElement
const element = track.attach();
parentElement.appendChild(element);
// or attach to existing element
// track.attach(element)
}
当音轨发布时,LiveKit将检测正在说话的参与者。扬声器更新将为本地和远程参与者发送。
room.on(RoomEvent.ActiveSpeakersChanged, (speakers: Participant[]) => {
// 包含所有当前活动的扬声器
})
participant.on(ParticipantEvent.IsSpeakingChanged, (speaking: boolean) => {
console.log(`${participant.identity} is ${speaking ? "now" : "no longer"} speaking. audio level: ${participant.audioLevel}`)
})
./liveKit-server.exe --dev
注: 在本地开发环境下只能使用服务默认的key 和 secret 如下
var appKey = "devkey"
var appSecret = "secret"
:::info
启动成功后如上图所示
:::
2.1 web服务器用来生成 liveKit可以识别进入房间的token
待完善
room.on(RoomEvent.TrackSubscribed, 回调函数);
事件 | 描述 | 房间事件 | 用户事件 |
---|---|---|---|
ParticipantConnected | 远程参与者在本地参与者之后加入 | x | |
ParticipantDisconnected | 远程参与者离开 | x | |
Reconnecting | 它正在尝试重新连接 | x | |
Reconnected | 重新连接已成功 | x | |
Disconnected | 由于房间关闭、故障 而 断开连接、链接失败 | x | |
TrackPublished | 本地参与者加入后,新曲目将发布到房间 | x | x |
TrackUnpublished | 远程参与者已取消发布曲目 | x | x |
TrackSubscribed | 本地参与者已订阅曲目 | x | x |
TrackUnsubscribed | 先前订阅的曲目已取消订阅 | x | x |
TrackMuted | 一个曲目被静音,本地曲目和远程曲目都会触发 | x | x |
TrackUnmuted | 轨道未静音,本地轨道和远程轨道都有声音 | x | x |
LocalTrackPublished | 本地轨道已成功发布 | x | x |
LocalTrackUnpublished | 本地轨道未发布 | x | x |
ActiveSpeakersChanged | 当前活动的扬声器已更改 | x | |
IsSpeakingChanged | 当前参与者已更改发言状态 | x | |
ConnectionQualityChanged | 参与者的连接质量已更改 | x | x |
ParticipantMetadataChanged | 参与者的元数据已通过服务器API更新 | x | x |
RoomMetadataChanged | 与房间关联的元数据已更改 | x | |
DataReceived | 从另一个参与者或服务器接收的数据 | x | x |
TrackStreamStateChanged | 指示订阅的轨道是否因带宽而暂停 | x | x |
TrackSubscriptionPermissionChanged | 订阅的轨道之一已更改当前参与者的轨道级别权限 | x | x |
ParticipantPermissionsChanged | 当前参与者的权限已更改 | x | x |
此表捕获了跨平台SDK可用的一组一致事件。除了此处列出的内容之外,某些平台上可能还有特定于平台的事件。
./live-server --config ./config.yaml
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。