2013-05-12 64 views
3

我需要在iPhone上录制音频(讲座等),并通过耳机直接播放。同时使用AVAudioRecorder和AvAudioPlayer

我有代码可以工作 - 大部分时间!

  1. 设置我AVAudioSession

    [AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord错误:零]

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

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

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

  3. 我准备播放和录制

    [audioRecorder prepareToRecord] [audioPlayer prepareToPlay];

一切进展良好一段时间。然后突然,玩家停下来,目前的时间为零。

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

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

在此先感谢!

+0

这似乎是一种竞争条件。如果记录器没有足够快地插入数据,则播放器将到达最后并停止。看看这个问题:http://stackoverflow.com/questions/7184341/ios-sample-code-for-simultaneous-record-and-playback – borrrden 2013-05-13 03:48:40

回答

2

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

我正在努力与同样的事情;我想知道你是否找到了一个好的解决方案。我正在制作一个类似的项目(我希望能够录制,并在录制过程中以很小的延迟进行播放)。

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

我发现的是,如果播放器启动时,如果在该文件中有3秒钟的声音(通过.duration属性),即使AVAudioRecorder在播放器启动后3秒钟后也会停止。

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

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

相关问题