要改变音频播放的速度,其实这个功能早在FlashPlayer10就已经能够实现了。主要涉及的API为:
- Sound.extract : 提取原始音频数据
- SampleDataEvent.SAMPLE_DATA : 通过该事件将音频数据(可以修改)写入并播放。
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。
请确保声卡驱动已经安装好,并且能播放声音。
如果看不到示例请到原始网站查看。
» 转载请注明来源:www.litefeel.com » 《变速音频播放》
» 本文链接地址:https://www.litefeel.com/dynamic-speed-play-sound/
» 订阅本站:www.litefeel.com/feed/
» Host on Linode VPS
» 本文链接地址:https://www.litefeel.com/dynamic-speed-play-sound/
» 订阅本站:www.litefeel.com/feed/
» Host on Linode VPS
This post was last modified on 2019 年 03 月 04 日 00:43