如何解决如何将音频存储到缓冲区中,然后逐字节读取它
| 我可以通过Android的MediaRecord制作wav文件...但是我有兴趣将音频数据放入缓冲区并逐字节读取...我必须通过TCP通道逐字节发送音频块....可以请一个人帮我...预先感谢, 来自奥地利的szaman解决方法
您可以使用“ 0”逐字节读取音频数据,这是一些示例代码。
// calculate the minimum buffer
int minBuffer = AudioRecord.getMinBufferSize(SAMPLE_RATE,CHANNEL_CONFIG,AUDIO_FORMAT);
// initialise audio recorder and start recording
AudioRecord mRec = new AudioRecord(AUDIO_SOURCE,SAMPLE_RATE,AUDIO_FORMAT,minBuffer);
mRec.startRecording();
byte[] pktBuf = new byte[pktSizeByte];
boolean ok;
// now you can start reading the bytes from the AudioRecord
while (!finished) {
// fill the pktBuf
readFully(pktBuf,pktBuf.length);
// make a copy
byte[] pkt = Arrays.copyOf(pktBuf,pktBuf.length);
// do anything with the byte[] ...
}
由于一次调用read()
可能无法获得足够的数据来填充byte[] pktBuf
,因此我们可能需要多次读取以填充缓冲区。在这种情况下,我使用辅助函数“ readFully”来确保缓冲区已满。根据您要对代码执行的操作,可以使用不同的策略。
/* fill the byte[] with recorded audio data */
private void readFully(byte[] data,int off,int length) {
int read;
while (length > 0) {
read = mRec.read(data,off,length);
length -= read;
off += read;
}
}
完成后,请记住拨打mRec.stop()
以停止AudioRecorder
。希望能有所帮助。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。