Im使用AVAssetExportSession
轉換*.caf
文件,它在4.0模擬器和我的iPhone 4測試設備上運行得非常好。AVSsetExportSession在iPhone 3G上失敗 - 但不在iPhone 4上
可悲的是它總是失敗,在iPhone 3G具有以下功能:
AVAssetExportSession *exportSession = [AVAssetExportSession exportSessionWithAsset:avAsset presetName:AVAssetExportPresetAppleM4A];
if (exportSession == nil) {
NSLog(@"no export session");
return NO;
}
exportSession.outputURL = [NSURL fileURLWithPath:self.tempDir];
exportSession.outputFileType = AVFileTypeAppleM4A;
[exportSession exportAsynchronouslyWithCompletionHandler:^{
if (AVAssetExportSessionStatusCompleted == exportSession.status) {
NSLog(@"AVAssetExportSessionStatusCompleted");
} else if (AVAssetExportSessionStatusFailed == exportSession.status) {
// a failure may happen because of an event out of your control
// for example, an interruption like a phone call comming in
// make sure and handle this case appropriately
NSLog(@"AVAssetExportSessionStatusFailed");
NSLog(@"%@", [exportSession.error description]);
} else {
NSLog(@"Export Session Status: %d", exportSession.status);
}
}];
以下錯誤拋出的每一次。
Error Domain=AVFoundationErrorDomain Code=-11823 "Cannot Save" UserInfo=0x16fb20 {NSLocalizedRecoverySuggestion=Try saving again., NSLocalizedDescription=Cannot Save}
可能是什麼原因呢?
我可以在設備上播放caf文件。使用'exportPresetsCompatibleWithAsset'我發現在iPhone 3G上只有'AVAssetExportPresetAppleM4A'編解碼器可用 - 所以我的設置應該很好.. –
你能寫一個文件到'self.tempDir',並且有足夠的空間用於預期的大小的文件? –
是的,我在轉換之前使用AVAudioRecorder將文件記錄到self.tempDir。 –