我正在尝试实现简单的卡拉 OK 场景:用户可以录制他的声音(不带耳机)同时播放。然后他可以应用一些过滤器,添加播放,混合并将其保存到文件中。我使用 SuperpoweredRecorder 和 SuperpoweredAdvancedAudioPlayer,然后是 SuperpoweredDecoder/createWAV。最终录音由 2 个音轨组成:1) 带有可听回放的用户声音和一些过滤器 2) 纯回放。我的问题是带有用户语音的录音机的播放与离线处理中混合的播放不同步。这是合理的 - 它必须被生成,通过输出(扬声器),通过输入(麦克风)返回并被处理和记录。它被很好地描述为“Android 10ms 延迟问题”。经过一些分析,我发现延迟因设备而异,这没关系,但在同一设备上的每次录制中也会有所不同。我附上屏幕和数值(我在安静的房间里使用节拍器来计算它)
(播放节拍)[ms] - (录制的播放节拍)[ms](延迟 [ms])
三星S8
40 - 112 (62)
52 - 117 (65)
40 - 92 (52)
52 - 107 (55)
40 - 97 (57)
华为
40 - 216 (176)
40 - 219 (176)
40 - 226 (186)
这种延迟对我来说不是问题,因为正如我解释的那样,我可以在离线处理期间转移它。但是我不知道如何计算(甚至估计)延迟。你知道怎么做吗?在 Android 上测试所有可能的设备并获得平均值是不可能的,而且可能也不太准确。
提前谢谢!