我正在为一个已经使用 webRTC 的 Web 应用程序测试 Agora 功能。目前,它使用一个单独的音频轨道和两个视频轨道:一个用于相机,另一个用于屏幕共享。
当我尝试共享屏幕时,如果不取消发布相机轨道,我就无法发布它,就像 4.x sdk 版本的文档所说:https://docs.agora.io/en/video-calling/develop/产品工作流程?平台=网络
我该如何解决这个问题?对我来说,这似乎是视频聊天的一个典型案例,其中一个用户共享他的屏幕并不断显示他的音频和视频来展示一些内容。
我的代码:
async startScreenShare(id?: string): Promise<void> {
let stream: MediaStream;
if (!id) {
stream = await (navigator.mediaDevices as any).getDisplayMedia({
audio: false,
video: true,
});
} else {
const constraint = {
audio: false,
video: {
mandatory: {
chromeMediaSource: 'screen',
chromeMediaSourceId: id,
},
},
};
stream = await navigator.mediaDevices.getUserMedia(constraint as any);
}
const videoTrack = stream.getTracks()[0];
this.rtc.screenVideoTrack = AgoraRTC.createCustomVideoTrack({
mediaStreamTrack: videoTrack,
});
this.rtc.client.unpublish(this.rtc.localVideoTrack);
await this.rtc.client.publish(this.rtc.screenVideoTrack);
}
它正在工作,但丢失了摄像机轨迹。
这里同样的问题,如果您找到解决方案,那就很有帮助