我有一个(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
,然后获得那个音轨的持续时间-但是,这似乎比以前的解决方案昂贵得多
最可行的解决方案是什么?