码迷,mamicode.com
首页 > 其他好文 > 详细

ActionScript:Resampling PCM data

时间:2014-11-05 12:17:15      阅读:163      评论:0      收藏:0      [点我收藏+]

标签:blog   io   ar   os   使用   sp   数据   div   on   

使用基于flash的麦克风录音,如果想在获取完PCM采样数据后,通过Sound马上回放,必须经过resampling。(注意:如果录音是采用的44KHz的话,则不需要)

因此,需要as实现一个简便的函数完成这个转换。

 

public function resampleSamples(sourceSamples:ByteArray, targetSamples:ByteArray, sourceRate:int, targetRate:int = 44100):void 
		{
			var left:Number= Math.floor(sourceRate/1000);
			var right:Number= Math.floor(targetRate/1000);
			var lcm:Number=MathEx.lcm(left,right);
			var sourceMumtiple:Number=lcm/left;
			var targetMumtiple:Number=lcm/right;
			var sourceSampleCount:Number=sourceSamples.length/4;
			
			var sourceSampleIndex:Number=1;
			var targetSampleIndex:Number=0;
			sourceSamples.position=0;
			var sample:Number=sourceSamples.readFloat();	
			
			while(sourceSampleIndex<sourceSampleCount)
			{
				if(targetSampleIndex*targetMumtiple>sourceSampleIndex*sourceMumtiple)
				{
					sample=sourceSamples.readFloat();
					sourceSampleIndex++;
					continue;
				}
				
				targetSamples.writeFloat(sample);
				targetSampleIndex++;
			}	
		}

  

(MathEx.lcm是自己实现的一个求最小公倍数的函数)

ActionScript:Resampling PCM data

标签:blog   io   ar   os   使用   sp   数据   div   on   

原文地址:http://www.cnblogs.com/shouzheng/p/4075643.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!