我有两种类型的用户:顾问和访客。
顾问可以在房间内进行视频通话时共享他们的屏幕。当客人去共享他们的屏幕时,我想通知顾问客户点击了共享屏幕按钮,允许顾问接受/拒绝客人共享他们的屏幕的请求。
在发布屏幕共享轨道之前没有触发事件供我收听并提示顾问接受/拒绝客人在实时视频通话中共享他们的屏幕。
这是启动屏幕共享的代码:
export const startScreenShare = async (room: Room): Promise<boolean> => {
if (isParticipantSharingScreen(room.localParticipant)) {
disableParticipantsScreenSharingTrack(room.localParticipant);
return false;
}
// Only allow one participant to share their screen at a time.
room.participants.forEach((participant) => {
if (isParticipantSharingScreen(participant)) {
throw new Error("Only one participant may share their screen at a time.");
}
});
const stream = await navigator.mediaDevices.getDisplayMedia({
video: {
width: 1280,
height: 720,
frameRate: 10,
},
});
const screenTrack = new LocalVideoTrack(stream.getTracks()[0], {
name: SCREEN_SHARE_TRACK_NAME,
logLevel: "warn",
});
const track = room.localParticipant.publishTrack(screenTrack);
screenTrack.once("stopped", () => {
room.localParticipant.unpublishTrack(screenTrack);
stopScreenSharing();
});
return true;
};
我已经研究过使用 LocalDataTrack 在参与者之间进行对话以隐藏/显示屏幕共享按钮。我还研究了设置订阅规则,因此我可以排除视频聊天中其他人订阅的屏幕轨迹类型。任何帮助表示赞赏。