У меня есть рабочий сценарий записи микрофона в AS3, который я смог успешно использовать для сохранения файлов .wav на сервер через AMF. Эти файлы прекрасно воспроизводятся на любом аудиоплеере без каких-либо странных эффектов.
Для справки, вот что я делаю для захвата ByteArray микрофона: (внутри класса AudioRecorder)
public function startRecording():void {
_rawData = new ByteArray();
_microphone
.addEventListener(SampleDataEvent.SAMPLE_DATA,_samplesCaptured, false, 0, true);
}
private function _samplesCaptured(e:SampleDataEvent):void {
_rawData.writeBytes(e.data);
}
Это работает без проблем. После завершения записи я могу взять переменную _rawData и запустить ее через класс WavWriter и т. Д.
Однако, если я запускаю этот же ByteArray в качестве звука, используя следующий код, который я адаптировал из Adobe Cookbook: (в классе под названием WavPlayer)
public function playSound(data:ByteArray):void {
_wavData = data;
_wavData.position = 0;
_sound.addEventListener(SampleDataEvent.SAMPLE_DATA, _playSoundHandler);
_channel = _sound.play();
_channel
.addEventListener(Event.SOUND_COMPLETE, _onPlaybackComplete, false, 0, true);
}
private function _playSoundHandler(e:SampleDataEvent):void {
if(_wavData.bytesAvailable <= 0) return;
for(var i:int = 0; i < 8192; i++) {
var sample:Number = 0;
if(_wavData.bytesAvailable > 0) sample = _wavData.readFloat();
e.data.writeFloat(sample);
}
}
Аудио файл воспроизводится с удвоенной скоростью! Я проверил битрейт записи и тому подобное, и я почти уверен, что все они верны, и я попытался изменить размер буфера и любые другие числа, о которых я мог подумать. Может ли это быть моно против стерео?
Надеюсь, мне было достаточно ясно, спасибо!