ios UIImagepickerController拍摄多个视频并合并为单个视频

ios UIImagepickerController拍摄多个视频并合并为单个视频,ios,uiimagepickercontroller,Ios,Uiimagepickercontroller,我的应用程序使用uiimagepickerController录制多个视频,我想将它们合并成一个视频,一个接一个 我还想把这个合并的视频保存到照片库 有人知道怎么做吗?谢谢。在我以前的一个遗留项目中,我在Objective-C中合并了两个视频。你可以激发灵感(但可能有更好更聪明的方法)。我的解决办法是: + (void) mergeVideos:(NSString*) firstVideo withVideo:(NSString*) secondVideo { AVMutableComposit

我的应用程序使用uiimagepickerController录制多个视频,我想将它们合并成一个视频,一个接一个

我还想把这个合并的视频保存到照片库


有人知道怎么做吗?谢谢。

在我以前的一个遗留项目中,我在Objective-C中合并了两个视频。你可以激发灵感(但可能有更好更聪明的方法)。我的解决办法是:

+ (void) mergeVideos:(NSString*) firstVideo withVideo:(NSString*) secondVideo
{
AVMutableComposition* composition = [AVMutableComposition composition];
AVURLAsset* video1 = [[AVURLAsset alloc]initWithURL:[NSURL fileURLWithPath:firstVideo] options:nil];
AVURLAsset* video2 = [[AVURLAsset alloc]initWithURL:[NSURL fileURLWithPath:secondVideo] options:nil];
AVMutableCompositionTrack * composedTrack = [composition addMutableTrackWithMediaType:AVMediaTypeVideo preferredTrackID:kCMPersistentTrackID_Invalid];

[composedTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero, video1.duration)
                       ofTrack:[[video1 tracksWithMediaType:AVMediaTypeVideo] objectAtIndex:0]
                        atTime:kCMTimeZero
                         error:nil];

[composedTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero, video2.duration)
                       ofTrack:[[video2 tracksWithMediaType:AVMediaTypeVideo] objectAtIndex:0]
                        atTime:video1.duration
                         error:nil];

NSString *finalPath = [folderPath stringByAppendingPathComponent:@"/final.mov"];
NSURL *lastURL = [NSURL fileURLWithPath:finalPath];
AVAssetExportSession *exporter = [[AVAssetExportSession alloc] initWithAsset:composition presetName:AVAssetExportPresetHighestQuality];

exporter.outputURL=lastURL;
exporter.outputFileType = AVFileTypeMPEG4;
exporter.shouldOptimizeForNetworkUse = NO;
[exporter exportAsynchronouslyWithCompletionHandler:^{

    switch ([exporter status]) {

        case AVAssetExportSessionStatusFailed:
            NSLog(@"failed");
            break;

        case AVAssetExportSessionStatusCancelled:
            NSLog(@"cancelled");
            break;

        case AVAssetExportSessionStatusCompleted:
            NSLog(@"fjuhuuuuu");
            break;

        default:

            break;

    }

}];
}
TLDR-您应该在AVFoundation framework中查找AVMutableComposition和AVAssetExportSession