如何在Flash Mobile中播放压缩波形文件

时间:2013-12-20 17:39:06

标签: android actionscript-3 flash wav flex-mobile

我正在使用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);
            }

我该怎么做才能播放这个文件,以前真的不必播放压缩文件。

1 个答案:

答案 0 :(得分:4)

我不熟悉WAVWriter(这可能有点不合适),但这就是我所知道的。

首先,由于压缩的性质,你不能(据我所知)播放压缩音频文件,句号。你需要先解压缩它。

使用FZIP解压缩时,快速Google搜索显示THIS AS3 TUTORIAL。示例程序使用.PNGs,但我认为您可以调整它以使用先前压缩的原始.WAV文件。跳到第5步,获取实际代码。 (显然,你需要重写它才能使用你的界面。)

在步骤5中,您不需要DataProvider变量,特别是组件。您需要将数据加载到其他内容中。如果您播放WAV文件的方法与我的一样(我使用as3WAVSound class),您可能希望将数据加载到ByteArray中并播放。

您可能也不需要在步骤10中使用的for循环,因为您的代码似乎只创建了一个只包含一个WAV文件的ZIP。这大大简化了事情。

无论如何,我希望能回答你的问题!