6

Вопрос по iphone – Как экспортировать видео актив через AVAssetExportSession в портретном режиме

когда я экспортирую видео актив через AVAssetExportSession, файл результата находится в режиме пространства. (файл загружается через itune-> приложения-> файлообменники-> мое приложение). Как я могу экспортировать видео актив в портретном режиме (повернуть его)?

  • Необработанный пиксельный буфер всегда будет отображаться только на iPhone / iPad (и даже на Android). Только метаданные могут указывать игроку, чтобы он отображался повернутым. Если вы хотите, чтобы файл фильма или буфер необработанных пикселей был портретным, я думаю, вам придется написать свой собственный кодер, и это будет большая работа.

    от
  • Я попробую. Это позволяет изменить степень поворота видео, если ваш проигрыватель (например, QuickTime) поддерживает метаданные поворота, вы можете получить портретное видео. Но буфер необработанных пикселей все еще в альбомной ориентации.

    от
  • 0

    Когда U преобразует дорожку

    тем временем следует установить композицию renderSize, поскольку она может выходить за рамки или появляться с черным блоком:

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

  • 21

    Видео

    поступающее с устройства захвата iPhone, всегда ориентировано на альбомную ориентацию независимо от ориентации устройства при захвате.

    Если вы хотите повернуть видео, выберите «простой». Решение состоит в том, чтобы назначить преобразование на видео дорожку экспортированного сеанса.

    Создайте 2 изменяемых дорожки в вашем объекте AVComposition:

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

    Добавьте дорожки медиафайлов к дорожкам своей композиции:

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

    (обратите внимание, что преобразование имело верхний левый угол в качестве источника, поэтому перевод был необходим после поворота, но при тестировании на iPhone 4S, iOS 5.1 кажется, что вращение теперь происходит вокруг центра.)