·您当前的位置:首页 > 技术教程 > Rtmp技术 >

[AS3]as3处理FMS的视频录像(代码实例)

时间:2012-11-16 22:45cnblogs.com
[AS3]as3处理FMS的视频录像(代码实例),as3录像,as3处理FMS,as3与fms

[AS3]as3处理FMS的视频录像(代码实例)

  1. var mic:Microphone = Microphone.getMicrophone(); 
  2. mic.setUseEchoSuppression(true); 
  3. mic.setLoopBack(true); 
  4.  
  5. //但那只是得到MIC的声音流并回放到音箱上,音频数据是没法得到的~~  
  6. //如果不用NetConnection和NetStream的话  
  7.  
  8. //极酷播放器提示:下面是使用FMS保存录像 
  9. var server_uri:String = "rtmp://localhost/test"
  10. //FMS地址;  
  11. var videoName:String = "KeeRula"
  12. //视频名.  
  13. var my_nc:NetConnection = new NetConnection(); 
  14. //新建一个连接对象,用来连接FMS;  
  15. my_nc.connect(server_uri); 
  16. //连接FMS;  
  17. var my_ns:NetStream = new NetStream(my_nc); 
  18. //新建流,用来捕获和播放视频;  
  19. var my_cam:Camera = Camera.get(1); 
  20. video_r.attachVideo(my_cam); 
  21. //获得慑像头,并将摄像头获取的视频载入到video_r里.  
  22. my_cam.setQuality(1024, 90); 
  23. //设置带宽和质量;  
  24. var my_mic:Microphone = Microphone.get(); 
  25. //获得MIC;  
  26. my_ns.attachVideo(my_cam); 
  27. my_ns.attachAudio(my_mic); 
  28. //将摄像头图象和MIC声音装载到流.  
  29. video_p._visible = false
  30. //将播放窗口设置为不可见.  
  31. my_nc.onStatus = function(thisObj:Object) 
  32.     //trace (thisObj.code);  
  33.     if (thisObj.code == "NetConnection.Connect.Success") 
  34.     { 
  35.         RecordStop("空闲中"); 
  36.         //执行录制停止方法.并将状态设置为空闲  
  37.     } 
  38.     else 
  39.     { 
  40.         trace("错误:服务器未启动或URI输入错误."); 
  41.     } 
  42. }; 
  43.  
  44. //onStatus这里是指服务器的连接状态.  
  45. function Record() 
  46.     video_r._visible = true
  47.     //将录制窗口设为可见.  
  48.     video_p._visible = false
  49.     //播放窗口设置为不可见.  
  50.     my_ns.publish(videoName, "record"); 
  51.     //关键就在这句了.写了这么多全围绕它来的.record为录制.  
  52.     StreamInfo("NowRecord"); 
  53.     //执行StreamInfo方法,并将参数设置为NowRecord;  
  54.     btn_pr.btn_text.text = "停止"
  55.     //按钮文字:停止.  
  56.     RecordInterval = setInterval(RecordTime, 1000); 
  57.     //统计录制时间.  
  58. Record() 
  59. //方法:录制.  
  60.  
  61. var timeNum:Number = 0
  62. //录制时间.  
  63. function RecordTime() 
  64.     timeNum++; 
  65.     txt_status.text = "正在录制" + " " + "时间:" + Math.floor(timeNum / 60) + "分" + (timeNum % 60) + "秒"; 
  66.  
  67. //方法:录制时间统计.  
  68. function RecordStop(__status:String) 
  69.     //__status是当前状态文字.  
  70.     txt_status.text = "当前状态:" + __status; 
  71.     btn_pr.btn_text.text = "录制"
  72.     StreamInfo("NowStop"); 
  73.     //执行StreamInfo方法..并将参数设置为NowStop;  
  74.     clearInterval(RecordInterval); 
  75.     timeNum = 0
  76.     //不录了..要把统计时间清空.  
  77.     if (__status == "录制完成") 
  78.     { 
  79.         Finished(); 
  80.     } 
  81.     //这个应该不用偶说了..      
  82.  
  83. //方法:空闲或录制完成.  
  84.  
  85. function Finished() 
  86.     my_ns.close(); 
  87.     //完成了..就要关闭录制.  
  88.     var thisthisObj = this; 
  89.     var FinishAlert:MovieClip = _root.attachMovie("Alert", "FinishAlert", 100); 
  90.     //这个是一个弹出框.具体看库里的MC:Alert.  
  91.     with (FinishAlert) 
  92.     { 
  93.         alertTitle.HTML = true
  94.         alertTitle.HTMLText = "" + "录制完成!" + ""; 
  95.         info.text = "录制完成..请选择下一步操作."
  96.         _x = video_r._x + (video_r._width - _width) / 2; 
  97.         _y = video_r._y + (video_r._height - _height) / 2; 
  98.         btn_sub.btn_txt.text = "播放"
  99.         btn_cln.btn_txt.text = "重录"
  100.         btn_sub.onRelease = function() 
  101.         { 
  102.             thisObj.PlayVideo(); 
  103.             thisObj.closeAlert(FinishAlert); 
  104.         }; 
  105.         btn_cln.onRelease = function() 
  106.         { 
  107.             thisObj.Record(); 
  108.             thisObj.closeAlert(FinishAlert); 
  109.         }; 
  110.         closed.onRelease = function() 
  111.         { 
  112.             thisObj.closeAlert(FinishAlert); 
  113.         }; 
  114.     } 
  115.     btn_pr.enabled = false
  116.     //把按钮设为不可点.  
  117.  
  118. //方法:录制完成.  
  119.  
  120. function closeAlert(__alert:MovieClip) 
  121.     btn_pr.enabled = true
  122.     unloadMovie(__alert); 
  123.  
  124. //关闭那个Alert用的.  
  125. function StreamInfo(__status:String) 
  126.     btn_pr.onRelease = function() 
  127.     { 
  128.         if (__status == "NowRecord") 
  129.         { 
  130.             RecordStop("录制完成"); 
  131.         } 
  132.         else if (__status == "NowStop") 
  133.         { 
  134.             Record(); 
  135.         } 
  136.         else if (__status == "NowPlay") 
  137.         { 
  138.             Record(); 
  139.         } 
  140.     }; 
  141.  
  142. //嘿嘿..如果把上面的仔细看了的话这个就不用我说了吧.^_^  
  143.  
  144. function PlayVideo() 
  145.     txt_status.text = "当前状态:" + "正在播放..."; 
  146.     StreamInfo("NowPlay"); 
  147.     video_r._visible = false
  148.     video_p._visible = true
  149.     video_p.attachVideo(my_ns); 
  150.     //将视频载到播放窗口中.  
  151.     my_ns.play(videoName); 
  152.     //开始播放.  
  153.     btn_pr.btn_text.text = "重录"
  154.     my_ns.onStatus = function(PlayInfo) 
  155.     { 
  156.         if (PlayInfo.code == "NetStream.Play.Stop") 
  157.         { 
  158.             my_ns.seek(0); 
  159.             my_ns.pause(); 
  160.             txt_status.text = "当前状态:" + "播放完成..."; 
  161.         } 
  162.     }; 
  163.     //流状态信息...详细的请自己 trace (PlayInfo.code);  

 

热门文章推荐

请稍候...

保利威视云平台-轻松实现点播直播视频应用

酷播云数据统计分析跨平台播放器