1

カメラロールから取得して動画をトリミングするサンプルアプリを作成しました。記述コードは次のとおりです。

-(IBAction)cutVideo
{
 NSString *path=[NSSearchPathForDirectoriesInDomains(NSDocumentationDirectory, NSUserDomainMask, YES) objectAtIndex:0];
 path=[path stringByAppendingPathComponent:@"new.mov"];
 [self splitVideo:path];
}

- (void)splitVideo:(NSString *)outputURL
{
 @try
 {
  NSURL *fileURL=[[NSURL alloc] init];
  fileURL=[NSURL fileURLWithPath:outputURL];
  fileURL=[NSURL URLWithString:outputURL];
//  NSString *videoBundleURL = [[NSBundle mainBundle] pathForResource:@"samp" ofType:@"mov"];
  AVAsset *asset = [[AVURLAsset alloc] initWithURL:fileURL options:nil];
  NSArray *compatiblePresets = [AVAssetExportSession exportPresetsCompatibleWithAsset:asset];

  if ([compatiblePresets containsObject:AVAssetExportPresetLowQuality])
  {
   [self trimVideo:outputURL assetObject:asset];
  }
//  videoBundleURL = nil;
  asset = nil;
  compatiblePresets = nil;
 }
 @catch (NSException * e)
 {
  NSLog(@"Exception Name:%@ Reason:%@",[e name],[e reason]);
 }
}


- (void)trimVideo:(NSString *)outputURL assetObject:(AVAsset *)asset
{
 @try
 {
  AVAssetExportSession *exportSession = [[AVAssetExportSession alloc]initWithAsset:asset presetName:AVAssetExportPresetLowQuality];
  exportSession.outputURL = [NSURL fileURLWithPath:outputURL];
  exportSession.outputFileType = AVFileTypeQuickTimeMovie;

  CMTime start = CMTimeMakeWithSeconds(startTime, 1);
  CMTime duration = CMTimeMakeWithSeconds((endTime - startTime), 1);
  CMTimeRange range = CMTimeRangeMake(start, duration);

  exportSession.timeRange = range;
  exportSession.outputFileType = AVFileTypeQuickTimeMovie;


  if ([[NSFileManager defaultManager] fileExistsAtPath:outputURL])
  {
   [[NSFileManager defaultManager] removeItemAtPath:outputURL error:nil];
  }

  [exportSession exportAsynchronouslyWithCompletionHandler: ^(void) {
   NSLog(@"Export Status %d %@", exportSession.status, [exportSession.error description]);
  }];

  exportSession = nil;
 }
 @catch (NSException * e)
 {
  NSLog(@"Exception Name:%@ Reason:%@",[e name],[e reason]);
 }
}

すべて正常に動作していますが、エクスポートファイルにエラーがあります..エラーは次のとおりです

2012-12-12 13:27:27.896 RecordVideo[1472:907] Export Status 4 Error 
Domain=NSURLErrorDomain Code=-1 "unknown error" UserInfo=0x1e577ad0 
{NSErrorFailingURLStringKey=/var/mobile/Applications/A38CC8B9-A8CB-4A65-8308-
24A9BEB27626/Library/Documentation/new.mov, 
NSErrorFailingURLKey=/var/mobile/Applications/A38CC8B9-A8CB-4A65-8308-
24A9BEB27626/Library/Documentation/new.mov, NSLocalizedDescription=unknown error, 
NSUnderlyingError=0x1e537da0 "The operation couldn’t be completed. (OSStatus error 
 -12935.)", NSURL=/var/mobile/Applications/A38CC8B9-A8CB-4A65-8308-
24A9BEB27626/Library/Documentation/new.mov}

どんな助けでも感謝します、ありがとう

4

0 に答える 0