我正在尝试使用以下代码修剪视频:
AVURLAsset *videoAsset = [AVURLAsset URLAssetWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@/%@.mp4",documentsDirectory,name]] options:nil];
AVAssetExportSession *exportSession = [[AVAssetExportSession alloc] initWithAsset:videoAsset presetName:AVAssetExportPresetHighestQuality];
NSURL *url = [[NSURL alloc] initWithString:[NSString stringWithFormat:@"%@/finalOutput.mp4",documentsDirectory]];
exportSession.outputURL = url;
NSLog(@"outputting to: %@", [NSString stringWithFormat:@"%@/finalOutput.mp4",documentsDirectory,name]);
exportSession.outputFileType = AVFileTypeQuickTimeMovie;
CMTimeRange timeRange = CMTimeRangeMake(flashbackStart, CMTimeSubtract(flashbackEnd, flashbackStart));
exportSession.timeRange = timeRange;
[exportSession exportAsynchronouslyWithCompletionHandler:^{
switch (exportSession.status) {
case AVAssetExportSessionStatusCompleted:
// Custom method to import the Exported Video
//[self loadAssetFromFile:exportSession.outputURL];
NSLog(@"completed!!!");
break;
case AVAssetExportSessionStatusFailed:
//
NSLog(@"Failed:%@",exportSession.error);
break;
case AVAssetExportSessionStatusCancelled:
//
NSLog(@"Canceled:%@",exportSession.error);
break;
default:
break;
}
}];
但是,我对此行的访问错误:
[exportSession exportAsynchronouslyWithCompletionHandler:^{
即使启用了NSZombie,我也没有得到有关错误的任何详细信息。谁能解释一下这里发生了什么?输入视频文件确实存在,输出视频文件在我尝试写入之前不存在。
谢谢, 詹姆斯
答案 0 :(得分:2)
事实证明问题出在我使用的NSURL
上。我所要做的只是使用initFileURLWithPath
,问题就解决了!
答案 1 :(得分:1)
您可能遇到存储类型问题。尝试将__block添加到exportSession。
__block AVAssetExportSession *exportSession...
您可以在这里阅读更多内容: