1

我附上了我为记录数据而实施的内容,它以.wav甲酸盐形式保存,但我的问题是文件占用了太多的大小(即 10 秒占用了 86kb),我想要 5 分钟 300kb 的大小,我试过了这么多方法,你能帮帮我吗?

- (IBAction) startRecording
{
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;
    }


recordSetting = [[NSMutableDictionary alloc] init];
    [recordSetting setValue :[NSNumber numberWithInt:kAudioFormatLinearPCM] forKey:AVFormatIDKey];
[recordSetting setValue:[NSNumber numberWithFloat:8000.0] forKey:AVSampleRateKey];
[recordSetting setValue:[NSNumber numberWithInt: 1] forKey:AVNumberOfChannelsKey];
    [recordSetting setValue:[NSNumber numberWithInt:8] forKey:AVLinearPCMBitDepthKey];
    [recordSetting setValue:[NSNumber numberWithBool:NX_BigEndian == NXHostByteOrder()] forKey:AVLinearPCMIsBigEndianKey];
    [recordSetting setValue:[NSNumber numberWithBool:0] forKey:AVLinearPCMIsFloatKey];
recorderFilePath = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"abc.wav"] ;

    NSLog(@"recorderFilePath: %@",recorderFilePath);

    NSURL *url = [NSURL fileURLWithPath:recorderFilePath];


    err = nil;

    NSData *audioData = [NSData dataWithContentsOfFile:[url path] options: 0 error:&err];
    if(audioData)
    {
        NSFileManager *fm = [NSFileManager defaultManager];
        [fm removeItemAtPath:[url path] error:&err];
    }

    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];
        }

    //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];

        return;
    }

    [recorder record];
 currentTimeUpdateTimer = [NSTimer scheduledTimerWithTimeInterval:0.5
                                                              target:self selector:@selector(updateAudioDisplay)
                                                            userInfo:NULL repeats:YES];


}

提前非常感谢。

4

1 回答 1

1

将格式 ID 更改为kAudioFormatAppleIMA4kAudioFormatMPEG4AAC。这些将产生更小的音频文件。评论中提到的 WAV 是一种未压缩的音频格式。所以音频文件会很大。

于 2013-03-06T13:36:45.797 回答