Cuando la obtención de un UIImage de un vídeo a través de AVAssetImageGenerator, estoy recibiendo imágenes rotadas (bueno, técnicamente no están) cuando el vídeo está rodado en la orientación vertical. ¿Cómo puedo saber cuál es la orientación que el video fue filmado y, a continuación, girar la imagen correctamente?
AVURLAsset *asset = [[AVURLAsset alloc] initWithURL:url options:nil];
AVAssetImageGenerator *generate = [[AVAssetImageGenerator alloc] initWithAsset:asset];
NSError *err = NULL;
CMTime time = CMTimeMake(0, 60);
CGImageRef imgRef = [generate copyCGImageAtTime:time actualTime:NULL error:&err];
[generate release];
UIImage *currentImg = [[UIImage alloc] initWithCGImage:imgRef];
La forma más fácil es simplemente el conjunto de la
appliesPreferredTrackTransform
de la propiedad en el generador de imágenes para SÍ, entonces automáticamente debe hacer la transformación para usted.YES
(también trató deNO
también, no hay diferencia) no hacer nada y que todavía gira. (el activo es encapsulado por unaGPUImageMovie
, si eso ayuda).La copia y pegar la solución para crear una imagen con la grabación de orientación mediante la respuesta anterior.
Aquí está la solución en swift versión 4: