2010-03-31 74 views
0
AVAudioSession *audioSession = [AVAudioSession sharedInstance]; 
NSError *err = nil; 
[audioSession setCategory:AVAudioSessionCategoryPlayAndRecord error:&err]; 
if(err){ 
    NSLog(@"audioSession: %@ %d %@", [err domain], [err code], [[err userInfo] description]); 
    return; 
} 
[audioSession setActive:YES error:&err]; 
err = nil; 
if(err){ 
    NSLog(@"audioSession: %@ %d %@", [err domain], [err code], [[err userInfo] description]); 
    return; 
} 

NSMutableDictionary *recordSetting = [[NSMutableDictionary alloc] init]; 

[recordSetting setValue:[NSNumber numberWithInt: kAudioFormatAppleIMA4] forKey:AVFormatIDKey]; 
[recordSetting setValue:[NSNumber numberWithFloat:40000.0] forKey:AVSampleRateKey]; 
[recordSetting setValue:[NSNumber numberWithInt: 2] forKey:AVNumberOfChannelsKey]; 
[recordSetting setValue:[NSNumber numberWithInt:16] forKey:AVLinearPCMBitDepthKey]; 
[recordSetting setValue:[NSNumber numberWithBool:NO] forKey:AVLinearPCMIsBigEndianKey]; 
[recordSetting setValue:[NSNumber numberWithBool:NO] forKey:AVLinearPCMIsFloatKey]; 

// Create a new dated file 
NSDate *now = [NSDate dateWithTimeIntervalSinceNow:0]; 
NSString *caldate = [now description]; 
NSString *recorderFilePath = [[NSString stringWithFormat:@"%@/%@.caf", DOCUMENTS_FOLDER, caldate] retain]; 

NSLog(recorderFilePath); 
url = [NSURL fileURLWithPath:recorderFilePath]; 
err = nil; 
recorder = [[ AVAudioRecorder alloc] initWithURL:url settings:recordSetting error:&err]; 
if(!recorder){ 
    NSLog(@"recorder: %@ %d %@", [err domain], [err code], [[err userInfo] description]); 
    UIAlertView *alert = 
    [[UIAlertView alloc] initWithTitle: @"Warning" 
           message: [err localizedDescription] 
           delegate: nil 
        cancelButtonTitle:@"OK" 
        otherButtonTitles:nil]; 
    [alert show]; 
    [alert release]; 
    return; 
} 

//prepare to record 
[recorder setDelegate:self]; 
[recorder prepareToRecord]; 
recorder.meteringEnabled = YES; 

BOOL audioHWAvailable = audioSession.inputIsAvailable; 
if (! audioHWAvailable) { 
    UIAlertView *cantRecordAlert = 
    [[UIAlertView alloc] initWithTitle: @"Warning" 
           message: @"Audio input hardware not available" 
           delegate: nil 
        cancelButtonTitle:@"OK" 
        otherButtonTitles:nil]; 
    [cantRecordAlert show]; 
    [cantRecordAlert release]; 
    return; 
} 
// [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(updateTimerDisplay) userInfo:nil repeats:YES]; 
// [recorder recordForDuration:(NSTimeInterval)10 ]; 
// [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(updateTimerDisplay) userInfo:nil repeats:YES]; 

回答

1

你从来没有致电:

[recorder record]; 

...所以永远录音机开始录音。

这是我从来没有做过的那种错误。至少,这是我永远不会承认的错误。 ;-)

+0

谢谢,但iam使用持续时间方法的记录知道为什么它不工作 – kumaryr 2010-04-01 05:24:12

+0

对不起,我评论说,一个权利,我试过,也是我没有得到 – kumaryr 2010-04-01 05:43:01

+0

如何我可以保存一个音频文件为MP3或是他们的任何api将caf转换为mp3音频文件格式。 – kumaryr 2010-04-01 11:18:55