Fms3和Flex打造在線視頻錄製和回放

Fms3和Flex打造在線視頻錄製和回放

 
Flex,Fms3系列文章導航
  1. Flex,Fms3相關文章索引

 

本篇是視頻聊天,會議開發實例系列文章的第2篇,該系列全部文章連接以下: 
http://www.cnblogs.com/aierong/archive/2008/12/30/Flex.html#spphp

 

1.關於Fms3和Flex的簡單應用能夠看我上篇
http://www.cnblogs.com/aierong/archive/2009/01/09/flex_fms_chat.htmlhtml

 

2.準備工做
在fms安裝目錄下的application中,新建一個文件夾test_video1,而後啓動fms服務器jquery

 

3.打開Fb3,建立一個項目git

 

4.在主mxml中拖動控件,界面以下:
web

具體代碼以下:
<mx:VideoDisplay x="34" y="10" height="200" width="360" id="vd_main"/>
<mx:TextInput x="34" y="224" text="te" width="208" id="txt_filename"/>
<mx:Button x="250" y="224" label="record" id="btn_record"/>
<mx:Button x="327" y="224" label="stop" id="btn_stop"/>
<mx:Button x="250" y="256" label="replay" id="btn_replay"/>
<mx:Label x="34" y="288" text="狀態提示:" width="362" id="txt_status"/>ajax

 

5.導入包和定義變量以下:
import mx.controls.Alert;
 
private var netConnection:NetConnection;
private var netStream:NetStream;
private var appServer:String="rtmp://192.168.0.249/test_video1";
private var camera:Camera;
private var microphone:Microphone;sql

音頻流或視頻流的通常工做流程:如下步驟簡要介紹了用於發佈實時音頻和視頻的工做流程:數據庫

a.建立一個 NetConnection 對象。 
b.使用 NetConnection.connect() 方法鏈接到服務器上的應用程序實例。 
c.建立一個 NetStream 對象,以便在鏈接中建立數據流。 
d.使用 NetStream.attachAudio() 方法捕獲音頻並經過該流進行發送,而後使用 NetStream.attachCamera() 方法捕獲併發送視頻。 
e.使用 NetStream.publish() 方法爲該流指定惟一的名稱,而後經過該流將數據發送到服務器,以使其餘用戶可以收到該數據。 您還能夠在發佈數據時進行錄製,以便用戶能夠在往後回放該數據。編程

 

6.creationComplete="init()",頁面初始化代碼
private function init():void
{
 netConnection = new NetConnection();
 netConnection.connect(appServer);
 netConnection.addEventListener(NetStatusEvent.NET_STATUS,netStatusHandler);
 btn_record.addEventListener(MouseEvent.CLICK,recordFLV);
 btn_stop.addEventListener(MouseEvent.CLICK,stopRecord);
 btn_replay.addEventListener(MouseEvent.CLICK,replayFLV);
  
 initMedia();
}json

代碼比較簡單,就是作些初始化工做

 

7.實現initMedia()
private function  initMedia():void
{
 camera = Camera.getCamera();
 camera.setMode(300,180,15);
 camera.setQuality(0,100);
 vd_main.attachCamera(camera);
 microphone = Microphone.getMicrophone();
}

代碼說明:
這段代碼其實是在初始化視頻設備和音頻設備

Camera 類可從鏈接到運行 Flash Player 的計算機的攝像頭中捕獲視頻。
重要說明:Flash Player 將顯示「隱私」對話框,用戶可從中選擇是容許仍是拒絕訪問攝像頭。 確保應用程序窗口大小至少爲 215 x 138 個像素;這是顯示該對話框所需的最小大小。

若要建立或引用 Camera 對象,請使用 getCamera() 方法。

camera.setMode()方法是將攝像頭的捕獲模式設置爲最符合指定要求的本機模式
第1個參數:請求的捕獲寬度,以像素爲單位。 默認值爲 160
第2個參數:請求的捕獲高度,以像素爲單位。 默認值爲 120。 
第3個參數:攝像頭捕獲數據應使用的請求速率,以每秒幀數爲單位。 默認值爲 15。

