我有一个 22kHz 的波形文件,想要一个 22kHz 的 m4a 文件。带有预设 AVAssetExportPresetAppleM4A 的 AVAssetExportSession 会自动将我的 wav 转换为 44kHZ。我尝试了不同的预设和 nil 来创建 ExportSession,但没有成功。
有没有办法设置 AVAssetExportSession 的自定义导出属性,或者我需要一种完全不同的方法,如如何将 WAV 文件转换为 M4A 中所述的方法??
这是我到目前为止的代码,如果你想要一个 44kHz 文件,它会很好用:
AVURLAsset *wavAsset = [AVURLAsset URLAssetWithURL:[NSURL fileURLWithPath:wavPath] options:optionsDict];
AVMutableComposition *mutableComposition = [AVMutableComposition composition];
[mutableComposition insertTimeRange:CMTimeRangeMake(kCMTimeZero, wavAsset.duration)
ofAsset:wavAsset atTime:kCMTimeZero error:&error];
AVAssetExportSession *exportSession = [[AVAssetExportSession alloc]
initWithAsset:[mutableComposition copy] presetName:AVAssetExportPresetAppleM4A];
exportSession.outputURL = [NSURL fileURLWithPath:m4aPath];
exportSession.outputFileType = AVFileTypeAppleM4A;
[exportSession exportAsynchronouslyWithCompletionHandler:^{
switch (exportSession.status) {
case AVAssetExportSessionStatusCompleted: {
[exportSession release];
completionHandler(nil);
break;
}
case AVAssetExportSessionStatusFailed: {
NSLog(@"There was an error while exporting the file: %@", exportSession.error);
completionHandler(exportSession.error);
break;
}
// ... handle some other cases...
default: {
break;
}
}
}];
如果我只是错过了一些东西,那就太好了。
提前致谢, 多姆