एवीएफउंडेशन के साथ एक दूसरे के शीर्ष पर कंपोजिटिंग 2 वीडियो आपको उदाहरण के लिए अंतिम कट प्रो की तरह 2 "ट्रैक" के रूप में 2 संपत्तियों (2 वीडियो) "लिखने" की अनुमति देता है।अल्फा
सिद्धांत कहता है कि मेरे पास अल्फा के साथ एक दूसरे के शीर्ष पर 2 वीडियो हो सकते हैं, और दोनों देखें।
या तो मैं कुछ गलत कर रहा हूं, या कहीं भी एक बग है, क्योंकि निम्न परीक्षण कोड, हालांकि थोड़ा गन्दा, स्पष्ट रूप से कहता है कि मुझे 2 वीडियो देखना चाहिए, और मैं केवल एक को देखता हूं, जैसा कि यहां देखा गया है: http://lockerz.com/s/172403384 - "नीला" वर्ग IMG_1388.m4v
किसी भी कारण से, IMG_1383.MOV कभी नहीं दिखाया गया है।
NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:YES], AVURLAssetPreferPreciseDurationAndTimingKey, nil];
AVMutableComposition *composition = [AVMutableComposition composition];
CMTimeRange timeRange = CMTimeRangeMake(kCMTimeZero, CMTimeMakeWithSeconds(4, 1));
AVMutableVideoComposition *videoComposition = [AVMutableVideoComposition videoComposition];
// Track B
NSURL *urlVideo2 = [NSURL URLWithString:@"file://localhost/Users/me/Movies/Temp/IMG_1388.m4v"];
AVAsset *video2 = [AVURLAsset URLAssetWithURL:urlVideo2 options:options];
AVMutableCompositionTrack *videoTrack2 = [composition addMutableTrackWithMediaType:AVMediaTypeVideo preferredTrackID:0];
NSArray *videoAssetTracks2 = [video2 tracksWithMediaType:AVMediaTypeVideo];
AVAssetTrack *videoAssetTrack2 = ([videoAssetTracks2 count] > 0 ? [videoAssetTracks2 objectAtIndex:0] : nil);
[videoTrack2 insertTimeRange:timeRange ofTrack:videoAssetTrack2 atTime:kCMTimeZero error:&error];
AVMutableVideoCompositionLayerInstruction *to = [AVMutableVideoCompositionLayerInstruction videoCompositionLayerInstructionWithAssetTrack:videoAssetTrack2];
[to setOpacity:.5 atTime:kCMTimeZero];
[to setTransform:CGAffineTransformScale(videoAssetTrack2.preferredTransform, .5, .5) atTime:kCMTimeZero];
// Track A
NSURL *urlVideo = [NSURL URLWithString:@"file://localhost/Users/me/Movies/Temp/IMG_1383.MOV"];
AVURLAsset *video = [AVURLAsset URLAssetWithURL:urlVideo options:options];
AVMutableCompositionTrack *videoTrack = [composition addMutableTrackWithMediaType:AVMediaTypeVideo preferredTrackID:1];
NSArray *videoAssetTracks = [video tracksWithMediaType:AVMediaTypeVideo];
AVAssetTrack *videoAssetTrack = ([videoAssetTracks count] > 0 ? [videoAssetTracks objectAtIndex:0] : nil);
[videoTrack insertTimeRange:timeRange ofTrack:videoAssetTrack atTime:kCMTimeZero error:nil];
AVMutableVideoCompositionLayerInstruction *from = [AVMutableVideoCompositionLayerInstruction videoCompositionLayerInstructionWithAssetTrack:videoAssetTrack];
[from setOpacity:.5 atTime:kCMTimeZero];
// Video Compostion
AVMutableVideoCompositionInstruction *transition = [AVMutableVideoCompositionInstruction videoCompositionInstruction];
transition.backgroundColor = [[UIColor clearColor] CGColor];
transition.timeRange = timeRange;
transition.layerInstructions = [NSArray arrayWithObjects:to, from, nil];
videoComposition.instructions = [NSArray arrayWithObjects:transition, nil];
videoComposition.frameDuration = CMTimeMake(1, 30);
videoComposition.renderSize = CGSizeMake(480, 360);
// Export
NSURL *outputURL = [NSURL URLWithString:@"file://localhost/Users/me/Movies/Temp/export.MOV"];
AVAssetExportSession *exportSession = [[AVAssetExportSession alloc] initWithAsset:[[composition copy] autorelease] presetName:AVAssetExportPresetHighestQuality];
[exportSession setOutputFileType:@"com.apple.quicktime-movie"];
exportSession.outputURL = outputURL;
exportSession.videoComposition = videoComposition;
[exportSession exportAsynchronouslyWithCompletionHandler:nil];
// Player
AVPlayerItem *playerItem = [AVPlayerItem playerItemWithAsset:composition];
playerItem.videoComposition = videoComposition;
AVPlayer *player = [AVPlayer playerWithPlayerItem:playerItem];
AVPlayerLayer *playerLayer = [AVPlayerLayer playerLayerWithPlayer:player];
क्या आप कुछ गलत देख रहे हैं?
इस कोड का "लक्ष्य" कैमरा इनपुट (वीडियो 1) और ओपनजी आउटपुट (वीडियो 2) "रिकॉर्ड" करना है। मैंने उन्हें "सीधे" बफर के साथ "सीधे" लिखने की कोशिश की और यह भी असफल रहा :(एवीएफउंडेशन को बदलना मेरे विचार से कम मामूली है।
हैलो @StuFF एम सी मैं संक्रमण मैं https से अपने कोड का उपयोग किया है के अनेक वीडियो मर्ज करना चाहते हैं: //gist.github
इस संशोधन करके अपने कोड है।com/stuffmc/1572592/92f48ec664f1cce80def7fd2154b8809aec00b52 लेकिन मुझे दस्तावेज़ निर्देशिका में आउटपुट फ़ाइल नहीं मिल सकती है और मैंने * djromero * उत्तर का उपयोग किया है, लेकिन यह भी काम नहीं करेगा कृपया मुझे कोई सुझाव दें। – sohil