在iOS上使用ActionScript3播放声音会导致不良影响

时间:2014-04-27 15:11:41

标签: ios flex audio mobile air

我使用Adobe AIR和ActionScript3播放从iOS设备上的麦克风录制的声音。 我使用FileStream.writeFloat方法将麦克风样本(单声道)存储在一个文件中。 我稍后创建了一个Sound对象并注册到SampleEvent,在SampleEvent中我读取了之前存储的带有麦克风样本的文件,并将它们写入两次(因为输出是立体声的)。

问题在于,当我在AIR模拟器中运行它时效果很好并重放声音很棒,当我在iOS设备(iPad)上播放时,声音运行速度提高了两倍。

    private function onSampleData(event : SampleDataEvent):void
    {

        // the following lines of code are modifying the sound object and creates a "pitch" effect
        var sample:Number;

        var outputLength:int = 0;
        while (outputLength < 2048) {
            // until we have filled up enough output buffer
            if (_micSamplesStream.bytesAvailable < 4)
            {
                break;
            }

            // read out the left and right channels at this position
            sample = _micSamplesStream.readFloat();

            // write the samples to our output buffer
            event.data.writeFloat(sample);
            event.data.writeFloat(sample);

            outputLength++;
        }
    }   

1 个答案:

答案 0 :(得分:0)

我已经将应用程序构建为ad-hoc软件包并使用TestFlight将其安装在iPad上,现在一切似乎都运行良好。

我想在调试期间,Adobe AIR无法足够快地填充声音缓冲区并导致失真。