同时使用AVAudioRecorder和AvAudioPlayer

时间:2013-05-12 22:34:46

标签: ios avaudioplayer

我需要在iPhone上录制音频(讲座等)并直接通过耳机播放。

我的代码有效 - 大多数时候都是这样!

  1. 我设置了AVAudioSession

    [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord error:nil];

  2. 我设置了我的播放器和录音机,两者都指向同一个网址。

    audioRecorder = [[AVAudioRecorder alloc]                   initWithURL:soundFileURL                   设置:recordSettings                   误差:&安培;错误];

    //设置音频播放 audioPlayer = [[AVAudioPlayer alloc]                initWithContentsOfURL:soundFileURL                误差:&安培;错误];

  3. 我准备播放和录制

    [audioRecorder prepareToRecord]; [audioPlayer prepareToPlay];

  4. 一切都进展顺利。然后突然,玩家停止,当前时间变为零。

    它看起来并不像是被解除分配,因为我可以从开始位置开始播放录制好的声音。停止发生似乎是随机的,每次都在不同的时间。

    任何人都有任何关于问题是什么或如何调试的建议?

    提前致谢!

1 个答案:

答案 0 :(得分:2)

总结以下的漫游:根据我的经验,AVAudioPlayer只会在文件初始化时才播放文件。

我正在努力做同样的事情;我想知道你是否找到了一个好的解决方案。我正在开展一个类似的项目(我希望能够录制,并在录制时稍微延迟播放)。

我首先创建一个AVAudioRecorder,它工作正常。然后我用initWithContentsOfURL启动一个AVAudioPlayer,指向同一个文件。

我发现如果播放器启动时该文件中有3秒的声音(通过.duration属性),它将在3秒后停止,即使AVAudioRecorder在此之后仍然继续。

我试图通过在第一个播放器接近录制的初始持续时间结束时创建第二个播放器来解决这个问题,但这会导致音频丢失,我似乎可以摆脱它。

如果我们只能告诉AVAudioPlayer继续阅读文件!