首页 > 代码库 > ActionScript:Resampling PCM data
ActionScript:Resampling PCM data
使用基于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
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。