2013-04-09 12 views
5

Użyłem w następujący sposób, ale filmy nie scalić i na wyjściu ostatni film dodany do AVMutableCompositionTrack zostanie zapisany w bibliotece.Jak scalić wideo za pomocą AVMutableComposition w 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]; 

Czy ktoś może mi pomóc?

Odpowiedz

2

Teraz masz AVMutableComposition s dla obu ścieżek, musisz utworzyć - - AVMutableVideoCompositionLayerInstruction dla obu z nich.

  • Tworzenie AVMutableVideoCompositionInstruction dla połączonego torze, którego celem będzie
    mający instructions w tablicy zawierającej AVMutableVideoCompositionLayerInstruction dla pierwszego i drugiego toru.

  • Tworzenie AVMutableVideoComposition dla Połączonego obiektu torze i zapewniają powyżej
    AVMutableVideoCompositionInstruction.

Podejście to opiera się na bardzo dobrym samouczku z linku this.

+0

No cóż za to ... działa !!! ale dostaję problem w orientacji ... orientacja wideo jest ustawiona na krajobraz, która jest domyślna dla zestawu AVA. Użyłem samouczka podanego przez twój link, ale nadchodzi problem orientacji. Czy możesz mi pomóc wyjść z tego? –

+0

Cieszę się, że pomogę ... dla Orientacji, jeśli nic nie działa, możesz wypróbować właściwości "transformacji" na AVPlayerLayer, wykonując transformację (CGAfflineTransform) zgodnie z orientacją urządzenia. – BhushanVU

+1

Dzięki za kod! Och, czekaj, nie zostawiłeś żadnego ... -1 –

Powiązane problemy