2012-04-05 12 views

Odpowiedz

20

Wideo wychodzące z urządzenia przechwytującego iPhone'a jest zawsze zorientowane poziomo niezależnie od orientacji urządzenia podczas przechwytywania.

Jeśli chcesz obrócić wideo, "proste" rozwiązanie polega na przypisaniu transformacji do ścieżki wideo wyeksportowanej sesji.

Tworzenie 2 utworów zmienny w swoim obiekcie AVComposition:

AVMutableCompositionTrack *videoTrack = [composition addMutableTrackWithMediaType:AVMediaTypeVideo preferredTrackID:kCMPersistentTrackID_Invalid]; 
AVMutableCompositionTrack *audioTrack = [composition addMutableTrackWithMediaType:AVMediaTypeAudio preferredTrackID:kCMPersistentTrackID_Invalid]; 

Dodaj swoją medias utwory śledzi kompozycja jest:

...   
BOOL videoResult = [videoTrack insertTimeRange:sourceCMTime 
             ofTrack:[tracks objectAtIndex:0] 
             atTime:currentTime 
             error:&error]; 

BOOL audioResult = [audioTrack insertTimeRange:sourceCMTime 
             ofTrack:[tracks objectAtIndex:0] 
             atTime:currentTime 
             error:&error]; 
... 

Po dodaniu wszystkich swoich utworów, zastosować transformację do ścieżki wideo o składzie:

CGAffineTransform rotationTransform = CGAffineTransformMakeRotation(M_PI_2); 
// CGAffineTransform rotateTranslate = CGAffineTransformTranslate(rotationTransform,360,0); 
    videoTrack.preferredTransform = rotationTransform; 

(bądźcie ostrożni, że transf orm miał lewy górny róg jako pochodzenie, więc tłumaczenie było potrzebne po obrocie, ale testowane na iPhone 4S, iOS 5.1, wydaje się, że obrót jest teraz wokół środka.)

0

Kiedy U przekształcić utwór w międzyczasie ustaw rozmiar renderSize, ponieważ może wyjść poza ramkę lub pojawić się z czarnym blokiem:

self.mutableVideoComposition.renderSize = CGSizeMake(assetVideoTrack.naturalSize.height,assetVideoTrack.naturalSize.width);