【问题标题】:How can I screen share and camera video same time in different tracks?如何在不同的轨道上同时进行屏幕共享和摄像头视频?
【发布时间】:2023-02-07 09:22:05
【问题描述】:

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

当我尝试共享屏幕时,如果不取消发布相机轨道我就无法发布它,就像 4.x sdk 版本的文档说的那样:https://docs.agora.io/en/video-calling/develop/product-workflow?platform=web

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


    【解决方案1】:

    AgoraRTCClient 对象可以发布只有一个视频轨道.

    创建新的AgoraRTCClient 以发布另一首曲目。

    参见Agora Docs

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-03
      • 2021-09-20
      • 2019-05-12
      • 1970-01-01
      • 2020-07-09
      • 2011-12-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多