Java 记录延迟
我正在Android Studio中编写一个应用程序,需要在两台不同的设备上同步录制音频。我的程序必须根据声源的距离检测两个设备之间的延迟 不幸的是,尽管我的程序有一个非常精确的计时器,并在给定的时间发送recorder.start(),但在音频录制的时间和实际开始之前有一个延迟(小于0.5秒) 有没有办法测量延迟,提前一点开始录音? 如果没有,有没有办法消除延误 我看到了一个关于延迟的问题,但解决方案只是确保录音已经开始,然后开始发声,但这对我没有帮助,因为我必须在两台android设备上同时开始录音。如有任何帮助或建议,将不胜感激 这是我的密码:Java 记录延迟,java,android,audio,audio-recording,Java,Android,Audio,Audio Recording,我正在Android Studio中编写一个应用程序,需要在两台不同的设备上同步录制音频。我的程序必须根据声源的距离检测两个设备之间的延迟 不幸的是,尽管我的程序有一个非常精确的计时器,并在给定的时间发送recorder.start(),但在音频录制的时间和实际开始之前有一个延迟(小于0.5秒) 有没有办法测量延迟,提前一点开始录音? 如果没有,有没有办法消除延误 我看到了一个关于延迟的问题,但解决方案只是确保录音已经开始,然后开始发声,但这对我没有帮助,因为我必须在两台android设备上同时
int i = 0;
while((wavFile = new File(Environment.getExternalStorageDirectory().getAbsolutePath()+"/JavaApps/"+"output" + i + ".mp4")).isFile())
i++;
finalName = Environment.getExternalStorageDirectory().getAbsolutePath()+"/JavaApps/"+"output" + i + ".mp4";
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);
recorder.setOutputFile(wavFile.getAbsolutePath());
try {
recorder.prepare();
} catch (Exception e) {
e.printStackTrace();
}
^所有这些都是在录音开始前的准备工作
recorder.start();
try {
Thread.sleep(duration*1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
recorder.stop();
recorder.release();
recorder = null;
^这一部分是在时间达到设定值时发生的。我对Android音频API的了解还不够深入到细节中,但你可能需要降到一个较低级别的API才能获得这种计时精度。我对Java和Android非常陌生,因此,如果没有合适的指南,我不可能一个人解决所有问题:/希望这里有Android音频API经验的其他人能够参与进来并提供一些信息