iOS - 如何将混合音频合成导出到最小文件大小的文件?

时间:2013-09-12 13:24:30

标签: ios audio avfoundation core-audio avmutablecomposition

我使用AVAudioRecorder录制声音,输出文件格式为.caf。然后我使用.caf在我录制的音频上添加背景声音(也是AVMutableComposition格式)。当我尝试播放它时它非常有效。

现在我想导出它并使用以下代码保存它。但是,导出文件的文件大小增加了很多。 (例如,我录制的音频为16045byte,背景声音为50400byte,导出的文件为246472byte,大于两个文件的总和。)

AVAssetExportSession *export = [[AVAssetExportSession alloc] initWithAsset:composition presetName:AVAssetExportPresetAppleM4A];
export.audioMix = audioMix;
export.outputFileType = AVFileTypeAppleM4A;
NSString *exportURL = [NSString stringWithFormat:@"%@/export.m4a", DOCUMENTS_FOLDER];
NSURL *outputURL = [NSURL fileURLWithPath:exportURL];
export.outputURL = outputURL;

[export exportAsynchronouslyWithCompletionHandler:^{
    int exportStatus = export.status;

    switch (exportStatus) {
       // check the status and do the handling
    }
}];

}

那么,有人可以教我如何使输出音频文件变小吗?感谢。

1 个答案:

答案 0 :(得分:0)

在此处阅读有关fileTypes的更多信息:

https://developer.apple.com/library/mac/documentation/AVFoundation/Reference/AVFoundation_Constants/Reference/reference.html#//apple_ref/doc/uid/TP40009539

NSString *const AVFileTypeAIFC;
NSString *const AVFileTypeAIFF;
NSString *const AVFileTypeAMR;
NSString *const AVFileTypeCoreAudioFormat;
NSString *const AVFileTypeAppleM4V;
NSString *const AVFileTypeMPEG4;
NSString *const AVFileTypeAppleM4A;
NSString *const AVFileTypeQuickTimeMovie;
NSString *const AVFileTypeWAVE

AIFC可能对您有意义,因为它已被压缩。

您还必须将presetName:AVAssetExportPresetAppleM4A更新为presetName:AVAssetExportPresetPassthrough