iOS - 如何将混合音频合成导出到文件大小最小的文件?
Posted
技术标签:
【中文标题】iOS - 如何将混合音频合成导出到文件大小最小的文件?【英文标题】:iOS - how can I export a mix audio composition to a file of smallest file size? 【发布时间】:2013-09-12 13:24:29 【问题描述】:我用AVAudioRecorder
录制声音,输出文件格式为.caf
。然后我用AVMutableComposition
在我录制的音频上添加背景声音(也是.caf
格式)。当我尝试播放它时,它可以完美运行。
现在我想将其导出并使用以下代码保存。但是,导出文件的文件大小增加了很多。 (比如我录制的音频是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】:在此处阅读有关文件类型的更多信息:
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
【讨论】:
嗨@Grzegorz,感谢您的参考。我尝试将 export.outputFileType 更改为 AVFileTypeAIFC,并将导出文件 export.m4a 更改为 export.aifc。但是,它不起作用。这是错误消息:由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“无效的输出文件类型”。我错过了什么吗? 你能粘贴supportedFileTypes的输出吗? developer.apple.com/library/mac/documentation/AVFoundation/… 啊,当你初始化课程时,你也有 AVAssetExportPresetAppleM4A - 我更新了我的答案。 这里是supportedFileTypes的输出:2013-09-12 21:56:20.648 VoiceRecorder[4831:c07] Supported Output: ("com.apple.m4a-audio")...好像它只支持 AVFileTypeAppleM4V。 哦,那我应该使用什么预设名称?以上是关于iOS - 如何将混合音频合成导出到文件大小最小的文件?的主要内容,如果未能解决你的问题,请参考以下文章
嗨我需要建立一个网站来混合两个音频文件并只导出一个,我该怎么做?