MP3ファイルをダウンロードしてSoundオブジェクトに変換し、生データを取得して処理(サウンドの追加、オクターブの変更など)を行うことができるフラッシュアプリケーションを作成しています。処理後、データをチャンクでサーバーに送り返したいので、サーバーはデータを接着して、新しく生成されたファイルを回復できます。問題は、サーバーに「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バイト配列を変換する場合:
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