录音延迟

jDo*_*ens 3 audio android audio-recording

我正在为 Android 编写一个应用程序,我的目标是录制用户唱歌。录音后,我播放与乐器同步的唱片(这不是问题)。

问题是,当我在播放音频的同时开始录音时,我怀疑录音开始有延迟:(当我稍后尝试播放录音时,当录音也录制了乐器时,这一点很明显)。Nexus 5 上的延迟可能约为 300 毫秒。

我的询问是:

  • 所有 Android 设备 (4.0 +) 上的延迟都是恒定的吗?
  • 如何在不涉及复杂方法的情况下计算延迟?
  • 在移动设备上打开录音并将其缩放为乐器(可能涉及音频解码/编码)是否可以接受?

如何摆脱延迟?

Jef*_*die 5

正如@Lukos 已经提到的,延迟很可能取决于处理速度。启动录音机只是需要一些时间。

我相信最好的解决方案是先启动录音机,然后在知道录音机启动后立即开始音频播放。这样你的录音会有一些延迟,但至少你是同步的。您需要确保播放已初始化,以便可以尽快开始播放。

这可以使用 AudioRecorder 回调来实现。

// Assuming you have a recorder objects defined somewhere
AudioRecord recorder;

recorder.setNotificationMarkerPosition(1);
recorder.setRecordPositionUpdateListener(new AudioRecord.OnRecordPositionUpdateListener() {
    @Override
    public void onMarkerReached(AudioRecord recorder) {
        // start audio playback
    }

    @Override
    public void onPeriodicNotification(AudioRecord recorder) {

    }
});
Run Code Online (Sandbox Code Playgroud)

请注意,我不确定标记的位置。您也许也可以使用 0,不确定这是否会在录制开始后立即向您发出通知,或者是否在实际开始之前发出通知。你必须在那里做一些测试。