获取现场麦克风录音的持续时间

时间:2019-04-03 19:46:28

标签: java android audio record microphone

我有一个(android)AudioRecord对象。我想找到录制的音频的持续时间-调用AudioRecord#startRecording之后。

我当然可以:

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

但是,这简直太脏了。它实际上并不是在测量所收集音频的持续时间。


该类上似乎没有方法可以获取此持续时间。

我能想到的下一个最佳解决方案-非hacky-解决方案是对我读取的块数量进行计数(使用AudioRecord#read(byte[], int, int)。在使用采样率-或其他一些元数据-内插持续时间之前。


我想我也可以使用相同的read方法将到目前为止已阅读的音频收集到内存中的缓冲区中。将其转换为AudioTrack,然后获得那个音轨的持续时间-但是,这似乎比以前的解决方案昂贵得多


最可行的解决方案是什么?

0 个答案:

没有答案