【问题标题】:Initialization of AVAudioRecorder with aac用 aac 初始化 AVAudioRecorder
【发布时间】:2010-05-18 19:36:24
【问题描述】:

我想用aac文件格式初始化一个AVAudioRecorder,但它不起作用...

以下代码有什么问题?

soundFilePath = [soundFilePath stringByAppendingPathExtension:@"aac"];
NSURL *url = [NSURL fileURLWithPath:soundFilePath isDirectory:FALSE];
NSMutableDictionary *recordSetting = [[NSMutableDictionary alloc] init];
[recordSetting setValue:[NSNumber numberWithInt: 'aac '] forKey:AVFormatIDKey];                                     //General Audio Format Settings 
[recordSetting setValue:[NSNumber numberWithFloat:44100.0] forKey:AVSampleRateKey];                                 //          "
[recordSetting setValue:[NSNumber numberWithInt: 2] forKey:AVNumberOfChannelsKey];                                  //          "
[recordSetting setValue:[NSNumber numberWithInt: 32] forKey:AVLinearPCMBitDepthKey];                                //Linear PCM Format Settings 
[recordSetting setValue:[NSNumber numberWithBool:NO] forKey:AVLinearPCMIsBigEndianKey];                             //          "
[recordSetting setValue:[NSNumber numberWithBool:NO] forKey:AVLinearPCMIsFloatKey];                                 //          "
[recordSetting setValue:[NSNumber numberWithInt:AVAudioQualityLow] forKey:AVEncoderAudioQualityKey];                //Encoder Settings 
[recordSetting setValue:[NSNumber numberWithInt:96] forKey:AVEncoderBitRateKey];                                    //          "
[recordSetting setValue:[NSNumber numberWithInt:16] forKey:AVEncoderBitDepthHintKey];                               //          "
[recordSetting setValue:[NSNumber numberWithInt:AVAudioQualityLow] forKey:AVSampleRateConverterAudioQualityKey];    //Sample Rate Conversion Settings

_recorder = [[AVAudioRecorder alloc] initWithURL:url settings:recordSetting error:nil];

这个分配只返回 nil...

任何帮助将不胜感激...!

【问题讨论】:

    标签: iphone audio avaudioplayer avaudiorecorder


    【解决方案1】:

    删除所有关于PCM的行,将formatIDKey的行改为

    [NSNumber numberWithInt: kAudioFormatMPEG4AAC], AVFormatIDKey,
    

    顺便说一句,使用m4a 作为扩展名比aac 更合适,因为aac 扩展名用于MPEG2 AAC 格式。

    【讨论】:

      【解决方案2】:

      iOS 5 允许您录制到 AAC。尝试对 AVFormatIDKey 使用“kAudioFormatMPEG4AAC”。

      【讨论】:

        【解决方案3】:

        没有设置可录制到 AAC,但您可以即时转换:

        https://github.com/michaeltyson/TPAACAudioConverter

        【讨论】:

        • 那个API在中断时出现了故障!
        【解决方案4】:

        [recordSetting setValue :[NSNumber numberWithInt:kAudioFormatMPEG4AAC_HE_V2] forKey:AVFormatIDKey]; 其格式为枚举。尝试查看枚举。 'aac' 没有 formatIDKey。它有aacp等。

        【讨论】:

          【解决方案5】:

          只需使用以下设置在 aac 文件中录制人声。

              recordSetting = [[NSMutableDictionary alloc] init];
              [recordSetting setValue:[NSNumber numberWithInt:kAudioFormatAppleLossless] forKey:AVFormatIDKey];
              [recordSetting setValue:[NSNumber numberWithFloat:44100.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];

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-09-18
            • 2019-12-27
            • 2016-10-15
            • 2013-07-04
            相关资源
            最近更新 更多