变速音频播放

发表评论 阅读评论

要改变音频播放的速度,其实这个功能早在FlashPlayer10就已经能够实现了。主要涉及的API为:

Sound.extract(target:ByteArray, length:Number, startPosition:Number = -1):Number

target:用于放置提取的声音样本的ByteArray 对象。
length:要提取的声音样本数。样本包含左声道和右声道,即 2 个 32 位浮点值。
startPosition: 要提取的声音的开始位置. (默认为-1,标示按顺序提取)
return : 提取的声音样本个数。(1样本==2Float==8byte).

下面引用帮助上的一段代码,利用SampleDataEvent.SAMPLE_DATA事件生成正弦音频。

var mySound:Sound = new Sound();
function sineWaveGenerator(event:SampleDataEvent):void {
    for ( var c:int=0; c<8192; c++) {
        event.data.writeFloat(Math.sin((Number(c+event.position)/Math.PI/2))*0.25);
        event.data.writeFloat(Math.sin((Number(c+event.position)/Math.PI/2))*0.25);
    }
}
mySound.addEventListener(SampleDataEvent.SAMPLE_DATA,sineWaveGenerator);
mySound.play();

这里用Sound.extract结合SampleDataEvent.SAMPLE_DATA做的一个变速音频的Demo。
请确保声卡驱动已经安装好,并且能播放声音。

如果看不到示例请到原始网站查看。

示例源码下载
fl包请在这里下载

  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.
回到顶部