我正在开发一个视频聊天应用程序,我正在构建一个功能,开始呼叫的人可以将呼叫切换为音频呼叫。现在接收者获得了呼叫的链接,当他们加入呼叫时,应用程序会获得他们的摄像头和麦克风并将其附加到网络流。我想要的是,如果发起者在加入通话的接收者开始通话时关闭他的摄像头,应用程序不应该获取摄像头,因为它们没有附加到网络流的视频。现在我使用了 netstream.info.Videobytespersecond 但是由于当接收者加入通话时对方的视频和音频不会立即开始(有 3-4 秒的延迟),所以函数在通话开始时会一直返回 0 是否网络流是否附有视频。
这就是我所做的
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 中发送消息,如果用户发起视频呼叫,则基本上将标记为 true,如果用户发起了视频呼叫,则标记为 false发起了语音通话。然后,当接收器加入时,如果标志为假,他们的相机将不会启动,但如果标志为真,相机将被启动。
当我实施它时,它不起作用。我不知道我在实施时是否做错了什么。
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 是否附加了视频?