【发布时间】:2011-09-09 16:29:52
【问题描述】:
我想使用 AVPlayer 缓存渐进式下载视频。如何将 AVPlayer 的项目保存到磁盘?我正在尝试在播放器的 currentItem (已满载)上使用 AVAssetExportSession。这段代码给了我“AVAssetExportSessionStatusFailed(操作无法完成)”:
AVAsset *mediaAsset = self.player.currentItem.asset;
AVAssetExportSession *es = [[AVAssetExportSession alloc] initWithAsset:mediaAsset presetName:AVAssetExportPresetLowQuality];
NSString *outPath = [NSTemporaryDirectory() stringByAppendingPathComponent:@"out.mp4"];
NSFileManager *fileManager = [NSFileManager defaultManager];
[fileManager removeItemAtPath:outPath error:NULL];
es.outputFileType = @"com.apple.quicktime-movie";
es.outputURL = [[[NSURL alloc] initFileURLWithPath:outPath] autorelease];
NSLog(@"exporting to %@",outPath);
[es exportAsynchronouslyWithCompletionHandler:^{
NSString *status = @"";
if( es.status == AVAssetExportSessionStatusUnknown ) status = @"AVAssetExportSessionStatusUnknown";
else if( es.status == AVAssetExportSessionStatusWaiting ) status = @"AVAssetExportSessionStatusWaiting";
else if( es.status == AVAssetExportSessionStatusExporting ) status = @"AVAssetExportSessionStatusExporting";
else if( es.status == AVAssetExportSessionStatusCompleted ) status = @"AVAssetExportSessionStatusCompleted";
else if( es.status == AVAssetExportSessionStatusFailed ) status = @"AVAssetExportSessionStatusFailed";
else if( es.status == AVAssetExportSessionStatusCancelled ) status = @"AVAssetExportSessionStatusCancelled";
NSLog(@"done exporting to %@ status %d = %@ (%@)",outPath,es.status, status,[[es error] localizedDescription]);
}];
如何才能成功导出?我正在考虑将 mediaAsset 复制到 AVMutableComposition 中,但也没有太多运气。
谢谢!
PS:以下是尝试完成相同任务的人提出的一些问题(但使用 MPMoviePlayerController):
【问题讨论】:
-
嘿!你解决了吗?
标签: iphone ios video-streaming avfoundation avplayer