加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 18:47:30 所属栏目:百科 来源:网络整理
导读: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.
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);
		}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读