freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于flash的視頻聊天系統(tǒng)(編輯修改稿)

2024-12-11 18:11 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 服務(wù)器上的一個(gè)方法,然后將 FMS服務(wù)器上的方法返回值輸出到控制臺(tái)。 flash 端的開發(fā)可以有兩種方式實(shí)現(xiàn): Flash 和 Flex。本文會(huì)將這兩種方式的實(shí)現(xiàn)都給出實(shí)例。首先看看 Flash 里的實(shí)現(xiàn)。 啟動(dòng) Flash CS 開發(fā)環(huán)境 ,新建立 ActionScript 的 Flash 文件,如下圖 : 圖 然后在上面新建立的 ActionScript 的 Flash文件上,按 F9 進(jìn)入動(dòng)作面板 (輸入程序代碼的地方 ,當(dāng)然也可以將代碼封裝到單獨(dú)的類文件里 ),如下圖 : 圖 上圖 中已經(jīng)將通過 Flash 開發(fā)連接到 FMS 服務(wù)器的代碼全部貼出,代碼很簡(jiǎn)單。 NetConnection 這個(gè)類在 Flash Player 和 Flash Media Server 應(yīng)用程序之間或者 Flash Player 和運(yùn)行 Flash Remoting 的應(yīng)用程序服務(wù)器之間創(chuàng)建雙向連接。 通過 NetConnection 建立于 FMS 服務(wù)器的連接,然后使用 NetConnection 類的公共方法 connect()通過 RTMP 協(xié)議連接到指定的 FMS 服務(wù)器上指定的應(yīng)用,如上圖示為連接的 FMS 服務(wù)器上名為的 “HelloWorld”的這個(gè)應(yīng)用。如果對(duì)NetConnection 還不熟悉的朋友請(qǐng)先閱讀下我的這系列文章的第一篇: FMS3 系列(一 ): FMS 程序連接到 FMS 服務(wù)器,隨后通過調(diào)用 call()方法調(diào)用 FMS 服務(wù)器上的方法,這里通過調(diào)用服務(wù)器上提供的 sayHelloWorld()方法。 Responder 類提供了一個(gè)對(duì)象,該對(duì)象在 () 中使用以處理來自與特定操作成功或失敗相關(guān)的服務(wù)器的返回值。詳細(xì)見構(gòu)造 Responder 對(duì)象的時(shí)候構(gòu)造方法的參數(shù),一個(gè)方法處理操作成功的邏輯,一個(gè)方法處理操作失敗的邏輯。 OK,完成了上面的 flash 客戶端的開發(fā)現(xiàn)在就只差 FMS 服務(wù)器端的開發(fā)了,F(xiàn)MS 服務(wù)器理需要有一個(gè)通信文件來負(fù)責(zé)于 flash 客戶端的連接交互,通常情況下就是建立一個(gè) 的通信文件。本文中的通信文件的程序代碼非常簡(jiǎn)單,就是接受客戶端的連接,然后提供一個(gè)客戶端調(diào)用的方法。 視頻聊天系統(tǒng)設(shè)計(jì)與實(shí) 現(xiàn) 方法 該系統(tǒng)主要的功能有: 注冊(cè)和驗(yàn)證登錄 ; 修改密碼功能 ; 文本聊天 ; 語(yǔ)音功能 ; 視頻功能 ; 用戶列表顯示 ; 在線人數(shù)顯示 ; 查看聊天記錄; 重新登錄和退出功能 。 系統(tǒng)流程圖為: 圖 系統(tǒng)流程圖 本論文著重點(diǎn)在于說明如何使用 FLASH 技術(shù)實(shí)現(xiàn)視頻聊天。而 FLASH 技術(shù)要實(shí)現(xiàn)視頻聊天的功能就需要使用 FMS 技術(shù)。 通過 FMS 實(shí)現(xiàn)視頻時(shí)時(shí)聊天其實(shí)很簡(jiǎn)單,也就是操作時(shí)時(shí)流。如果是單向視頻聊天,則兩端一邊一邊為發(fā) 布端一邊為訂閱端,如果是雙向視頻聊天,則兩邊都分別是發(fā)布端和訂閱端。 如果從技術(shù)實(shí)現(xiàn)上來分析,單向視頻聊天就是一邊發(fā)布流另一邊播放流,雙向視頻聊天則是兩邊都需要提供兩個(gè)流,一個(gè)負(fù)責(zé)發(fā)布流,一個(gè)負(fù)責(zé)播放流。在注冊(cè) 登陸 文字聊天 語(yǔ)音聊天 視頻聊天 退出 說專業(yè)點(diǎn)就是一個(gè)創(chuàng)建流并且發(fā)送到服務(wù)器的客戶端叫發(fā)布,一個(gè)創(chuàng)建流來接受內(nèi)容的客戶端叫訂閱,當(dāng)同一個(gè)客戶端同是發(fā)布和訂閱時(shí),它必須創(chuàng)建兩個(gè)流,一個(gè)是輸出流,一個(gè)是接受流。 說了這么多下面看看具體是怎么實(shí)現(xiàn)的,要實(shí)現(xiàn)視頻聊天上面分析過,就是一邊發(fā)布時(shí)時(shí)視頻流一邊播放,這同樣離不開連接 FMS,代碼如下: private function onPublishClick(evt:MouseEvent):void { nc = new NetConnection()。 ( (,onNetStatusHandler)。 } 通過點(diǎn)擊按扭連接 (NetConnection)FMS 服務(wù)器,然后向 FMS 發(fā)布 (publish)視頻流,達(dá)到視頻發(fā)布的目的。這里需要注意一點(diǎn),在發(fā)布方法 publish()中后一參數(shù)為 “l(fā)ive”,表示時(shí)時(shí)視頻流。以 live 的形式發(fā)布的流不會(huì)在 FMS 里生成 .fla文件,不同于 “record”錄制視頻流生成 .flv 的視頻文件。 private function onNetStatusHandler(evt:NetStatusEvent):void { trace()。 if(==) { ns=new NetStream(nc)。 (,onNetStatusHandler)。 =new CustomClient()。 (cam)。 (mic)。 (,live)。 } } 也可以實(shí)現(xiàn)在線視頻的錄制與回放。 實(shí)現(xiàn)方法如下: 使用 Flash/Flex+FMS 實(shí)現(xiàn)在線視頻錄制、視頻回放的很簡(jiǎn)單的。通過閱讀API 文檔后基本都可以實(shí)現(xiàn)這個(gè)功能,本文也意在拋磚引玉,希望對(duì)剛?cè)胧诌@塊的朋友有所幫助。 首先建立好 Flash(ActionScript )文件,從組件 (可使用 Ctrl+F7 打開 )庫(kù)中拖 拽相應(yīng)的組件到 Flash 舞臺(tái)上,如下圖 : 圖 界面示例 界面布局好后我們通過程序設(shè)置組見的顯示文本以及為按扭添加事件監(jiān)聽,新建一個(gè) ActionScript 類文件,編寫代碼如下: public function PublishPlay():void { =請(qǐng)輸入視頻文件名 :。 =開始錄制 。 (,onPublishClick)。 =停止錄制 。 (,onStopHandler)。 =視頻回放 。 } 這樣我們就可以實(shí)現(xiàn)視頻的回放功能,對(duì)于本系統(tǒng)來說此功能只有在需要保留視頻記錄時(shí)開啟即可。 視頻模塊 代碼 本段代碼詳細(xì)的說明了系統(tǒng)視頻功能是如何實(shí)現(xiàn)的。 package { //導(dǎo)入所需的類 import .*。 import .*。 import .*。 import .*。 import .*。 import .*。 import 。 import .*。 import 。 import 。 import 。 public class videoChat extends Sprite { //聲明變量 public var IP:String。 public var fmsPath:String。 public var myNC:NetConnection。 public var myNS:NetStream。 private var mySubNS:NetStream。 public var userName:String。 public var mySO:SharedObject。 public var peopleArray:Array。 public var tmpName:String。 public var msg:String。 public var now:Date。 private var myCam:Camera。 private var myMic:Microphone。 //構(gòu)造函數(shù) public function videoChat() { init()。 startConnect()。 } //初始化 public function init() { //設(shè)置所有組件的樣式 var myTF:TextFormat = new TextFormat()。 =12。 (textFormat,myTF)。 IP=。 fmsPath= + IP + /videoChat。 userName=guest + int(() * 10000)。 =userName。 =所有人 。 now=new Date()。 (,selectChatTo)。 (,getVideo)。 } //開始連接 public function startConnect() { myNC=new NetConnection 。 =this。 =。 (,Status)。 (,asyncError)。 (,securityError)。 //開始連接 FMS 服務(wù)器,把 userName 一起傳給服務(wù)器 (fmsPath,userName)。 } public function Status(event:NetStatusEvent):void { switch () { case : +=連接成功 !。 //連接成功后開始創(chuàng)建一個(gè)遠(yuǎn)程共享 對(duì)象 setMySO()。 //單擊發(fā)送按鈕時(shí)發(fā)送聊天內(nèi)容 (,sendMsgByMouse)。 //按下回車鍵時(shí)發(fā)送聊天內(nèi)容 (,sendMsgByKey)。 //對(duì)外發(fā)布自己的視頻 publishStream()。 break。 case : +=連接失敗 !。 break。 case : +=。 break。 } } public function securityError(event:SecurityErrorEvent):void { +=安全性錯(cuò)誤 !。 } //創(chuàng)建一個(gè)遠(yuǎn)程共享對(duì)象 public function setMySO():void { mySO=(mySO,false)。 (,mySoSync)。 (myNC)。 } //偵聽事件 public function asyncError(event:AsyncErrorEvent):void { } //利用遠(yuǎn)程共享對(duì)象創(chuàng)建在線列表 public function mySoSync(e:SyncEvent):void { peopleArray=new Array 。 for (var tmp in ) { (tmp)。 } //添加 DataProvider var tmpDP:DataProvider=new DataProvider。 for (var i=0。 i 。 i++) { tmpName=peopleArray[i]。 ({label:tmpName})。 } (label)。 //在用戶列表頂端加一個(gè) 所有人 ({label:所有人 },0)。 =tmpDP。 } //按發(fā)送按鈕時(shí)發(fā)送聊天內(nèi)容 public function sendMsgByKey(event:KeyboardEvent):void { if (==13) { sendMsg()。 } } //按回車鍵時(shí)發(fā)送聊天內(nèi)容 pub
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1