Kan*_*sad 16 objective-c ios avassetexportsession
我试图从iPod-Library导出音频文件.我的目标是使用此iPod-Library文件在应用程序文档文件夹中创建新文件.它无法仅为某些项目创建文件.以下是我的代码段.
AVURLAsset *songAsset = [AVURLAsset URLAssetWithURL: url options:nil];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
AVAssetExportSession *exporter = [[AVAssetExportSession alloc]
initWithAsset: songAsset
presetName: AVAssetExportPresetAppleM4A];
exporter.outputFileType = @"com.apple.m4a-audio";
NSString *songName = [filename stringByAppendingString:@".m4a"];
NSString *musicfilepath = [documentsDirectory stringByAppendingPathComponent:@"musics/"];
[[NSFileManager defaultManager] createDirectoryAtPath:musicfilepath withIntermediateDirectories:YES attributes:nil error:nil];
NSString *exportFile = [musicfilepath stringByAppendingPathComponent:songName];
NSError *error1;
if([[NSFileManager defaultManager] fileExistsAtPath:exportFile])
{
[[NSFileManager defaultManager] removeItemAtPath:exportFile error:&error1];
}
NSURL* exportURL = [[NSURL fileURLWithPath:exportFile] retain];
exporter.outputURL = exportURL;
Run Code Online (Sandbox Code Playgroud)
尝试使用错误处理程序块时,如下所示出现错误:
[exporter exportAsynchronouslyWithCompletionHandler:^{
int exportStatus = exporter.status;
switch (exportStatus) {
case AVAssetExportSessionStatusFailed: {
NSError *exportError = exporter.error;
NSLog (@"AVAssetExportSessionStatusFailed: %@", exportError);
break;
}
}
}];
Run Code Online (Sandbox Code Playgroud)
AVAssetExportSessionStatusFailed:Error Domain = AVFoundationErrorDomain Code = -11800"操作无法完成"UserInfo = 0x214f20 {NSLocalizedFailureReason =发生未知错误(-12124),NSUnderlyingError = 0x218270"操作无法完成.(OSStatus error -12124 .)",NSLocalizedDescription =操作无法完成}
如果您打开了 iTunes 匹配并且文件未下载到设备,则可能会发生这种情况。您能检查一下您是否属于这种情况吗?如果是这样,我可以提供代码来检测它。
+ (BOOL)isDownloadedFromiCloud:(MPMediaItem *)item {
if ([item valueForProperty:MPMediaItemPropertyAssetURL] != nil) {
AVURLAsset *asset = [AVURLAsset assetWithURL:[item valueForProperty:MPMediaItemPropertyAssetURL]];
if (asset.exportable)
return YES;
}
return NO;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3329 次 |
| 最近记录: |