标签: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