我正在使用ActionScript在Flash Mobile中开展项目。我有一个压缩的wav文件,我需要能够在Button Press操作中根据需要进行序列化和播放。下面是压缩wav文件的代码。
mic.removeEventListener(SampleDataEvent.SAMPLE_DATA, micSampleDataHandler);
btnRecord.setStyle("icon", recOff);
sampleCount++;
// save the raw PCM samples as a bare WAV file
var wav:ByteArray = new ByteArray();
var writer:WAVWriter = new WAVWriter();
writer.numOfChannels = 1;
writer.sampleBitRate = 16;
writer.samplingRate = 11025;
samples.position = 0;
writer.processSamples(wav, samples, 11025, 1);
wav.position = 0;
// zip the WAV file
var fzip:FZip = new FZip();
fzip.addFile(name + sampleCount.toString(), wav);
var zip:ByteArray = new ByteArray();
fzip.serialize(zip);
var recSpot:Object = {
id: null,
audio: zip,
name: "New Audio File " + newRecNum,
existsdb: "false"
};
newRecNum++;
recordings.addItem(recSpot);
}
我该怎么做才能播放这个文件,以前真的不必播放压缩文件。
答案 0 :(得分:4)
我不熟悉WAVWriter(这可能有点不合适),但这就是我所知道的。
首先,由于压缩的性质,你不能(据我所知)播放压缩音频文件,句号。你需要先解压缩它。
使用FZIP解压缩时,快速Google搜索显示THIS AS3 TUTORIAL。示例程序使用.PNGs,但我认为您可以调整它以使用先前压缩的原始.WAV文件。跳到第5步,获取实际代码。 (显然,你需要重写它才能使用你的界面。)
在步骤5中,您不需要DataProvider变量,特别是组件。您需要将数据加载到其他内容中。如果您播放WAV文件的方法与我的一样(我使用as3WAVSound class),您可能希望将数据加载到ByteArray中并播放。
您可能也不需要在步骤10中使用的for循环,因为您的代码似乎只创建了一个只包含一个WAV文件的ZIP。这大大简化了事情。
无论如何,我希望能回答你的问题!