0

我正在开发一个视频聊天应用程序,我正在构建一个功能,开始呼叫的人可以将呼叫切换为音频呼叫。现在接收者获得了呼叫的链接,当他们加入呼叫时,应用程序会获得他们的摄像头和麦克风并将其附加到网络流。我想要的是,如果发起者在加入通话的接收者开始通话时关闭他的摄像头,应用程序不应该获取摄像头,因为它们没有附加到网络流的视频。现在我使用了 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 是否附加了视频?

4

1 回答 1

0

我让它工作。我使用 netstreaminfo.videobytecount 属性让它工作。在接收器端加载传入流后,我检查传入的视频字节。如果字节等于 0,那么接收器的摄像头将不会打开。

于 2013-05-20T02:00:16.043 回答