camera.setQuality()方法設置每秒的最大帶寬或當前輸出視頻輸入信號所需的畫面質量
第1個參數:指定當前輸出視頻輸入信號可使用的最大帶寬,以每秒字節數爲單位。 若要指定 Flash Player 視頻可使用所需數量的帶寬來保持 quality 的值,請爲 bandwidth 傳遞 0。 默認值爲 16384。
第2個參數:個整數,指定所需的畫面質量級別,該級別由應用於每一視頻幀的壓縮量肯定。 可接受的值的範圍爲 1(最低品質,最大壓縮)到 100(最高品質,無壓縮)。 若要指定畫面質量能夠根據須要進行變化以免超出帶寬,請將 0 傳遞給 quality。

vd_main.attachCamera(camera)是指把來自攝像頭的視頻流顯示到該控件

Microphone 類可從鏈接到運行 Flash Player 的計算機的麥克風中捕獲音頻
重要說明:Flash Player 將顯示「隱私」對話框,用戶可從中選擇是容許仍是拒絕訪問麥克風。 請確保應用程序窗口大小至少爲 215 x 138 像素,這是顯示對話框所需的最小尺寸。

若要建立或引用 Microphone 對象,請使用 Microphone.getMicrophone() 方法。

 

8.實現netStatusHandler
private function netStatusHandler(evt:NetStatusEvent):void
{
 if ( evt.info.code=="NetConnection.Connect.Success" )
 {
  txt_status.text="fms鏈接成功";
  netStream = new NetStream(netConnection);
 }
 else
 {
  Alert.show("fms鏈接失敗");
 }
}

 

9.實現錄製按鈕事件
private function recordFLV(evt:MouseEvent):void
{
 txt_status.text="開始錄製";
 netStream.attachCamera(camera);
 netStream.attachAudio(microphone);
 netStream.publish(txt_filename.text,"record");
}

代碼說明:
publish () 方法:將音頻流、視頻流和文本消息流從客戶端發送到 Flash Media Server,並可選擇在傳輸期間錄製該流。 此方法僅供指定的流的發佈者使用。
第1個參數:標識該流的字符串。
第2個參數:指定如何發佈該流的字符串。 有效值爲「record」、「append」和「live」。 默認值爲「live」。 (這3個參數區別以下:)
若是傳遞「record」,Flash Player 將發佈並錄製實時數據,同時將錄製的數據保存到名稱與傳遞給 name 參數的值相匹配的新文件中。 該文件保存在服務器上服務器應用程序所在目錄的子目錄中。 若是該文件存在,則覆蓋該文件。
若是傳遞「append」,Flash Player 將發佈並錄製實時數據,同時將錄製的數據附加到名稱與傳遞給 name 參數的值相匹配的文件中,該文件存儲在服務器上包含服務器應用程序的目錄的子目錄中。若是未找到與 name 參數相匹配的文件,則建立一個文件。 
若是省略此參數或傳遞「live」,則 Flash Player 將發佈實時數據而不進行錄製。 若是存在名稱與傳遞給 name 參數的值相匹配的文件,則刪除它。

 

10.中止事件
private function stopRecord(evt:MouseEvent):void
{
 txt_status.text="中止錄製";
 netStream.close();
}

 

11.回放事件
private function replayFLV(evt:MouseEvent):void
{
 txt_status.text="開始回放";
 vd_main.source=appServer+"/"+txt_filename.text;
 vd_main.play();
}

 

12.運行程序


 

13.代碼下載
http://files.cnblogs.com/aierong/Video1.rar
您收到代碼後,請回到文章下面留言告之一下!要是沒收到,我能夠再發!

提供代碼是爲了互相學習,一塊兒探討!請你們多交流!
1.要是對代碼有什麼疑問,能夠在文章的評論區留言,我會盡我所能答覆您!
2.要是您在運行代碼的過程當中發現bug,或者是您有什麼好的建議和意見,也能夠在文章的評論區留言給我,我會及時更正!


評論區使用提示:
評論區留言(使用高級評論)是能夠貼圖片的,要是有難以描述的問題,能夠貼圖片和文字一塊兒說明
謝謝!

 

 

 

收藏與分享

收藏到QQ書籤 添加到百度搜藏 添加到百度搜藏 添加到雅虎收藏 分享到飯否 收藏到就喜歡網絡收藏夾 

RSS訂閱我  什麼是RSS?

feedsky    http://wap.feedsky.com/aierongrss    E-mail 
訂閱到雅蛙        使用RSS郵天下訂閱    訂閱到有道閱讀 
訂閱到抓蝦    鮮果閱讀器訂閱圖標    Add to Google 
訂閱 Bloglines    哪吒提醒    Subscribe in NewsGator Online

東莞.net俱樂部

東莞.net俱樂部 歡迎您的加入

