AVAssetExportSession を介してビデオ アセットをエクスポートすると、結果ファイルはランドスペース モードになります。(iTunes 経由で取得したファイル -> アプリ -> ファイル共有 -> マイ アプリ)。ビデオ アセットをポートレート モード (回転) でエクスポートするにはどうすればよいですか?
7086 次
2 に答える
22
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;
(変換は左上隅を原点としていたため、回転後に平行移動が必要でしたが、iPhone 4S、iOS 5.1 でテストしたところ、中心を中心に回転が行われるようになりました。)
于 2012-04-06T12:15:47.423 に答える
0
フレームから外れたり、黒いブロックで表示されたりする可能性があるため、U トランスフォームの間、トラックはコンポジションの renderSize を設定する必要があります。
self.mutableVideoComposition.renderSize = CGSizeMake(assetVideoTrack.naturalSize.height,assetVideoTrack.naturalSize.width);
于 2017-02-24T10:04:10.873 に答える