1

ビデオを 2 つの部分に分割する必要があります。このトリム機能を 2 回使用しています。AVFoundationフレームワークを読みましたが、ビデオを分割するための直接的な解決策は見つかりませんでした。しかし、分割している iPhone アプリがいくつかあります。ビデオは非常にスムーズです。トリム機能を使用していますか? 提案が必要

-(void)splitSecondVideo{
    NSString *deleteVideo = [_videoPath path];

    AVURLAsset *asset = [AVURLAsset URLAssetWithURL:_videoPath options:nil];

    AVAssetExportSession *exportSession = [[AVAssetExportSession alloc]initWithAsset:asset presetName:AVAssetExportPresetLowQuality];
     NSString *outputURL = nil;
     NSString *videoFileName = nil;
     videoFileName = [SPUtility getDefaultVideoName];
     outputURL = [NSString stringWithFormat:@"%@/%@.mov", _clipFolderPath, videoFileName];

    NSFileManager *manager = [NSFileManager defaultManager];
    [manager createDirectoryAtPath:outputURL withIntermediateDirectories:YES attributes:nil error:nil];
    [manager removeItemAtPath:outputURL error:nil] ;
     exportSession.outputURL = [NSURL fileURLWithPath:outputURL];
     exportSession.shouldOptimizeForNetworkUse = YES;
     exportSession.outputFileType = AVFileTypeQuickTimeMovie;
     // Trim to half duration
     double halfDuration = CMTimeGetSeconds([asset duration])/2.0;
     double fullDuration = CMTimeGetSeconds([asset duration]);

     CMTime firsthalfDuration = CMTimeMakeWithSeconds(halfDuration, 1);
     CMTime secondhalfDuration = CMTimeMakeWithSeconds(fullDuration, 1);

     CMTimeRange secondrange = CMTimeRangeMake(firsthalfDuration, secondhalfDuration);

     exportSession.timeRange = secondrange;

     [exportSession exportAsynchronouslyWithCompletionHandler:^(void)
     {
     switch (exportSession.status) {
     case AVAssetExportSessionStatusCompleted:
     [manager removeItemAtPath:deleteVideo error:nil];
     NSLog(@"Export Complete %d %@", exportSession.status, exportSession.error);
     break;
     case AVAssetExportSessionStatusFailed:
     NSLog(@"Failed:%@",exportSession.error);
     break;
     case AVAssetExportSessionStatusCancelled:
     NSLog(@"Canceled:%@",exportSession.error);
     break;
     default:
     break;
     }

     }];


}
4

0 に答える 0