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

我有有效的代码 - 大多数时候!

  • 我设置了我的 AVAudioSession

    [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord 错误:nil];
  • 我设置了我的播放器和录音机,它们都指向同一个 URL。

    audioRecorder = [[AVAudioRecorder 分配]
    initWithURL:soundFileURL
    设置:记录设置
    错误:&错误];

    //设置音频播放
    音频播放器 = [[AVAudioPlayer 分配]
    initWithContentsOfURL:soundFileURL
    错误:&错误];
  • 我准备播放和录音

    [audioRecorderprepareToRecord];
    [音频播放器准备播放];

  • 一切进展顺利一段时间。然后突然,玩家停下来,它的当前时间变为零。

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

    有人对问题出在哪里或如何调试有任何建议吗?

    提前致谢!

    最佳答案

    总结以下漫谈:根据我的经验,只要文件有数据,AVAudioPlayer 就会在初始化时播放。

    我也在为同样的事情苦苦挣扎;我想知道你是否找到了一个好的解决方案。我正在做一个类似的项目(我希望能够在录制时录制并以很小的延迟播放)。

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

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

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

    如果我们能告诉 AVAudioPlayer 继续读取文件就好了!

    关于ios - 同时使用 AVAudioRecorder 和 AvAudioPlayer,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16512727/

    10-12 21:09