如何记录speex格式的音频文件?

时间:2014-03-31 12:05:09

标签: ios avaudioplayer avaudiorecorder

我搜索过支持的格式音频文件,但我发现只有以下格式。

kAudioFormatLinearPCM               = 'lpcm',
kAudioFormatAC3                     = 'ac-3',
kAudioFormat60958AC3                = 'cac3',
kAudioFormatAppleIMA4               = 'ima4',
kAudioFormatMPEG4AAC                = 'aac ',
kAudioFormatMPEG4CELP               = 'celp',
kAudioFormatMPEG4HVXC               = 'hvxc',
kAudioFormatMPEG4TwinVQ             = 'twvq',
kAudioFormatMACE3                   = 'MAC3',
kAudioFormatMACE6                   = 'MAC6',
kAudioFormatULaw                    = 'ulaw',
kAudioFormatALaw                    = 'alaw',
kAudioFormatQDesign                 = 'QDMC',
kAudioFormatQDesign2                = 'QDM2',
kAudioFormatQUALCOMM                = 'Qclp',
kAudioFormatMPEGLayer1              = '.mp1',
kAudioFormatMPEGLayer2              = '.mp2',
kAudioFormatMPEGLayer3              = '.mp3',
kAudioFormatTimeCode                = 'time',
kAudioFormatMIDIStream              = 'midi',
kAudioFormatParameterValueStream    = 'apvs',
kAudioFormatAppleLossless           = 'alac',
kAudioFormatMPEG4AAC_HE             = 'aach',
kAudioFormatMPEG4AAC_LD             = 'aacl',
kAudioFormatMPEG4AAC_ELD            = 'aace',
kAudioFormatMPEG4AAC_ELD_SBR        = 'aacf',
kAudioFormatMPEG4AAC_ELD_V2         = 'aacg',    
kAudioFormatMPEG4AAC_HE_V2          = 'aacp',
kAudioFormatMPEG4AAC_Spatial        = 'aacs',
kAudioFormatAMR                     = 'samr',
kAudioFormatAudible                 = 'AUDB',
kAudioFormatiLBC                    = 'ilbc',
kAudioFormatDVIIntelIMA             = 0x6D730011,
kAudioFormatMicrosoftGSM            = 0x6D730031,
kAudioFormatAES3                    = 'aes3'

我想以 speex 的格式录制音频文件,因为它足以录制语音。 core audio framework可以吗?

参考:我找到了this lib。但这太复杂了。我想使用AVAudioPlayer or AVAudioRecorder.

进行简单控制

2 个答案:

答案 0 :(得分:2)

我曾经有过record audio with mp3 format on the iPhone的经历。如您所见,它未列在您的列表中。我最终使用LinearPCM,然后将其转换为mp3。我认为这种模式是你唯一需要的模式。没有标准的方法可以帮助你,也是我所关注的。

aac以外的任何其他格式进行录制是iOS上的一大难题。

答案 1 :(得分:1)

我使用 OGG Vorbis 进行音频播放,与 OGG Speex 相同..为此我使用了IDZAQAudioPlayer上的库... < / p>

对于OGG Speex音频录制,我曾使用过这个库OGGSpeex

如果你需要进一步的信息来实现它或其他任何事情随时问...

要真正减少音频录制的大小,您可以使用AudioFormat : MPEG4AAC创建 135KB文件,录制60秒 ..

当然.. Code for AAC Recording

    NSMutableDictionary *recordSetting = [[NSMutableDictionary alloc] init];
    [recordSetting setValue:[NSNumber numberWithInt:kAudioFormatMPEG4AAC] forKey:AVFormatIDKey];
    [recordSetting setValue:[NSNumber numberWithFloat:8000.0] forKey:AVSampleRateKey];
    [recordSetting setValue:[NSNumber numberWithInt: 1] forKey:AVNumberOfChannelsKey];
    [recordSetting setValue:[NSNumber numberWithInt:AVAudioQualityLow] forKey:AVEncoderAudioQualityKey];

    AVAudioRecorder *recorder = [[AVAudioRecorder alloc] initWithURL:outputFileURL settings:recordSetting error:nil];
    recorder.delegate = self;
    recorder.meteringEnabled = YES;
    [recorder prepareToRecord];