Я пытаюсь реализовать простой сценарий караоке: пользователь может записывать свой голос (без наушников) с одновременным воспроизведением и воспроизведением.Затем он может применить некоторые фильтры, добавить воспроизведение, смешать его и сохранить в файл.Я использую SuperpoweredRecorder вместе с SuperpoweredAdvancedAudioPlayer и затем SuperpoweredDecoder / createWAV.Окончательная запись состоит из 2 дорожек: 1) голос пользователя с воспроизводимым воспроизведением и некоторыми фильтрами 2) чистое воспроизведение.Моя проблема в том, что воспроизведение, которое было записано с голосом пользователя, не синхронизировано с воспроизведением, смешанным в автономной обработке.Это разумно - его нужно сгенерировать, пройти через выход (динамик), обработать и записать обратно через вход (микрофон).Это хорошо описывается как «проблема задержки Android 10ms».После некоторого анализа я обнаружил, что задержка варьируется в зависимости от устройства, и это нормально, но также меняется в каждой записи на одном устройстве.Я прикрепляю экраны и значения (я использовал метроном в тихой комнате, чтобы вычислить его)
(тик воспроизведения) [мс] - (тик воспроизведения записи) [мс] (задержка [мс])
Samsung S8
40 - 112 (62)
52 - 117 (65)
40 - 92 (52)
52 - 107 (55)
40 - 97 (57)
Huawei
40 - 216 (176)
40 - 219 (176)
40 - 226 (186)
Эта задержка для меня не проблема, поскольку, как я объяснил, я могу сдвинуть ее во время автономной обработки.Однако я не знаю, как рассчитать (или даже оценить) задержку.У вас есть идеи, как это сделать?Тестирование всех возможных устройств и получение среднего значения на Android не представляется возможным и, вероятно, не слишком точным.
Заранее спасибо!