用FLASH COM+asp.net技術實現線上視訊交談

來源:互聯網
上載者:User
用FLASH COM+asp.net技術實現線上視訊交談

網路視訊交談 交流目前很是熱門

但用WEB視頻就不是那麼簡單了

以前有兩種方式可以實現 一個是用客服ACTIVE控制項 二是用JAVA APP但兩種都不很理想
一個是網路訊號採集不能自適應頻寬,二是技術上的難題 現在流行的BCHAT(碧聊用的)就是採用第一種方式,但我還是不能把控制項給分離出來,網上了也沒有 免費 或者商業的現成控制項賣  第二個方式我就不說了,因為WIN XP以上不支援JAVA所以免談

但是現Macromedia推出的新技術Flash Communication Server MX確很方便實現了,關於這個方面的介紹大家可以去網上找
下載測試版後有幾個現成的例子,在這說說怎麼利用ASPX和FLASH通訊實現兩個ID的交流


這裡發一下成品的圖片
這是我是asp.net+SQL寫的仿QQ的線上通訊系統

功能還不錯 QQ的功能在這都有了

最讓我得意是終於實現了視頻的功能

FLASH的視頻功能是b-s-b模式 也就是在服務段會有個零時視頻檔案
具體代碼就打包讓下載好了

這個寫點重點
SP.aspX

<%@Language="C#"%>
<script runat="server">

private void Page_Load(object sender, System.EventArgs e)
            {
               Response.Write("conn=1&Sendid="+Session["nmd"]+"&Recvid="+Session["Recvid"]);
            }
</script>

Cam.aspx

<%@ Page Language="C#" %>
<script runat="server">

    private void Page_Load(object sender, System.EventArgs e)
                {
                  Session["RecvId"]=Request.QueryString["RecvId"];
                }
</script>
<html>
<head>
<meta http-equiv="Content-Language" content="zh-cn">
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>無標題文檔</title>
</head>

<body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0" width="220" height="200">
  <param name="movie" value="SP.swf">
  <param name="quality" value="high">
  <embed src="SP.swf" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="220" height="200"></embed></object>

</body>
</html>

SP.swf的角本
stop();
client_nc = new NetConnection();
//NetConnection.onStatus(para)用來監測server返回的資訊
//當server返回的資訊時,此處理器被觸發
//參數是一個包含著返回資訊的對象,包含著兩個固定變數level和code,該參數名稱可隨便命名
client_nc.onStatus = function(info) {
 // 利用trace功能將server返回的資訊可視化
 trace("Level: "+info.level+newline+"Code: "+info.code);
};
// 串連到server上,建立rtmp串連
//下面寫的是相對位址,原因是我的web server和flash communication server在一台機器上
//如果你的web server和flash communication server不在一台機器上,只要滿足兩台機器的ip在一個域
//你就可以同樣成功建立串連,可以寫成client_nc.connect("rtmp:/192.168.0.1/record_video");
//record_video是檔案夾的名字,該檔案夾必須事先存在
//假設你是按照預設安裝的communication server,那麼record_video檔案夾就應該放在
//C:/Program Files/Macromedia/Flash Communication Server MX/flashcom/applications目錄下面
client_nc.connect("rtmp://192.168.0.2/record_video");
// 使用SharedObject.getRemote方法,建立遠程SharedObject
//"myvideo"是SharedObject檔案名稱,對應在server硬碟上的檔案是myvideo.fso
// client_nc.uri是一個必要的參數,指向當前rtmp的串連
// 第三個是選擇性參數,true代表將myvideo.fso寫入硬碟,false、null或者省略代表不寫入,只作臨時存在
rec_so = SharedObject.getRemote("myvideo", client_nc.uri, true);
//sharedobject.onSync(para)用來動態監測sharedobject的變化情況
//每當sharedobject發生變化時,此處理器被觸發
//參數是一個數組,記錄sharedobject.data中發生變化的內容,該參數名稱可隨便命名
//該數組的每個成員都是一個對象,對象又有兩個成員code和name
//name代表的是發生變化的sharedobject.data裡面的發生變化的內容
//code代表的是這個內容發生了什麼變化,是系統返回資訊
// 將sharedobject功能串連到server上
rec_so.connect(client_nc);
var Recvid;
var Sendid;
GetId();
function Recv() {
  
  //建立新的NetStream流對象,將會用來播放留言資訊
  in_ns = new NetStream(client_nc);
  //通過NetStream.play方法播放server上的flv檔案
  in_ns.play(Recvid);
  mybox.attachVideo(in_ns);
}

function Send() {
  this.cam = Camera.get();
     this.mic = Microphone.get();
  // 在client_nc串連上,建立NetStream對象
  out_ns = new NetStream(client_nc);
  // 通過NetStream.attachVideo方法獲得網路攝影機的映像
  out_ns.attachVideo(this.cam);
  // 通過NetStream.attachAudio方法獲得麥克風的聲音
  out_ns.attachAudio(this.mic);
  out_ns.publish(Sendid, "live");
}

function GetId(){
 //構造一個新的LoadVars對象
myload = new LoadVars();
//設定myload的動作,以便伺服器驗證
myload.action = "post";
//驗證和伺服器串連的函數
myload.onLoad = function(success) {
//如果和伺服器成功串連則…
if (success) {
//如果驗證動作成功則…
  if (this.conn == "1") {
         //將返回對象中的output變數賦值給情境中var為output的Dynamic Text框
   _root.Recvid = this.Recvid;
   _root.Sendid = this.Sendid;
   Send();
   Recv();
  }
} else {
        //如果和伺服器串連不成功則返回失敗訊息,需要檢查路徑是否正確
 
}
};
myload.sendAndLoad("http://localhost/WEBQQ/SP.aspx", myload, "post");
}

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.