agora中的屏幕共享和视频广播切换错误
Posted
技术标签:
【中文标题】agora中的屏幕共享和视频广播切换错误【英文标题】:Screen sharing and video broadcasting switching error in agora 【发布时间】:2020-05-05 20:39:08 【问题描述】:所以,我一直在做一个使用 agora 的 web sdk 的项目。我基本上想在屏幕共享和视频广播之间无缝切换,两种情况下都共享音频。
这是我编写的代码:
const localPlay =
screen:
playing: false,
initialised: false
,
video:
playing: false,
initialised: false
;
// Initialise two clients and two streams, with the following stream specs
const screenStreamSpec =
streamID: uid,
audio: false,
video: false,
screen: true,
;
const videoStreamSpec =
streamID: uid,
audio: true,
video: true,
screen: false,
;
// ...
document.getElementById("Screen-share").addEventListener("click", function()
if(!localPlay.screen.initialised)
return
else
if(!localPlay.screen.playing && !localPlay.video.playing)
screenStream.play("Screen");
rtc.client.screenClient.publish(screenStream);
localPlay.screen.playing = true;
return;
if(localPlay.screen.playing)
return;
videoStream.stop();
localPlay.screen.playing = false;
screenStream.play("Screen");
localPlay.video.playing = true;
let newTrack = videoStream.getVideoTrack();
screenStream.replaceTrack(newTrack);
);
document.getElementById("Video-share").addEventListener("click", function()
if(!localPlay.video.initialised)
return
else
if(!localPlay.video.playing && !localPlay.screen.playing)
videoStream.play("Screen");
rtc.client.videoClient.publish(videoStream);
localPlay.video.playing = true;
return;
if(localPlay.video.playing)
return;
screenStream.stop();
localPlay.video.playing = false;
videoStream.play("Screen");
localPlay.screen.playing = true;
let newTrack = screenStream.getVideoTrack();
videoStream.replaceTrack(newTrack);
);
代码按照this(方案3)。
错误是我第一次尝试做任何一个时,它们都起作用了。但是,假设我从屏幕共享开始,然后切换到视频广播,则摄像头会关闭,屏幕共享会关闭,并且我正在共享的屏幕会旋转并显示在 Screen
div 中。如果我尝试再切换一次,则 div 会完全变黑。
我哪里做错了?
【问题讨论】:
【参考方案1】:你真的不应该使用替换轨道,因为它不是所有浏览器都支持的,而且是一个相对较新的功能。
为了获得更稳定的解决方案,我建议使用 2 个客户端,一个用于摄像头,另一个用于屏幕共享。我这里有一个例子:https://github.com/digitallysavvy/group-video-chat
如果您想在两者之间快速切换,可以使用 muteVideo 事件在流之间切换。
【讨论】:
嗨@Hermes,您能否指导我如何将扬声器的数量扩展到 agora 在群组视频通话中支持的范围之外?以上是关于agora中的屏幕共享和视频广播切换错误的主要内容,如果未能解决你的问题,请参考以下文章
我如何在 React-Native 中使用 agora 视频通话共享手机屏幕