, когда я экспортирую видеообъект через AVAssetExportSession, файл результатов находится в режиме ландшафтного пространства. (файл, захваченный через itune-> apps-> совместное использование файлов-> мое приложение). Как я могу экспортировать видеообъект в портретном режиме (повернуть его)?Как экспортировать видеообъект через AVAssetExportSession в портретном режиме
ответ
Видео, поступающее с устройства захвата iPhone, всегда ориентировано на ландшафт, независимо от ориентации устройства при захвате.
Если вы хотите повернуть свое видео, «простым» решением является назначение преобразования в видеодорожку экспортируемого сеанса.
Создание 2 изменяемых дорожек в объекте AVComposition:
AVMutableCompositionTrack *videoTrack = [composition addMutableTrackWithMediaType:AVMediaTypeVideo preferredTrackID:kCMPersistentTrackID_Invalid];
AVMutableCompositionTrack *audioTrack = [composition addMutableTrackWithMediaType:AVMediaTypeAudio preferredTrackID:kCMPersistentTrackID_Invalid];
Добавить ваши Medias треков треков вашей композиции в:
...
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];
...
После того, как вы добавили все ваши треки, применить ваши преобразования к видеодорожке вашего состава:
CGAffineTransform rotationTransform = CGAffineTransformMakeRotation(M_PI_2);
// CGAffineTransform rotateTranslate = CGAffineTransformTranslate(rotationTransform,360,0);
videoTrack.preferredTransform = rotationTransform;
(будьте осторожны, что трансф. orm имел верхний левый угол в качестве источника, поэтому перевод был необходим после вращения, но на iPhone 4S, iOS 5.1, кажется, что вращение теперь происходит вокруг центра.)
Когда U трансформирует трек, установите композицию renderSize, так как она может выйти из кадра или появится с черным блоком:
self.mutableVideoComposition.renderSize = CGSizeMake(assetVideoTrack.naturalSize.height,assetVideoTrack.naturalSize.width);