objective-c – 在ios中连接两个视频
发布时间:2020-12-14 17:37:52 所属栏目:百科 来源:网络整理
导读:我想合并两个视频,但它总是抛出这个异常: -[NSURL tracksWithMediaType:]: unrecognized selector sent to instance 0x935cf10 2012-08-09 16:26:59.492 videoTest[3920:17903] Terminating app due to uncaught exception 'NSInvalidArgumentException',re
我想合并两个视频,但它总是抛出这个异常:
这是代码: AVMutableComposition *mixComposition = [AVMutableComposition composition]; AVMutableCompositionTrack *compositionTrack = [mixComposition addMutableTrackWithMediaType:AVMediaTypeVideo preferredTrackID:kCMPersistentTrackID_Invalid]; NSError * error = nil; NSMutableArray * timeRanges = [NSMutableArray arrayWithCapacity:videoClipPaths.count]; NSMutableArray * tracks = [NSMutableArray arrayWithCapacity:videoClipPaths.count]; for (int i=0; i<[videoClipPaths count]; i++) { AVURLAsset *assetClip = [videoClipPaths objectAtIndex:i]; AVAssetTrack *clipVideoTrackB = [[assetClip tracksWithMediaType:AVMediaTypeVideo] objectAtIndex:0]; [timeRanges addObject:[NSValue valueWithCMTimeRange:CMTimeRangeMake(kCMTimeZero,assetClip.duration)]]; [tracks addObject:clipVideoTrackB]; } [compositionTrack insertTimeRanges:timeRanges ofTracks:tracks atTime:kCMTimeZero error:&error]; AVAssetExportSession *exporter = [[AVAssetExportSession alloc] initWithAsset:mixComposition presetName:AVAssetExportPreset1280x720]; NSParameterAssert(exporter != nil); NSArray *t; NSString *u; t = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES); u = [t objectAtIndex:0]; NSString *finalPath = [u stringByAppendingPathComponent:@"final.mov"]; NSURL *lastURL = [NSURL fileURLWithPath:finalPath]; exporter.outputFileType = AVFileTypeQuickTimeMovie; exporter.outputURL = lastURL; [exporter exportAsynchronouslyWithCompletionHandler:^(void){ switch (exporter.status) { case AVAssetExportSessionStatusFailed: NSLog(@"exporting failed"); break; case AVAssetExportSessionStatusCompleted: NSLog(@"exporting completed"); //UISaveVideoAtPathToSavedPhotosAlbum(filePath,self,nil,NULL); break; case AVAssetExportSessionStatusCancelled: NSLog(@"export cancelled"); break; } }]; 解决方法
我通过替换此代码来修复它:
AVAssetExportSession *exporter = [[AVAssetExportSession alloc] initWithAsset:mixComposition presetName:AVAssetExportPreset1280x720]; NSParameterAssert(exporter != nil); 有: AVAssetExportSession *exporter = [[AVAssetExportSession alloc] initWithAsset:mixComposition presetName:AVAssetExportPresetHighestQuality]; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |