答えは確かに最良の選択ですが、部分的にしか正しくないと思います。実際には、それを機能させるために、ポートレートトラックの自然なサイズの高さと幅を反転させて、エクスポートのレンダーサイズを調整する必要があります。
私はちょうどそれをテストし、私はまた、AVFoundationプログラミングガイドを引用 - 実際に@dizyの答えではなく、言及加えて提案されたものを実装することを示唆している編集部:
すべてAVAssetTrackオブジェクトはpreferredTransformを持っていますそのアセットトラックの方向情報を含むプロパティ。この変換は、アセットトラックが画面上に表示されるたびに適用されます。前のコードでは、レンダリングサイズを調整すると、レイヤーの命令のトランスフォームがアセットトラックのトランスフォームに設定され、新しいコンポジションのビデオが正しくに表示されます。
コードは(わずか2行が追加する)この1のようにする必要があります:
// Grab the source track from AVURLAsset for example.
AVAssetTrack *assetVideoTrack = [asset tracksWithMediaType:AVMediaTypeVideo].lastObject;
// Grab the composition video track from AVMutableComposition you already made.
AVMutableCompositionTrack *compositionVideoTrack = [composition tracksWithMediaType:AVMediaTypeVideo].lastObject;
// Apply the original transform.
if (assetVideoTrack && compositionVideoTrack) {
[compositionVideoTrack setPreferredTransform:assetVideoTrack.preferredTransform];
}
flippedSize = CGSize(compositionVideoTrack.naturalSize.height, compositionVideoTrack.naturalSize.width);
composition.renderSize = flippedSize;
// Export..
私も、そのかかわらず、私はこれが起こっている何をするかのようにも気づきました。手作業での録音の向きの設定、回転の試行など。最初のクリップを単独で再生すると、トラックは右上に再生されますが、コンポジションに結合されると同時に逆さまになります。 – bgoers