安卓音频录音类——快速处理直播麦克风音频,设置回调功能
我想从麦克风录制音频并访问它,以便近乎实时地播放。我不确定如何使用Android AudioRecord类来录制一些麦克风音频并快速访问它。
对于AudioRecord类,官方网站上说“应用程序及时轮询AudioRecord对象”,“正在填充的缓冲区的大小决定了在过度运行未读数据之前录制的时间长度”。后来建议在轮询频率较低时使用更大的缓冲区。他们从未真正在代码中展示过示例。
我在一本书中看到的一个例子使用AudioRecord类连续读取新填充的实时麦克风音频的缓冲区,然后应用程序将此数据写入SD文件。伪代码看起来像这样 -
set up AudioRecord object with buffer size and recording format info
set up a file and an output stream
myAudioRecord.startRecording();
while(isRecording)
{
// myBuffer is being filled with fresh audio
read audio data into myBuffer
send contents of myBuffer to SD file
}
myAudioRecord.stop();
此代码如何将其读取与记录速率同步尚不清楚 - 布尔值“isRecording”是否在其他地方正确排序?似乎这段代码可能读取得太频繁或太不频繁,这取决于读取和写入所需的时间。
该网站文档还说,AudioRecord类有一个名为OnRecordPositionUpdateListener的嵌套类,它被定义为一个接口。该信息表明,您以某种方式指定了要通知录制进度的时间段以及事件处理程序的名称,并且以指定的频率自动调用事件处理程序。我认为在伪代码中的结构是这样的 -
set target of period update message = myListener
set period to be about every 250 ms
other code
myListener()
{
if(record button was recently tapped)
handle message that another 250 ms of fresh audio is available
ie, read it and send it somewhere
)
我需要找到一些特定的代码,这些代码允许我捕获和处理延迟小于约500 ms的麦克风音频。Android提供了另一个名为MediaRecorder的课程,但它不支持流媒体,我可能希望通过Wi-Fi网络近乎实时地流式传输实时麦克风音频。在哪里可以找到一些具体的例子?