【问题标题】:How to record speex format audio file?如何录制 speex 格式的音频文件?
【发布时间】:2014-03-31 12:05:09
【问题描述】:

我搜索了支持格式的音频文件,但只找到了以下格式。

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.进行简单的控制

【问题讨论】:

  • 您必须使用您找到的库,因为 Apple 不包含 speex 音频编解码器。
  • 谢谢@rckoenes。我可以用aac、ilbc..等格式录制。但是当我们用speex 录制时,大小太小了。所以只有我想找出答案。

标签: ios avaudioplayer avaudiorecorder


【解决方案1】:

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

以aac 以外的任何其他格式录制在 iOS 上都会很痛苦。

【讨论】:

  • 谢谢你的朋友。我可以用aac录音。我考虑到了,但我需要减小大小,因为这是语音文件。 aac 文件比 speex 和 ilbc 格式大 5 倍。所以只有我试图找出这个。任何方式为您 +1 :)
  • @Mani 好吧,使用 arc 录制大约需要 45 兆字节,持续 30 分钟。并且不要忘记您实际上可以降低音频录制的质量或设置您自己的自定义比特率。尝试减小尺寸。
  • 是的。我已经降低到最小采样比特率和最小音频比特率,这就是我得到它的原因(只有 5 倍)。否则我会得到太大的文件。
【解决方案2】:

我使用 OGG Vorbis 进行音频播放,这与 OGG Speex 相同。为此,我使用了IDZAQAudioPlayer 上提供的库…

对于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];

【讨论】:

  • 您可以发布 AAC 的设置吗?我正在使用 AAC 设置,但它的大小为 200KB,持续 60 秒?
猜你喜欢
  • 2011-06-19
  • 2014-02-13
  • 2012-01-15
  • 1970-01-01
  • 1970-01-01
  • 2011-03-25
  • 1970-01-01
  • 2010-09-21
  • 2011-08-22
相关资源
最近更新 更多