2012-04-05 18 views

Respuesta

20

El video procedente del dispositivo de captura de iPhone siempre está orientado al paisaje, cualquiera que sea la orientación del dispositivo al capturar.

Si desea rotar su video, la solución 'simple' es asignar una transformación a la pista de video de la sesión exportada.

crear 2 pistas mutables en su objeto AVComposition:

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

Añadir sus medias pistas a las pistas de su composición:

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

Después de que añada todas sus pistas, aplique su transformación a la pista de vídeo de su composición:

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

(tenga en cuenta que el transf orm tenía la esquina superior izquierda como origen, por lo que la traducción era necesaria después de la rotación, pero probado en iPhone 4S, iOS 5.1, parece que la rotación ahora se realiza alrededor del centro.)

0

Cuando U transforma la ruta, mientras tanto, establezca la composición renderSize ya que puede estar fuera del marco o aparecer con un bloque negro:

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