Air 2和流媒体播放器

时间:2010-10-15 12:27:00

标签: flex actionscript-3 air

我打算像多轨一样同时播放多个MP3,我知道这会导致内存大幅增加。有没有办法直播或缓冲现场?

如果我在创建虚拟钢琴时使用它,是否可以嵌入88或500MB的MP3以获得性能或动态负载?

1 个答案:

答案 0 :(得分:0)

唔...

来自文件的流?

这是可能的,但我认为使用AIR API 是不可能的......我想在这里可以使用自定义库...基本上,你会有一个类 SoundPlayer ,其中包含方法 addSound removeSound

每次调用 addSound 时,所需的路径(需要的注释和工具)用于初始化 FileStream 以及新的回调方法创建声音实例。回调将从 FileStream 实例中读取(缓冲)某些内容,例如,8192字节,或缓冲区的大小,并将其写入 Sound 缓冲区。

removeSound 只会删除(关闭等等) addSound <创建的 FileStream 声音的实例/ em>的

实例应存储在某种数组中。

此外,请注意声音的动态流版本是非常未记录的...但这是一个示例代码,以了解它是如何工作的:

var mySound:Sound = new Sound(); // new one
mySound.addEventListener("sampleData", getData); // the callback event
var myChannel:SoundChannel = mySound.play(); // no arguments for play, channel

// the callback function - it is used to get the new sound buffer
function getData(e:SampleDataEvent):void {
    for (var wi:int = 0; wi < 8192; wi++){
        e.data.writeFloat(Math.random());
    }
}

这会产生噪音(随机)。

这是锯齿波形。只因为它很有趣:(警告:响亮)

var subWi:Number = 0;
for (var wi:int = 0; wi < 8192; wi++){
    e.data.writeFloat(subWi);
    subWi += 0.01;
    if (subWi >= 1){
        subWi = 0;
    }
}

注意:使用此代码,您也可以执行合成:D