这个问题一直让我发疯。我正在尝试使用 AVAsset 在我的 Cocoa 应用程序中标记一些歌曲,我将标签信息添加到它并使用 AVAssetExportSession 导出它。但是,无论我做什么,导出都会失败并出现错误(OSStatus error -620.)" (notEnoughMemoryErr: insufficient physical memory)
。在我的 MacBook 上,当我这样做时,我总是有 3-4 演出或更多的空闲 RAM,所以这是不对的。我尝试删除所有标签信息,以防在某处导致错误,但这没有帮助。
这是代码:
AVURLAsset *asset = [AVURLAsset URLAssetWithURL:[NSURL fileURLWithPath:[tempSongPath stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]] options:nil];
AVAssetExportSession *session;
session = [AVAssetExportSession exportSessionWithAsset:asset presetName:AVAssetExportPresetAppleM4A];
session.outputFileType = AVFileTypeAppleM4A;
NSURL *outputURL = [NSURL URLWithString:[[NSString stringWithFormat:@"%@Path/%@", NSTemporaryDirectory(), @"output.m4a"] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
session.outputURL = outputURL;
NSLog(@"Asset: %@", asset);
NSLog(@"Session %@", session);
[session exportAsynchronouslyWithCompletionHandler:^{
if (AVAssetExportSessionStatusCompleted == session.status) {
NSLog(@"Completed");
}
NSString *cause;
NSString *stringError;
if (session.error)
{
NSLog(@"%@", session.error);
stringError = [session.error localizedDescription];
cause = session.error.localizedFailureReason;
}
else
stringError = @"Unknown error";
NSLog(@"Error: %@ because %@", stringError, cause);
for (NSString *key in session.error.userInfo.allKeys)
{
NSLog(@"%@: %@", key, [session.error.userInfo objectForKey:key]);
}
}];
有什么帮助吗?我已经被这个问题困扰了整整两天。