2010-04-09 63 views
0

这是一个iPhone相关的问题: 我使用openAL播放一些声音(我必须管理增益,音高等)。 我想录制我正在播放的内容,并使用AVAudioRecorder,但当我“prepareToRecord”时,openAL停止播放音频。 什么问题? 这里是记录IBAction为我用:iPhone - openAL停止播放,如果我用AVAudioRecorder录制

- (IBAction) record: (id) sender 
{ 
NSError *error; 
    NSMutableDictionary *settings = [NSMutableDictionary dictionary]; 
    [settings setValue: [NSNumber numberWithInt:kAudioFormatLinearPCM] forKey:AVFormatIDKey]; 
    [settings setValue: [NSNumber numberWithFloat:8000.0] forKey:AVSampleRateKey]; 
    [settings setValue: [NSNumber numberWithInt: 1] forKey:AVNumberOfChannelsKey]; 
    [settings setValue: [NSNumber numberWithInt:16] forKey:AVLinearPCMBitDepthKey]; 
    [settings setValue: [NSNumber numberWithBool:NO] forKey:AVLinearPCMIsBigEndianKey]; 
    [settings setValue: [NSNumber numberWithBool:NO] forKey:AVLinearPCMIsFloatKey]; 
    NSURL *url = [NSURL fileURLWithPath:FILEPATH]; 
    self.recorder = [[AVAudioRecorder alloc] initWithURL:url settings:settings error:&error]; 
    self.recorder.delegate = self; 
    self.recorder.meteringEnabled = YES; 
    [self.recorder prepareToRecord]; 
    [self.recorder record]; 
} 

感谢

编辑:

我AudioQueue录制过尝试。 这时候听起来这个代码后停止:

status = AudioQueueEnqueueBuffer(recordState.queue, recordState.buffers[i], 0, NULL); 

所以它可以记录当iPhone与OpenAL的打???

再次感谢

回答

0

FILEPATH与另一个文件正在播放的路径相同......? 如果recordprepareToRecord是从同一个地方叫......其实你并不需要调用prepareToRecord ... record将做的工作...... 看到

http://developer.apple.com/iphone/library/documentation/AVFoundation/Reference/AVAudioRecorder_ClassReference/Reference/Reference.html#//apple_ref/occ/instm/AVAudioRecorder/prepareToRecord

+0

谢谢您的回答。 否FILEPATH指向Documents文件夹,播放的文件位于Bundle中。我试图评论prepareToRecord,但它仍然停止。 我发现当我运行记录时,alGetSourcei(source,AL_SOURCE_STATE,&state);总是返回状态AL_PLAYING。 因此,对于openAL文件仍在播放。 – 2010-04-09 10:39:40