Flash AS 3 中即时录音与回放的噪音消除脚本代码

http://task.zhubajie.com/1027326/
 
package 
{
	import flash.display.Sprite;
	import flash.media.Microphone;
	import flash.system.Security;
	import flash.system.SecurityPanel;
	import org.bytearray.micrecorder.*;
	import org.bytearray.micrecorder.events.RecordingEvent;
	import org.bytearray.micrecorder.encoder.WaveEncoder;
	import org.as3wavsound.WavSound;
	import flash.events.MouseEvent;
	import flash.events.Event;
	import flash.events.ActivityEvent;
	import fl.transitions.Tween;
	import fl.transitions.easing.Strong;
	import flash.net.FileReference;
	import flash.media.Sound;
	import flash.media.SoundChannel;
	import flash.net.URLRequest;
	import flash.net.navigateToURL;
	import flash.display.Loader;
	import flash.net.URLLoader;
	import flash.display.MovieClip;
	import flash.text.TextField;
	import flash.text.TextFieldAutoSize;
	import flash.text.TextFormat;
	import flash.display.Stage;
	import flash.display.StageDisplayState;
	import flash.events.FullScreenEvent;
	import flash.display.CapsStyle;

	import flash.media.SoundTransform;
	import fl.controls.Slider;
	import fl.events.SliderEvent;
	import flash.events.StatusEvent;

	public class Main extends Sprite
	{
		private var mic:Microphone;//A microphone instance
		private var waveEncoder:WaveEncoder = new WaveEncoder();//Will encode the data captured by the microphone, part of MicRecorder
		private var recorder:MicRecorder = new MicRecorder(waveEncoder);//Creates a MicRecorder instance and uses the WaveEncoder class to encode
		//private var recBar:RecBar = new RecBar();//The recording indicator created before
		//private var tween:Tween;//A tween instance, used for animations
		private var fileReference:FileReference = new FileReference();//Used to save the encoded file to disk
		private var player:WavSound;
		//private var channel:SoundChannel;
		private var preLevel:int;

		private var sound:Sound;
		private var myXML:XML;
		private var loader:URLLoader;
		private var swfWidth:int;
		private var swfHeight:int;

		private var lastframe:int;
		private var nextframe:int;
		private var curFrame:int;
		private var curNum:int;
		private var totalframes:int;
		private var totalnum:int;
		private var replayFlag:Boolean = false;
		private var recFlag:Boolean = false;
		private var testFlag:Boolean = false;
		private var helpFlag:Boolean = false;
		private var homeFlag:Boolean = false;
		private var freeFlag:Boolean = false;

		private var fsFlag:Boolean = false;
		private var frameArr:Array=new Array();
		private var filename:String;
		private var i:int;
		private var En:TextField;
		private var Cn:TextField;
		private var txt:TextField;
		private var testType:String;
		private var testValue:String;
		private var helpType:String;
		private var helpValue:String;
		private var homeType:String;
		private var homeValue:String;


		private var swfLoader:Loader;
		private var swfRoot:MovieClip=new MovieClip();


		//创建转换声音事件处理函数  
		private function changeVolue(evt:SliderEvent):void
		{
			//创建转换对象  
			var trans:SoundTransform=new SoundTransform();
			//获取声音的值,并加入转换对象  
			trans.volume = evt.target.value / 25.0;
			//实现转换  
			soundTransform = trans;
			setVol.mcVol.gotoAndStop(evt.target.value+1);

		}

		private function onStatu(e:StatusEvent):void
		{
			//if (e.code==Microphone.)
			trace(e.code);
			trace(mic.muted);

		}

		public function Main():void
		{
			setVol.sliderChangeVolue.value = Math.floor(soundTransform.volume * 25);
			setVol.mcVol.gotoAndStop(setVol.sliderChangeVolue.value);
			setVol.btnVolBg.enabled = false;

			setVol.btnVolBg.mouseEnabled = false;



			addListeners();


			// constructor code
			//Stops the rec button and the mic indicator
			configureSubtitles();

			loadXml();
			/*
			swfRoot.gotoAndPlay(1);
			btnStudy.enabled = true;
			btnStudy.mouseEnabled=true;
			btnAuto.enabled = false;
			btnAuto.mouseEnabled=false;
			curNum = 0;
			btnLast.visible = false;
			btnNext.visible = false;
			En.visible = false;
			Cn.visible = false;
			btnEn.enabled = false;
			btnCn.enabled = false;
			*/
			autoBTN(null);
			setChildIndex(btnAuto,getChildIndex(btnStudy));


			//btnRec.stop();
			activity.stop();
			activity.visible = false;


			//Starts the microphone and shows the Settings dialog to activate it;

			mic = Microphone.getMicrophone();

			mic.setSilenceLevel(0);
			mic.rate = 11;
			mic.gain = 30;
			mic.noiseSuppressionLevel = 40;
			mic.setSilenceLevel(50, 500);


			//if(Security.LOCAL_TRUSTED!=localTrusted)
			//mic.addEventListener(StatusEvent.STATUS,onStatu);
			if (mic.muted)
			{
				Security.showSettings(SecurityPanel.PRIVACY);
			}

			//mic.setLoopBack(true);
			mic.setUseEchoSuppression(true);

			mic.setLoopBack(false);


			//Security.allowDomain("Local");
			//"2";
			//Security.showSettings("2");
			//btnStudy.enabled = true;
			//btnStudy.mouseEnabled = true;

		}
		private function addListeners():void
		{
			//Starts recording when the rec button is activated


			btnAuto.addEventListener(MouseEvent.MOUSE_UP, autoBTN);
			btnStudy.addEventListener(MouseEvent.MOUSE_UP, studyBTN);
			setVol.sliderChangeVolue.addEventListener(SliderEvent.CHANGE,changeVolue);



			btnPlay.addEventListener(MouseEvent.MOUSE_UP, playBTN);
			btnStop.addEventListener(MouseEvent.MOUSE_UP, stopBTN);
			btnFS.addEventListener(MouseEvent.MOUSE_UP, fullScreen);
			btnEn.addEventListener(MouseEvent.MOUSE_UP, showEn);
			btnCn.addEventListener(MouseEvent.MOUSE_UP, showCn);
			btnRec.addEventListener(MouseEvent.MOUSE_UP, startRecording);
			recorder.addEventListener(RecordingEvent.RECORDING, recording);
			recorder.addEventListener(Event.COMPLETE, recordComplete);
			btnRep.addEventListener(MouseEvent.MOUSE_UP, rePlay);


			btnCmp.addEventListener(MouseEvent.MOUSE_UP, cmpBTN);
			btnTest.addEventListener(MouseEvent.MOUSE_UP, testBTN);
			btnHelp.addEventListener(MouseEvent.MOUSE_UP, helpBTN);
			btnHome.addEventListener(MouseEvent.MOUSE_UP, homeBTN);
			btnLast.addEventListener(MouseEvent.MOUSE_UP, lastBTN);
			btnNext.addEventListener(MouseEvent.MOUSE_UP, nextBTN);






			//The recorder listens for a complete event;
			//activity.addEventListener(Event.ENTER_FRAME, updateMeter);
		}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值