Я знаю, как записывать аудио в ActionScript 3. Но можно ли что-то вырезать из финального звукового файла в actionscript?Резка звука в actionscript
Моим вариантом использования является то, что пользователь может перейти к определенной точке в звуковом файле (я могу управлять этим) и начать запись оттуда (в основном перезаписывая остальную часть файла).
Возможно ли это в ActionScript 3. Если да, то как?
спасибо.
UPDATE:
Это код, который я использовал, и это работает, но старая запись получает разбили вниз. Я не знаю почему. «selectedTime» - миллисекундное значение времени, выбранного пользователем в графическом представлении волны; 44100 - это моя частота выборки.
existingByte = new ByteArray();
var extract:Number = Math.floor ((selectedTime)*44.1);
sound.extract(existingByte, extract);
mic.recordData(existingByte);
// in the mic class:
public function recordData(existingByteArray:ByteArray=null):void {
if(existingByteArray == null) {
raw = new ByteArray();
} else {
raw = existingByteArray;
raw.position = raw.length;
}
mic.addEventListener(SampleDataEvent.SAMPLE_DATA, dataHandler);
}
private function dataHandler(event:SampleDataEvent):void {
try {
raw.writeBytes(event.data);
} catch(e) {
this.stopRecording();
}
}
Хорошо, спасибо. Я попробую и обязательно вернусь с некоторым примером кода :) – shredding
Это круто, но у меня есть одна оставшаяся проблема. Он отлично работает, и мне удалось сделать разрез. Я использую мастер и передаю его обратно в класс микрофона и добавляю новую запись в конце. Повторите мой вопрос еще раз, я добавил код. Несмотря на то, что это работает, высота основной записи значительно ниже. Я вычисляю длину следующим образом: sound.length * 44.1 (44.1 - моя ставка). У вас есть идея, почему это происходит. Спасибо вам большое! – shredding
У вас есть несоответствие скорости дискретизации между входом микрофона и файлом образца, который вы загружаете в буфер. Если ваш звук равен 44.1khz, ваш микрофон должен быть 44.1khz. Я почти уверен, что микрофон не отбирается в 44.1khz. Таким образом, вам нужно будет уменьшить буфер 44.1khz до той же частоты дискретизации микрофона. Это цикл по звуковым необработанным байтам и извлечение каждого N байта в мастер. indexStep = 44.1khz/16khz. Возможно, вам придется накапливать ошибки округления и принимать дополнительный байт каждые X секунд. Держите поплавок и складывайте остатки, если (acc> 1.0) {acc = 1.0; sampleExtraByte()} – chubbsondubs