我已经实现了用于调用的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,发现了一些有用的事件。
技巧和答案中提到的一样。
要更改来自屏幕的呼叫<>音频<>视频<>屏幕
- 使用取消发布本地流
- 创建新的流以添加/删除视频或屏幕共享
- 等待旧的本地流未发布,初始化新流并发布它
以上3个步骤将触发AGORA事件
- client.unpublish触发器删除流事件
- publish触发器流添加事件。在此事件侦听器中,订阅新流。当您订阅新流时,会触发流订阅事件
基于这些事件,您还可以更新ui和(本地、远程(流。
处理此问题的最佳方法是使用两个Agorastream
对象。
首先创建仅限音频的stream
,然后使用client.publish
发布它。然后,当您想更改为视频通话时,\然后在音频stream
上调用client.unpublish
,并在启用视频选项的情况下创建第二个stream
,然后在视频stream
中调用client.publish
。
当一个流未发布,然后新的流发布到频道时,只会出现短暂的中断。