необработанный звук byteArray для размещения массива - PullRequest
3 голосов
/ 04 марта 2010

Я пытаюсь преобразовать byteArray звукового объекта в массив с плавающей точкой. Звуковой объект воспроизводится нормально и на полную длину, но массив float, который я получаю от него, обрезается (но звучит правильно), поэтому в преобразовании я должен что-то делать неправильно:

var s:Sound = mySound;
s.play(); // plays fine

var bytes:ByteArray = new ByteArray();
bytes.endian = Endian.LITTLE_ENDIAN;
s.extract(bytes, s.bytesTotal, 0);

var leftChannel:Array = new Array();
var rightChannel:Array = new Array();

bytes.position = 0;

while (bytes.bytesAvailable)
{
    leftChannel.push(bytes.readFloat());
    rightChannel.push(bytes.readFloat());
}

и вот что я получаю:

alt text

Два верхних канала являются исходным звуковым объектом. Нижние два - данные массива с плавающей точкой. Я выровнял их так, чтобы вы могли видеть, что начало обрезано и, очевидно, длина неверна.

Спасибо за любые ответы ...

1 Ответ

1 голос
/ 07 марта 2010

хорошо, были две проблемы:

  1. импортируемый мною mp3-файл был поврежден, что привело к обрезанию начала
  2. длина, которую я определил для извлечения, была неправильной, чтобы найти полную длину звука используйте

var numTotalSamples: Number = int (s.length * 44.1); // при частоте дискретизации 44,1 кГц

, то:

s.extract (bytes, numTotalSamples, 0);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...