2012-04-05 5 views
5

AVAssetExportSession経由でビデオアセットをエクスポートすると、結果ファイルはランドスケープモードになります。 (ファイルはitun​​e-> apps-> file sharing-> my appを介して取得します)。 ビデオアセットをポートレートモードでエクスポートするにはどうすればいいですか?AVAssetExportSession経由でビデオアセットをポートレートモードでエクスポートする方法

答えて

20

iPhoneキャプチャデバイスからのビデオは、キャプチャ時のデバイスの向きに関係なく、常に横向きです。

ビデオを回転させたい場合、「シンプルな」ソリューションは、エクスポートされたセッションのビデオトラックにトランスフォームを割り当てることです。

あなたAVCompositionオブジェクト内の2つの可変トラックの作成:あなたの構図のトラックにあなたのマスコミトラックを追加

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; 

(transf ormは左上隅を原点としていたので、回転後に平行移動が必要でしたが、iPhone 4S、iOS 5.1でテストしたところ、中心を中心に回転が行われているように見えます)。

0

Uは、レンダリングサイズがフレーム外になるか、または黒いブロックで表示されるため、renderSizeコンポジションを設定します。

self.mutableVideoComposition.renderSize = CGSizeMake(assetVideoTrack.naturalSize.height,assetVideoTrack.naturalSize.width); 
関連する問題