AVAudioRecorder文件太大了

时间:2011-06-19 18:38:14

标签: iphone objective-c ios cocoa-touch avaudiorecorder

我正在使用AVAudioRecorder录制音频,文件太大。像20秒,出来是1.2mb?我怎样才能让它变小? 感谢。

3 个答案:

答案 0 :(得分:7)

这是我发现的最佳方式,您也可以使用它:

NSMutableDictionary *settings = [[NSMutableDictionary alloc] initWithCapacity:0];

[settings setValue :[NSNumber numberWithInt:kAudioFormatMPEG4AAC] forKey:AVFormatIDKey];//格式
[settings setValue:[NSNumber numberWithFloat:8000.0] forKey:AVSampleRateKey]; //采样8000次
[settings setValue:[NSNumber numberWithInt: 1] forKey:AVNumberOfChannelsKey];//声道
[settings setValue :[NSNumber numberWithInt:8] forKey:AVLinearPCMBitDepthKey];//位深度
[settings setValue :[NSNumber numberWithBool:NO] forKey:AVLinearPCMIsBigEndianKey];
[settings setValue :[NSNumber numberWithBool:NO] forKey:AVLinearPCMIsFloatKey];
//Encoder
[settings setValue :[NSNumber numberWithInt:12000] forKey:AVEncoderBitRateKey];//采样率
[settings setValue :[NSNumber numberWithInt:8] forKey:AVEncoderBitDepthHintKey];//位深度
[settings setValue :[NSNumber numberWithInt:8] forKey:AVEncoderBitRatePerChannelKey];//声道采样率
[settings setValue :AVAudioQualityMin           forKey:AVEncoderAudioQualityKey];//编码质量

答案 1 :(得分:3)

尝试使用其他格式和/或质量设置。这样的东西应该是一个非常小的文件:

NSDictionary *recordSettings =
    [[NSDictionary alloc] initWithObjectsAndKeys:
     [NSNumber numberWithFloat: 44100.0], AVSampleRateKey,
     [NSNumber numberWithInt: kAudioFormatAppleIMA4], AVFormatIDKey,
     [NSNumber numberWithInt: 1], AVNumberOfChannelsKey,
     [NSNumber numberWithInt: AVAudioQualityMedium],
     AVEncoderAudioQualityKey,
     nil];

    AVAudioRecorder *newRecorder =
    [[AVAudioRecorder alloc] initWithURL: myURL
                                settings: recordSettings
                                   error: nil];

答案 2 :(得分:1)

录制的音频文件的大小取决于以下因素。还有其他因素。但值得注意的是以下内容 1)采样率
     22050Hz采样率将产生比44000Hz采样率小得多的文件

2)频道
     立体声输出(2声道)将产生两倍于单声道(1声道)的文件大小。

3)比特率
   每个样本使用的比特。

您需要提供最适合您的设置,以便它不会影响质量和尺寸。