Action Script Modify Sound Data в реальном времени - PullRequest
1 голос
/ 24 декабря 2009
var sound:Sound = new Sound();
var req:URLRequest = new URLRequest(url);
sound.load(url)

Я хочу изменить звуковые данные (mp3) по мере их поступления. В частности, mp3 будет зашифровано с использованием потокового шифра, и я хочу расшифровать данные по мере их поступления. Возможно ли это с помощью какого-либо типа события ?

Ответы [ 2 ]

3 голосов
/ 25 декабря 2009

Чтобы обработать существующий аудиопоток, вы должны настроить выходной звуковой объект, не загружая в него звук. Затем прослушайте этот звуковой объект для SampleDataEvent.SAMPLE_DATA, который запускается всякий раз, когда начинается воспроизведение звукового объекта, для которого буфер пуст. Вам нужно будет заполнить его буфер стерео данными PCM (парами чисел с плавающей запятой.)

Чтобы получить эти цифры, используйте метод Sound.extract () для вашего входного звукового объекта (тот, который вы просто назвали sound в коде выше), чтобы прочитать PCM данные в ByteArray. Обработайте данные этого ByteArray так, как вы хотите, и поместите их в выходной буфер.

var input : Sound;
var output : Sound;

// ... set up your input sound source ... //

output = new Sound();
output.addEventListener(SampleDataEvent.SAMPLE_DATA, handleSampleData);
output.play();

// The SAMPLE_DATA event is dispatched whenever the output Sound object
// buffer is empty. Fill the buffer to keep playing sound.
function handleSampleData(ev : SampleDataEvent) : void
{
  var buffer : ByteArray = new ByteArray;

  input.extract(buffer, 2048);

  // PCM data from input is now in the buffer ByteArray. Filter the sound
  // data according to your requirements here.

  ev.data.writeBytes(buffer);
}

В справочной документации также приведен пример кода на эту тему для метода extract () .

0 голосов
/ 25 декабря 2009

Во вспышке 10 вы можете это сделать. Я не уверен, возможно ли это в предыдущих версиях. во флэш-памяти 10 класс Sound имеет один новый тип события SampleDataEvent, которое фактически запускается при каждом вызове воспроизведения для объекта Sound, и если для объекта Sound нет доступных данных для воспроизведения, то есть он запрашивает данные. Затем поймайте событие, запишите некоторые данные в формате mp3, и объект Sound сможет их воспроизвести. эта ссылка может помочь.

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