我正在开发一个视频聊天应用程序,我正在构建一个功能,即启动呼叫的人可以将呼叫切换为音频呼叫。现在接收器获得呼叫的链接,当他们加入呼叫时,应用程序获取他们的摄像头和麦克风并将其附加到网络流。我想要的是如果发起人如果在加入呼叫的接收者开始呼叫时呼叫关闭了他的摄像头,则应用程序不应该获得摄像头,因为他们没有连接到网络流的视频。 现在我使用了netstream.info.Videobytespersecond,但由于当接收器加入呼叫时,相反的视频和音频没有立即启动(有3-4秒的延迟),该函数在呼叫开始时保持返回0或不是netstream上附有视频。
这就是我做的事情
public function checkVideo():Number {
hey=_incomingStream.info.videoByteCount;
return hey;
}
if(_outgoingStream && _incomingStream!=null ){
if(checkVideo()>0)
_outgoingStream.attachCamera(camera);
else
_outgoingStream.attachCamera(null);
它不起作用。
接下来我读到了netstream.send()函数,所以我的想法是,当用户发起呼叫时,他/她将在netstream中发送消息,如果用户发起视频呼叫或假,它将基本上标记为真如果用户发起了音频通话。然后当接收器加入时,如果标志为假,他们的相机将不会启动,但如果标志为真,则相机将被启动。
当我实施它时,它不起作用。我不知道在实施过程中是否存在我做错的事情。
if(camera && !muteCam )
{//Initate call
camera = setCameraQuality(camera);
yourVidHolder.attachCamera(camera);
if(_outgoingStream && _incomingStream==null){
_outgoingStream.attachCamera(camera);
_outgoingStream.send("flagVideo", true);
----------------------------------------------------------------------------------
public function flagV():Boolean
{
_incomingStream.client.flagVideo=function(flag:Boolean):void{
check=flag;
}
return check;
}
if(_outgoingStream && _incomingStream!=null ){
if(checkVideo()>0)
_outgoingStream.attachCamera(camera);
else
_outgoingStream.attachCamera(null);
}
但我无法让它发挥作用。有人可以帮帮我吗? 也许有更好的方法可以检查netstream是否附加了视频?
答案 0 :(得分:0)
我得到了它的工作。我使用netstreaminfo.videobytecount属性来使其工作。我检查在接收端加载传入流后进来的视频帧。如果字节等于零,则接收器的相机将不会打开。