我正在处理的应用程序记录音频,并在从iOS8更新到iOS9后开始无法在iPad4上录制。
到目前为止使用的录像机设置是:
audioSegmentURL = ... (a URL with fileextension @"mp4");
recorderSettings = @{ AVFormatIDKey: @(kAudioFormatMPEG4AAC),
AVEncoderAudioQualityKey: @(AVAudioQualityMin),
AVEncoderBitRateKey: @(8),
AVNumberOfChannelsKey: @(1),
AVSampleRateKey: @(11025.0)
};
这是AVAudioRecorder
:
NSError *err;
AVAudioRecorder *audioRecorder = [[AVAudioRecorder alloc] initWithURL:audioSegmentURL settings:recorderSettings error:&err];
此调用似乎已成功,err
为nil
。
对prepareToRecord
的调用会返回NO
:
BOOL res = [audioRecorder prepareToRecord];
不幸的是我没有iPad4。 iPad Mini2上不会出现此问题。 (我也有iPad Air,但它不支持AAC硬件编码,它使用不同的录制设置。)
这适用于iOS8。将iPad4升级到iOS9后,它开始失败。
有人知道,哪些设置适用于带iOS9的iPad4?
非常感谢。
EDIT1:
对于测试,我让录音在iPad4上使用:
audioSegmentURL = ... (a URL with fileextension @"caf");
recorderSettings = @{ AVFormatIDKey: @(kAudioFormatAppleIMA4),
AVNumberOfChannelsKey: @(1),
AVSampleRateKey: @(16000.0)
};
录音似乎奏效了。然而,在录制之后,我将几个声音片段附加在一起,而这似乎在iPad4上失败了。
合成使用AVMutableComposition
,其AVMutableCompositionTrack
个AVAssetExportSession
,AVFileTypeAppleM4A
,输出文件类型设置为M4A
。
iOS4上的IMA4
与iPad上的somemodel
不兼容吗?
答案 0 :(得分:0)
您的比特率在首次录制设置词典中看起来不正确。尝试删除AVEncoderBitRate键。我不知道这是否重要,但你可能想要一个以m4a结尾的文件名,而不是mp4作为一个只有音频的文件。