Agora在语音通话中从音频切换到视频通话



我已经实现了用于调用的Agora Web SDK,它在Laravel和Vue.js.中工作得很好

我想知道在进行音频通话时,是否有任何方法可以从音频通话切换到视频通话。

如果我在video=false的情况下创建Stream,那么它只是音频呼叫,但我不能使用rtc.localStream.unmuteVideo()将其更改为切换到视频呼叫,因为它需要video=true才能使其工作

如果我创建视频为true的流,那么我使用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. publish触发器流添加事件。在此事件侦听器中,订阅新流。当您订阅新流时,会触发流订阅事件

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

处理此问题的最佳方法是使用两个Agorastream对象。

首先创建仅限音频的stream,然后使用client.publish发布它。然后,当您想更改为视频通话时,\然后在音频stream上调用client.unpublish,并在启用视频选项的情况下创建第二个stream,然后在视频stream中调用client.publish

当一个流未发布,然后新的流发布到频道时,只会出现短暂的中断。

相关内容

  • 没有找到相关文章

最新更新