AS3 Client + Grails Server - Обработка аудио на клиенте и отправка его обратно на сервер

StackOverflow https://stackoverflow.com//questions/9626852

Вопрос

Мы пишем флэш-приложение, которое может загрузить файл MP3, преобразуйте его в звуковой объект, получают необработанные данные и сделайте некоторую обработку (например, добавление звуков, изменить Octaves). После обработки мы хотим отправлять данные обратно на сервер в кусках, поэтому сервер сможет приклеить данные вместе и восстановить новый сгенерированный файл. Проблема в том, что если мы отправим к серверу «WAV» звуки звука, мы можем приклеить их вместе без проблем в сгенерированном файле. Однако, если мы преобразуем каждый файл WAV в файл MP3 (так что мы можем отправить меньший файл на сервер) и присоединиться к файлам MP3 на сервере, результатом является звук с некоторыми проблемами в точке слияния.

Вот как мы загружаем файл mp3 с сервера:

sourceSnd.load(new URLRequest("sample url to mp3"));
sourceSnd.addEventListener(Event.COMPLETE, carregou);
.

Вот как мы преобразуем каждый кусок mp3 в bytearray и wav:

sourceSnd.extract(buffer, tamanho2);        
...process the extract sound and....
var bytesWav : ByteArray = new ByteArray();
buffer.position = 0;
this.wavWriter.processSamples(bytesWav, buffer, 44100, 2);
.

Если мы отправим каждый мини-файл Mini-WAV обратно на сервер (например, используя розетку), мы можем приклеить их вместе без каких-либо проблем. Однако, если мы конвертируем каждый WAV BYTEARRAY, используя этот код:

bytesWav.position = 0;
var mp3Encoder : ShineMP3Encoder = new ShineMP3Encoder(bytesWav);
var objeto : teste = this;                                  
mp3Encoder.addEventListener(Event.COMPLETE, function(event : Event) : void {
    objeto.socket.send(mp3Encoder.mp3Data);
});
mp3Encoder.start();
.

После присоединения к файлам создан файл MP3 имеет много звуковых задач в точках «объединения».

Как мы можем избежать таких проблем звука?

Технология клиента: AS3 Техонология на стороне сервера: Grails

Это было полезно?

Решение

Оказывается выключено, что было вызвано процессом обтягивания каждого куска WAV в MP3.Кодер преобразует их в целые файлы MP3, добавляя тишину к первому и последним кадрам каждой части.Вы можете увидеть подробное объяснение здесь: http://lame.sourceforge.net/tech-faq.txt

Чтобы решить эту проблему, нам пришлось редактировать исходный код Shinemp3encoder, чтобы он не добавил бы начало и конечные кадры для каждого обрабатываемого деталя (поворачивая его в «процессор кусочка»).Это решило проблему, и мы смогли транслировать модифицированный файл MP3 с клиента на сервер.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top