·您当前的位置:首页 > 技术教程 > AS2与AS3技术 >

[FMS]AS3.0基于FMS写的录音机代码示例

时间:2012-09-20 17:10虫子的窝
[FMS]AS3.0基于FMS写的录音机代码示例,基本具备的功能,录音,暂停录音,重新录音,播放录音,暂停播放录音,以及停止播放

基本具备的功能,录音,暂停录音,重新录音,播放录音,暂停播放录音,以及停止播放。

类机构如下



核心录音

  1. package com.DNight   
  2. {  
  3. import flash.events.EventDispatcher;  
  4. import flash.media.Microphone;  
  5. import flash.net.NetConnection;  
  6. import flash.net.NetStream;  
  7. import flash.events.NetStatusEvent;  
  8. import flash.utils.setInterval;  
  9. import flash.utils.clearInterval;  
  10. import com.DNight.events.RecorderEvent  
  11. /**  
  12. * ...  
  13. * @author DN  
  14. */  
  15. public class Recorder extends EventDispatcher  
  16. {  
  17. internal static const FMSSTR:String = "rtmp://localhost/FMSRecord";  

    //极酷cuplayer提示:rtmp服务器地址
  18. public static const FMS_TOTAL_TIME:int = 10;  
  19. private var _netConnection:NetConnection;  
  20. private var _netStream:NetStream;  
  21. private var _mic:Microphone;  
  22.  
  23. private var _recordRember:int = 0;  
  24. private var _recordName:String;  
  25. private var _recordingTime:int = 0;  
  26. private var _intervalId:uint;  
  27.  
  28. public function get mic():Microphone {  
  29. return _mic  
  30. }  
  31. public function get recordName():String {  
  32. return _recordName;  
  33. }  
  34. public function Recorder()   
  35. {  
  36. _netConnection = new NetConnection();  
  37. _netConnection.connect(Recorder.FMSSTR);  
  38. _netConnection.addEventListener(NetStatusEvent.NET_STATUS, onNetStatusHandle);  
  39.  
  40. _mic = Microphone.getMicrophone();  
  41. _mic.gain = 60;  
  42. _mic.rate = 11;  
  43. _mic.setUseEchoSuppression(true);  
  44. _mic.setLoopBack(true);  
  45. _mic.setSilenceLevel(5, 1000);  
  46. }  
  47.  
  48. private function onNetStatusHandle(event:NetStatusEvent) {  
  49. switch(event.info.code) {  
  50. case "NetConnection.Connect.Success":  
  51. trace("连接成功");  
  52. _netStream = new NetStream(_netConnection);  
  53.  
  54. break  
  55. case "NetConnection.Connect.Failed":  
  56. trace("连接失败");  
  57. break  
  58. }  
  59. }  
  60.  
  61. public function startRecord() {  
  62. if (_recordRember == 0) {  
  63. //trace("第一次开始录制");  
  64. var nowTime:Date = new Date();  
  65. _recordName = nowTime.getTime().toString();  
  66. _netStream.attachAudio(_mic);  
  67. _netStream.publish(_recordName,"record");  
  68. _recordRember = 1;  
  69. }else {  
  70. //trace("继续录制");  
  71. _netStream.publish(_recordName,"append");  
  72. }  
  73. _intervalId=setInterval(upData,1000);  
  74. }  
  75.  
  76. public function pauseRecord() {  
  77. //trace("暂停录制");  
  78. _netStream.close();  
  79. clearInterval(_intervalId);  
  80. }  
  81.  
  82. public function stopRecord() {  
  83. //trace("停止录制,重新录制");  
  84. _netStream.close();  
  85. _recordRember = 0;  
  86. clearInterval(_intervalId);  
  87. _recordingTime = 0;  
  88. }  
  89.  
  90. private function upData() {  
  91. _recordingTime++;  
  92. if (_recordingTime<=Recorder.FMS_TOTAL_TIME) {  
  93. var recordProgress:RecorderEvent = new RecorderEvent(RecorderEvent.RECORD_PROGRESS);  
  94. this.dispatchEvent(recordProgress);  
  95. }else {  
  96. var recordEnd:RecorderEvent = new RecorderEvent(RecorderEvent.RECORD_END);  
  97. this.dispatchEvent(recordEnd);  
  98. clearInterval(_intervalId);  
  99. _recordingTime = 0;  
  100. }  
  101. }  
  102. }  

热门文章推荐

请稍候...

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

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