1

私は現在、トランシーバー型の環境を開発しています。オーディオの録音とリサンプリングは正常に機能し(助けてくれてありがとう)、再生は機能します..ちょっと。

私のデータは (WAV-) ブロブで提供されるので、次のようにします。

audioPlay(blob)
{
        var fileReader = new FileReader();
        fileReader.onload = function() {
                theContext.decodeAudioData(this.result, function(buffer) {
                        var source = theContext.createBufferSource(); 
                        source.buffer = buffer;
                        source.connect(theContext.destination);
                        source.start(0);
                        });
                };
        fileReader.readAsArrayBuffer(blob);
}

ただし、新しいオーディオごとにわずかな開始遅延が追加され、新しいオーディオごとに大きくなります。数回の音声の後、遅延により約 2 ~ 3 秒が追加されます。ログに遅延は見られず、プログラムは .source.start まで問題なく流れています。

何か案は?

4

2 に答える 2

0

サンプルごとに 0 から再生を開始しないでください。代わりに時間を追跡します。

 if (nextTime == 0) { nextTime = context.currentTime }
 source.start(nextTime);
 nextTime+=source.buffer.duration; 
于 2013-12-21T00:27:52.010 に答える
0

ミカエラ、これはソースの問題である可能性が高いように思えます - 各着信ブロブが正しいことを確認していますか (正しい長さで、最初にオーディオがありますか?)その端にある空のバッファの最後に記録します。その特定の問題がなければ、入ってくるオーディオブロブを見てみたいと思います - 何らかの理由でデコードが高すぎるのでしょうか? (つまり、2 ~ 3 秒の累積遅延がある場合、データの受信、デコード、またはバッファー自体に遅延があるかどうかをログから判断できるはずです。

于 2013-12-23T14:50:07.887 に答える