2010-10-15 73 views
0

我打算同時播放多個MP3像多軌一樣,我知道這會造成內存的巨大增加。有沒有一種方法來流式傳輸或緩衝直播?空氣2和流媒體MP3

如果我在創建虛擬鋼琴時使用它,將88或500MB的MP3嵌入到性能或動態負載中是否可行?

回答

0

嗯...

從文件流?

這將是可能的,但我不認爲這將有可能與AIR API ...我想定製庫將可用在這裏......基本上,你將有一個類聲音播放,這將有方法addSoundremoveSound

每次addSound被調用時,路徑所需(ID EST音符和儀器需要)被用來初始化一個的FileStream以及用於新創建的聲音實例的回調方法。回調會從FileStream實例(例如8192字節)或緩衝區的大小讀取(緩衝區),並將其寫入聲音緩衝區。

removeSound只會通過addSound刪除(接近,等...)創建的兩個的FileStream聲音的實例。

這些實例應該存儲在某種數組中。

而且,請注意,聲音的動態流版本是非常無證......但是,這是一個示例代碼來了解它是如何工作:

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