2013-05-19 161 views
0

我正在開發一個視頻聊天應用程序,並且我正在構建一項功能,在該功能中,啓動呼叫的人可以將呼叫轉換爲音頻呼叫。現在,接收器爲呼叫獲取鏈接,當他們加入呼叫時,應用程序獲取其攝像頭和麥克風並將其附加到網絡流。我想要的是,如果發起者如果在加入呼叫的接收者開始呼叫時呼叫將其相機關閉,則應用程序不應該獲取相機,因爲他們沒有視頻附加到網絡流。 現在我已經使用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中發送消息,如果用戶發起視頻呼叫,如果用戶發起了音頻呼叫,則爲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是否有一個視頻連接到它?

回答

0

我得到它的工作。我使用netstreaminfo.videobytecount屬性來使它工作。在接收端加載傳入流後,我檢查進入的視頻內容。如果字節等於零,那麼接收器的相機將不會開啓。