2013-12-20 1 views
5

Я работаю над проектом в Flash Mobile с помощью ActionScript. У меня есть zipped wav-файл, который мне нужно для сериализации и игры по мере необходимости в действии нажатия кнопки. Ниже приведен код для zipping wav-файла.Как играть в зашифрованный волновой файл во Flash Mobile

   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); 
      } 

Что мне делать, чтобы воспроизвести этот файл, на самом деле не нужно было играть в зашифрованный файл раньше.

ответ

4

Я не знаком с WAVWriter (что, вероятно, не так уж и важно), но вот что я знаю.

Во-первых, из-за характера сжатия вы не можете (насколько мне известно) воспроизвести сжатый аудиофайл, период. Сначала вам нужно разархивировать его.

Быстрый поиск в Google появился THIS AS3 TUTORIAL на распаковке с помощью FZIP. В примерной программе используются .PNG, но я бы предположил, что вы можете настроить ее для работы с необработанным файлом .WAV, который вы застегивали ранее. Перейдите к шагу 5 для действительного кода. (Очевидно, что вам нужно переписать его для работы с вашим интерфейсом.)

На этапе 5 вам не понадобится переменная DataProvider, как, в частности, для компонентов. Вам нужно будет загрузить свои данные во что-то другое. Если ваш способ воспроизведения файлов WAV похож на мой (я использую as3WAVSound class), вы, вероятно, захотите загрузить данные в ByteArray и проиграть это.

Вам также, вероятно, не понадобится цикл for, который он использует на шаге 10, так как ваш код, похоже, создает ZIP с одним WAV-файлом. Это значительно упрощает дело.

В любом случае, я надеюсь, что ответит на ваш вопрос!