Получить длительность записи живого микрофона - PullRequest
0 голосов
/ 03 апреля 2019

У меня есть (android) AudioRecord объект.Я хочу узнать продолжительность записи звука - после звонка AudioRecord#startRecording.

Конечно, я мог бы сделать:

Instant start = Instant.now();
recorder.startRecording();
Duration duration = Duration.between(start, Instant.now());

Однако, это просто грязно.На самом деле это не измерение длительности собранного звука.


Похоже, в классе нет метода для получения этой продолжительности.

Следующий лучший - не хакерский- решение, которое я могу придумать, - это подсчитать количество прочитанных фрагментов (используя AudioRecord#read(byte[], int, int).Прежде чем использовать частоту дискретизации - или какой-то другой фрагмент метаданных - для интерполяции длительности.


Я думаю, что я мог бы также собрать звук, который я прочитал до сих пор, используя тот же readметод, в буфер в памяти.Преобразуйте это в AudioTrack, а затем получите длительность этой звуковой дорожки - однако, это кажется намного дороже, чем предыдущее решение


Какое наиболее выполнимое решение?

...