0
我打算同时播放多个MP3像多轨一样,我知道这会造成内存的巨大增加。有没有一种方法来流式传输或缓冲直播?空气2和流媒体MP3
如果我在创建虚拟钢琴时使用它,将88或500MB的MP3嵌入到性能或动态负载中是否可行?
我打算同时播放多个MP3像多轨一样,我知道这会造成内存的巨大增加。有没有一种方法来流式传输或缓冲直播?空气2和流媒体MP3
如果我在创建虚拟钢琴时使用它,将88或500MB的MP3嵌入到性能或动态负载中是否可行?
嗯...
从文件流?
这将是可能的,但我不认为这将有可能与AIR API ...我想定制库将可用在这里......基本上,你将有一个类声音播放,这将有方法addSound和removeSound。
每次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