语音通话期间Agora从音频通话切换为视频通话

时间:2020-09-29 12:18:41

标签: laravel vuejs2 agora.io

我已经实现了Agora Web SDK进行调用,并且可以在Laravel和Vue.js中很好地工作。

我想知道在进行音频通话时是否可以从音频通话切换到视频通话。

如果我用video = false创建createStream,那么它只是音频通话,但我无法将其更改为使用rtc.localStream.unmuteVideo()切换到视频通话,因为它需要video = true才能正常工作

如果我用video = true创建createStream,那么我将使用rtc.localStream.muteVideo()关闭相机。因此它可以关闭相机,用户可以在需要时将其打开。但是相机灯仍然亮着。

// create local stream
                this.rtc.localStream = AgoraRTC.createStream({
                    streamID: this.rtc.params.uid,
                    audio: true,
                    video: true,
                    screen: false,
                    microphoneId: this.option.microphoneId,
                    cameraId: this.option.cameraId
                });

这意味着它仍然是视频通话,但视频轨道只是一个空白屏幕。

我正在寻找一种方法,可以不中断地删除唯一的音频通话流并添加音频视频通话流。

我看过Agora文档,但找不到任何东西。

我认为一旦创建了流,就无法将视频更改为真或假。

更新:

阅读爱马仕的答案后。我做了一些RnD,发现了一些有用的事件。

技巧与答案中提到的相同。

要从屏幕<=>音频<=>视频<=>屏幕更改呼叫。

  1. 使用以下方式取消发布本地流
  2. 创建新流以添加/删除视频或屏幕共享
  3. 等待旧的本地流取消发布,并初始化新的流并发布。

以上3个步骤将触发AGORA事件

  1. client.unpublish触发已删除流事件
  2. 发布触发器添加流事件。在此事件侦听器中,订阅新的流。当您订阅新视频流时,会触发视频流订阅事件。

基于这些事件,您也可以更新ui和(本地,远程)流。

1 个答案:

答案 0 :(得分:1)

处理此问题的最佳方法是使用两个Agora <div class="LoginPage"> <div class="outerContainer"> <form name="form"> <div class="emailLabelInput"> <input type="text" class="login-form-control" name="email" placeholder="Email address"/> </div> <div class="passwordLabelInput"> <input type="password" class="login-form-control" name="password" placeholder="Password"/> </div> <div class="form-group"> <button class="submit-btn">Log In</button> </div> </form> </div> </div>对象。

首先仅创建音频products['word_count'] = products['review'].apply(lambda x : nltk.FreqDist) ,然后使用stream发布。然后,当您想更改为视频通话时,\然后在音频stream上调用client.publish,并创建另一个启用了视频选项的client.unpublish,并在通话stream时使用视频stream

只有一个时间中断,因为一个流未发布,然后新的流被发布到频道。