個人系列文章
A. Sql Server2005 Transact-SQL 新兵器學習 
B. MCAD學習 
C. 代碼閱讀總結 
D. ASP.NET狀態管理 
E. DB(數據庫) 
F. WAP 
G. WinForm 
H. Flex

個人好文推薦
FlexAir開源版-全球免費多人視頻聊天室,免費網絡遠程多人視頻會議系統((Flex,Fms3聯合開發))<視頻聊天,會議開發實例8> 
Sql Server2005 Transact-SQL 新兵器學習總結之-總結 
MS SQL數據庫備份和恢復存儲過程(增強版本) 
sql server中分佈式查詢隨筆(連接服務器(sp_addlinkedserver)和遠程登陸映射(sp_addlinkedsrvlogin)使用小總結) 
ASP.NET2.0國際化/本地化應用程序的實現總結(多語言,多文化頁面的實現) 
WAP開發資料站(最新更新) 
自定義格式字符串隨筆 (IFormattable,IFormatProvider,ICustomFormatter三接口的實現) 
Mcad學習筆記之異步編程(AsyncCallback 委託,IAsyncResult接口,BeginInvoke方法,EndInvoke方法的使用小總結) 
Mcad學習筆記之經過反射調用類的方法,屬性,字段,索引器(2種方法) 
Mcad學習筆記之序列化(2進制和Soap序列 化) 
Mcad學習筆記之委託再理解(delegate的構造器,BeginInvoke,EndInvoke,Invoke4個方法的探討) 
ASP.NET狀態管理之一(歸納篇) 
Flex,Fms學習筆記

banner

但願上面提到的知識對您有所提示,同時歡迎交流和指正 
做者: aierong
出處: http://www.cnblogs.com/aierong
貼子以"現狀"提供且沒有任何擔保,同時也沒有授予任何權利!
本文版權歸做者全部,歡迎轉載!
原創技術文章和心得,轉載註明出處!這也是對原創者的尊重!
 
分類:  Flex
綠色通道:  好文要頂  關注我  收藏該文 與我聯繫 
0
0
 
(請您對文章作出評價)
 
« 上一篇: Flex和Fms3打造在線聊天室(利用NetConnection對象和SharedObject對象)<視頻聊天,會議開發實例1>
» 下一篇: Fms3和Flex打造在線多人視頻會議和視頻聊天(附原代碼)<視頻聊天,會議開發實例3>
posted @  2009-01-10 09:27 aierong 閱讀(12669) 評論(107) 編輯 收藏
< Prev 1 2 3
 
#101樓   2011-03-15 16:10 自由楓  
樓主,爲何只能用一次啊,當錄完後能夠播放一次,再點擊replay後就沒反應了,點擊record也沒反應,怎麼回事呢。
#102樓 [ 樓主] 2011-03-23 20:03 aierong  
引用自由楓:樓主,爲何只能用一次啊,當錄完後能夠播放一次,再點擊replay後就沒反應了,點擊record也沒反應,怎麼回事呢。



我可是測試過,沒有這種狀況,你是否修改了代碼
#103樓   2011-03-28 13:06 wswsn  
您好 樓主 最近我在研究FMS和FLEX作視頻聊天 您否發我一份您的完整源碼 讓我學習學習 萬分感謝 87342564@qq.com
#104樓 [ 樓主] 2011-05-17 19:15 aierong  
引用wswsn:您好 樓主 最近我在研究FMS和FLEX作視頻聊天 您否發我一份您的完整源碼 讓我學習學習 萬分感謝 87342564@qq.com

每篇文章都留有代碼下載地址

#105樓   2011-07-01 15:11 feifeidejunjun  
您好,我正要作這樣的功能,我下載了您的代碼,不過感受並無真正的錄製視頻,不知道是怎麼回事,並且我在服務器端也查過了,沒有這個錄製下來的東西
#106樓 [ 樓主] 2011-11-16 16:08 aierong  
引用feifeidejunjun:您好,我正要作這樣的功能,我下載了您的代碼,不過感受並無真正的錄製視頻,不知道是怎麼回事,並且我在服務器端也查過了,沒有這個錄製下來的東西



我當時用的是fms3
#107樓   2014-07-26 14:33 fengma  
樓主,我在點擊回放視頻完成後畫面就是視頻最後一幀.如何才能讓它放完視頻後自動回到實時的本身的視頻畫面啊?
< Prev 1 2 3
 
 
相關文章
相關標籤/搜索