2013-04-09 44 views
5

'da AVMutableComposition kullanarak videoları nasıl birleştiririm Aşağıdaki yolu kullandım ama videolar bir araya gelmedi ve çıktıda AVMutableCompositionTrack'a eklenen son video Kütüphanede saklanır.iPhone sdk

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]; 

Lütfen bana yardımcı olabilir misiniz?

cevap

2

Şimdi her iki parça için de AVMutableComposition s var, her ikisi için de oluşturmalısınız - - AVMutableVideoCompositionLayerInstruction. kimin nesne Birleştirilmiş parça için

  • oluştur AVMutableVideoCompositionInstruction
    birinci ve ikinci parça için AVMutableVideoCompositionLayerInstruction oluşan bir Array içinde instructions sahip olacaktır.

  • Birleştirilmiş iz nesne için AVMutableVideoComposition oluşturun ve
    AVMutableVideoCompositionInstruction yukarıda sağlarlar.

Bu yaklaşım, this bağlantı adresinden çok iyi bir Eğiticiden alınmıştır.

+0

Bunun için teşekkürler. ama ben problemi yönelimde alıyorum ... video oryantasyonu AVAsset için varsayılan olan manzaraya ayarlandı. Bağlantınız tarafından verilen öğreticiyi kullandım, ancak yönlendirme sorunu geliyor. Bundan kurtulmama yardım edebilir misin? –

+0

size yardımcı olmaktan mutluluk duyarız, eğer çalışmazsa oryantasyon için AVPlayerLayer'daki 'transform' özelliklerini, cihaz yönelimlerine göre dönüşüm (CGAfflineTransform) yaparak deneyebilirsiniz. – BhushanVU

+1

Kod için teşekkürler! Oh bekle, hiç bırakmadınız ... -1 –