2013-04-09 5 views
5

में AVMutableComposition का उपयोग करके वीडियो मर्ज कैसे करें मैंने निम्नलिखित तरीके से उपयोग किया है लेकिन वीडियो विलय नहीं हुआ है और आउटपुट में AVMutableCompositionTrack में जोड़ा गया अंतिम वीडियो लाइब्रेरी में संग्रहीत हो जाता है।आईफोन एसडीके

NSArray *arrVideoUrl=[objApp.dictSelectedVideos allKeys]; 
AVURLAsset *video1=[[AVURLAsset alloc]initWithURL:[arrVideoUrl objectAtIndex:0] options:nil]; 
AVURLAsset *video2=[[AVURLAsset alloc]initWithURL:[arrVideoUrl objectAtIndex:1] options:nil]; 
AVURLAsset *audioAsset=[[AVURLAsset alloc]initWithURL:songUrl options:nil]; 

AVMutableComposition *mixcomposition=[AVMutableComposition composition]; 

AVMutableCompositionTrack *track1=[mixcomposition addMutableTrackWithMediaType:AVMediaTypeVideo preferredTrackID:kCMPersistentTrackID_Invalid]; 
[track1 insertTimeRange:CMTimeRangeMake(kCMTimeZero, video1.duration) ofTrack:[[video1 tracksWithMediaType:AVMediaTypeVideo] objectAtIndex:0] 
       atTime:kCMTimeZero error:nil]; 


AVMutableCompositionTrack *track2=[mixcomposition addMutableTrackWithMediaType:AVMediaTypeVideo preferredTrackID:kCMPersistentTrackID_Invalid]; 

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

क्या कोई मेरी मदद कर सकता है?

उत्तर

2

अब आपके पास दोनों ट्रैक के लिए AVMutableComposition एस है, आपको दोनों को - AVMutableVideoCompositionLayerInstruction बनाने की आवश्यकता है।

  • बनाएं AVMutableVideoCompositionInstruction अपने मर्ज किए गए ट्रैक के लिए जिसका वस्तु
    पहले और दूसरे ट्रैक के लिए AVMutableVideoCompositionLayerInstruction से मिलकर किसी सरणी में instructions होने दिया जाएगा।

  • मर्ज किए गए ट्रैक वस्तु के लिए AVMutableVideoComposition बनाएँ और ऊपर
    AVMutableVideoCompositionInstruction प्रदान करते हैं।

यह दृष्टिकोण this लिंक से बहुत अच्छे ट्यूटोरियल से है।

+0

इस के लिए अच्छा thanx ..it काम किया !!! लेकिन मुझे उन्मुखीकरण में समस्या मिल रही है ... वीडियो अभिविन्यास लैंडस्केप पर सेट है, जो AVAsset के लिए डिफ़ॉल्ट है। मैंने आपके लिंक द्वारा दिए गए ट्यूटोरियल का उपयोग किया लेकिन अभिविन्यास समस्या आ रही है। क्या आप इससे बाहर निकलने में मेरी मदद कर सकते हैं? –

+0

मदद करने में प्रसन्नता ... ओरिएंटेशन के लिए अगर काम नहीं कर रहा है तो आप डिवाइस उन्मुखता के अनुसार परिवर्तन (CGAfflineTransform) करके, AVPlayerLayer पर 'ट्रांसफॉर्म' गुणों को आजमा सकते हैं। – BhushanVU

+1

कोड के लिए धन्यवाद! ओह रुको, आपने कोई भी नहीं छोड़ा ... -1 –