我正在开发一个视频聊天应用程序,我正在构建一个功能,在这个功能中,开始通话的人可以将通话切换到音频通话。现在接收器得到一个调用的链接,当他们加入调用时,应用程序获得他们的相机和麦克风并将其连接到netstream。我想要的是,如果发起者,如果调用在开始调用时关闭他的摄像头,当接收者加入调用时,应用程序不应该得到摄像头,因为它们没有视频连接到netstream。现在我已经使用了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是否有一个视频附加到它?
我让它工作了。我用的是netstreaminfo。Videobytecount属性使其工作。在接收端加载了传入流之后,我检查视频字节。如果字节数等于零,那么接收器的摄像头将不会打开。