3

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

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

  1. 我设置了我的 AVAudioSession

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

  2. 我设置了我的播放器和录音机,它们都指向同一个 URL。

    audioRecorder = [[AVAudioRecorder alloc] initWithURL:soundFileURL settings:recordSettings error:&error];

    //设置音频播放 audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:soundFileURL error:&error];

  3. 我准备演奏和录音

    [录音机准备录音];[音频播放器准备播放];

一切都顺利进行了一段时间。然后突然,播放器停止,其当前时间归零。

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

有人对问题是什么或如何调试有任何建议吗?

提前致谢!

4

1 回答 1

2

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

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

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

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

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

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

于 2013-10-04T21:52:40.183 回答