並列実行で問題が発生AsyncTask
しexecuteOnExecutor()
ましたが、音声の送受信に遅延(400ms〜600ms)の音声が出ます。これが私のコードです:
音声通話を録音するためのコード:
private void startRecording() {
recorder = new AudioRecord(MediaRecorder.AudioSource.MIC,
RECORDER_SAMPLERATE, RECORDER_CHANNELS,
RECORDER_AUDIO_ENCODING, BufferElements * BytesPerElement);
recorder.startRecording();
isRecording = true;
/*
* Schedule a task for repeated fixed-rate execution after a specific
* delay has passed.
*/
timer.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
bData = new short[BufferElements];
while (isRecording) {
// gets the voice output from microphone to byte format
/*
* Reads audio data from the audio hardware for recording
* into a buffer.
*/
recorder.read(bData, 0, BufferElements);
if (AudioRecord.ERROR_INVALID_OPERATION != 0) {
/* Send the audio voice data to server */
SendAudio();
}
}}, 0, 1);
}
2人のユーザー間で電話をかける場合は、最初に図に示すように電話をかけます。
------>>ユーザー1からユーザー2への通話通話の開始=0
user2が呼び出しを受信した場合、呼び出しを開始= 1 << ------
通話開始=1の場合、2人のユーザー間でデータを転送します。つまり、音声データを送受信します。
------>>通話開始=1の場合、データを転送します
音声データの送受信<<------
オーディオデータの再生の問題は何ですか?
オーディオの再生中に音声が遅れる。応答の送信と受信の間の時間が長すぎて、約400ミリ秒から600ミリ秒です。この問題を解決するには何をする必要がありますか?上記のコードに示すように、5つのチャンクのデータを初めて保持すると、5つのオーディオデータが次々と再生を開始します。