最近因为项目,需要制作一个声音记录和播放的软件,整个程序的运行流程大概如下:1.先录制声音并存储到内存中,2.使用speex对内存中的声音进行编码,3将压缩的声音发送到服务器端再利用speex进行解压,4最后再将解码后的声音播放出来。
因为以前从来没有接触过类似的东西,就去网上找资料,并决定使用AudioQueue实现声音的录制和播放。根据从网上下载的别人的程序进行改动,自己做个一个简单的单机demo程序。然而奇怪的事,再测试时,如果录制声音时间比较短,则可以正常运行。而一旦录制时间比较长的话,程序则会出错,错误如下:。经过调试,感觉就是当调用AudioQueueStart()函数后,系统开始播放声音,此时AudioQueue开始循环填充预先分配的缓冲区是报错。想了半天,实在无法理解为什么会出错。因此,想麻烦大家看看哪里错了 ,谢谢大家了~~~ 程序下载地址:http://pan.baidu.com/s/1nt24rBb

解决方案 »

  1.   

    已经找到为什么会出错的原因了。然而新的问题是我将采样率设置为8000,缓存队列的大小设置为320,可以每次回调函数调用的间隔时间并不是20ms~~~另外,我在speakhere上面也测试过,也把采样率设置为8000,间隔时间设置为0.02,回调时间的间隔仍然不是20ms,请问这是为什么