gpt4 book ai didi

java - 异步任务 : Implementing executeOnExecutor() thread class in AudioTrack

转载 作者:行者123 更新时间:2023-11-30 11:39:33 26 4
gpt4 key购买 nike

我在使用 AsyncTask as executeOnExecutor() 进行并行执行时遇到问题,但在发送和接收时我的语音延迟(400 毫秒到 600 毫秒)声音的。这是我的代码:

通话录音代码:

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);
}

当两个用户之间进行通话时,首先发起通话,如图所示。

------>>从用户1调用到用户2发起调用=0

如果 user2 接到电话,Initiate call = 1 <<------

如果 initiate call = 1,则在两个用户之间传输数据,即发送和接收语音数据。

------>>当Initiate call = 1时,传输数据

发送和接收语音数据<<-------

播放音频数据有什么问题?

播放音频时出现语音延迟。发送和接收响应之间的时间过长,大约为 400 毫秒到 600 毫秒。我需要做什么来解决这个问题?第一次持有5个数据 block ,当它接收到5个音频数据时,立即依次开始播放,如上代码所示。

最佳答案

尝试将 5 个音频数据减少到 3 个? - 并不总是最好的主意,但它可以提供帮助。带宽如何,是否足够传输舒适?网络延迟如何?做一个 ping ,如果有 400 毫秒,那么你不能做太多。

关于java - 异步任务 : Implementing executeOnExecutor() thread class in AudioTrack,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13207824/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com