2012-04-05 6 views

Antwort

20

Das vom iPhone-Aufnahmegerät kommende Video ist immer landschaftsorientiert, unabhängig von der Geräteausrichtung beim Aufnehmen.

Wenn Sie Ihr Video drehen möchten, besteht die "einfache" Lösung darin, der Videospur der exportierten Sitzung eine Transformation zuzuweisen.

erstellen 2 wandelbar Spuren in Ihrem AVComposition Objekt:

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

Fügen Sie Ihre Medien-Tracks auf die Tracks Ihrer Komposition:

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

Nachdem Sie alle Ihre Tracks hinzugefügt, übernehmen Sie die auf die Videospur umwandeln Ihrer Zusammensetzung:

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

(seien Sie vorsichtig, dass die transf Orm hatte die obere linke Ecke als Ursprung, so dass die Übersetzung nach der Drehung benötigt wurde, aber auf iPhone 4S, iOS 5.1 getestet, scheint es, dass die Drehung jetzt um das Zentrum gemacht wird.)

0

Wenn U die Strecke inzwischen transformieren sollte Stellen Sie die Komposition renderSize ein, da sie nicht mehr mit dem Rahmen oder mit einem schwarzen Block angezeigt werden kann:

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