【发布时间】:2021-01-15 01:22:10
【问题描述】:
我已经实现了用于调用的 Agora Web SDK,它在 Laravel 和 Vue.js 中运行良好。
我想知道在进行音频通话时是否有任何方法可以从音频通话切换到视频通话。
如果我使用 video = false 创建Stream,那么它只是音频通话,但我无法将其更改为使用 rtc.localStream.unmuteVideo() 切换到视频通话,因为它需要 video = true 才能使其工作
如果我使用 video = true 创建Stream,那么我使用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 文档,但找不到任何相关信息。
我认为一旦创建了流,就无法将视频更改为真或假。
更新:
阅读 Hermes 的回答后。我做了一些 RnD,发现了一些有用的事件。
技巧与答案中提到的相同。
从屏幕 音频 视频 屏幕更改通话。
- 使用取消发布本地流
- 创建新流以添加/删除视频或屏幕共享
- 等待旧的本地流被取消发布,然后初始化新的流并发布它。
以上 3 步将触发 AGORA 事件
- client.unpublish 触发 stream-removed 事件
- 发布触发添加流事件。在此事件侦听器中,订阅新流。当您订阅新流时,将触发 stream-subscribed 事件。
根据这些事件,您也可以更新 ui 和(本地、远程)流。
【问题讨论】: