我在IPhone上用AVAudioRecorder实现一个录音功能:先录音5秒钟,再对录制的完整的音频文件进行解析。但是发现我用record for duration指定录音5秒之后,再去解析录制的音频文件出现了问题,发现这个录音函数是先生成一个文件头,如果有后续操作,就先执行后续代码,而不录音,直到后续代码运行完才真正录音。
  我曾经想把录音放到一个线程里面,先启动录音线程,然后再解析,后来发现它IPhone的这个录音函数很奇怪,它不是我启动录音就开始录制,它是把后续指令都执行完,才录制。
   在网上看到有人可以实现一边录制一边播放,但是这个它只需要处理一段数据,和我们的需求差别较大,不适用。
   有没有谁有解决办法。

解决方案 »

  1.   


    早已经试过,我是想着先录音,然后在OnTimer事件里面处理解析,中间间隔几秒,但是调试发现在OnTimer里面的代码执行之前,是没有实际录音的,只是生成了一个音频文件往里面写了个文件头。
      

  2.   

    我大概猜到你在什么地方有问题了。
    苹果的这个类库是不存在你说的那个问题的,录音的内部过程是这样的:
    1,准备,检查设备、设置、音频文件分配地址等。这个过程中会产生文件头。
    2,开始录音,这个时候或者在此之前,写文件头到音频文件。录音的实时的数据保存在内存内建的缓冲区,直到存满或者结束录音,才会从内存写到音频文件。
    3,结束,收尾操作。5s肯定不会写满内存的缓冲区,你stop一下再看看。我刚才试过了,两种方法都不存在你说的问题。