naturalSize从AVURLAsset返回错误的方向

use*_*790 5 iphone video xcode avfoundation avurlasset

我使用在[此处] [1]找到的代码将图像附加到使用拍摄的视频上UIImagePickerController

视频是纵向的,并且可以正常播放,但是一旦我使用AVURLASSet它,就将其方向改为横向而不是纵向,我找不到原因了吗?

谁能指出我正确的方向?

我的代码:

-(IBAction)addWaterMark:(id)sender {
 AVURLAsset* videoAsset = [[AVURLAsset alloc]initWithURL:[NSURL fileURLWithPath:tempPath] options:nil];
AVMutableComposition* mixComposition = [AVMutableComposition composition];

AVMutableCompositionTrack *compositionVideoTrack = [mixComposition addMutableTrackWithMediaType:AVMediaTypeVideo  preferredTrackID:kCMPersistentTrackID_Invalid];
AVAssetTrack *clipVideoTrack = [[videoAsset tracksWithMediaType:AVMediaTypeVideo] objectAtIndex:0];
[compositionVideoTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero, videoAsset.duration) 
                               ofTrack:clipVideoTrack
                                atTime:kCMTimeZero error:nil];

[compositionVideoTrack setPreferredTransform:[[[videoAsset tracksWithMediaType:AVMediaTypeVideo] objectAtIndex:0] preferredTransform]]; 

CGSize videoSize = [videoAsset naturalSize]; 
NSLog(@"%f %f",videoSize.width,videoSize.height);
}
Run Code Online (Sandbox Code Playgroud)

在这一点上我得到480360而不是temppath的正确大小

use*_*790 2

在这里找到了描述如何使用 AVfoundation 简介编辑和操作视频的详细教程

如果它们是横向的,我们可以使用我们提供的naturalSize属性,但如果它们是纵向的,我们必须翻转naturalSize,以便宽度现在是高度,反之亦然