如何在不同轨道上同时进行屏幕共享和摄像视频?

问题描述 投票:0回答:2

我正在为一个已经使用 webRTC 的 Web 应用程序测试 Agora 功能。目前,它使用一个单独的音频轨道和两个视频轨道:一个用于相机,另一个用于屏幕共享。

当我尝试共享屏幕时,如果不取消发布相机轨道,我就无法发布它,就像 4.x sdk 版本的文档所说:https://docs.agora.io/en/video-calling/develop/产品工作流程?平台=网络

Agora.io screen share sequence diagram

我该如何解决这个问题?对我来说,这似乎是视频聊天的一个典型案例,其中一个用户共享他的屏幕并不断显示他的音频和视频来展示一些内容。

我的代码:

  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);

  }

它正在工作,但丢失了摄像机轨迹。

javascript video-streaming agora.io videochat screensharing
2个回答
0
投票

一个

AgoraRTCClient
对象只能发布一个视频轨道

创建新的

AgoraRTCClient
以发布另一首曲目。

请参阅Agora Docs的“同时启用屏幕共享和视频”部分。


0
投票

这里同样的问题,如果您找到解决方案,那就很有帮助

© www.soinside.com 2019 - 2024. All rights reserved.