当我们修剪视频时,如何检测视频方向



当我在横向模式下录制视频时,我第二次获得错误的视频方向。第一次记录,我得到正确的视频方向在didFinishMediaWithInfo

现在,我正在使用以下代码来检测视频方向。

 AVAsset *firstAsset = [AVAsset assetWithURL:videoUrl];
    AVAssetTrack *FirstAssetTrack = [[firstAsset tracksWithMediaType:AVMediaTypeVideo] objectAtIndex:0];
        UIImageOrientation FirstAssetOrientation_  = UIImageOrientationUp;
        BOOL  isFirstAssetPortrait_  = NO;
        CGAffineTransform firstTransform = [FirstAssetTrack preferredTransform];
        if(firstTransform.a == 0 && firstTransform.b == 1.0 && firstTransform.c == -1.0 && firstTransform.d == 0)
        {
            FirstAssetOrientation_= UIImageOrientationRight; isFirstAssetPortrait_ = YES;
        }
        if(firstTransform.a == 0 && firstTransform.b == -1.0 && firstTransform.c == 1.0 && firstTransform.d == 0)
        {
            FirstAssetOrientation_ =  UIImageOrientationLeft; isFirstAssetPortrait_ = YES;
        }
        if(firstTransform.a == 1.0 && firstTransform.b == 0 && firstTransform.c == 0 && firstTransform.d == 1.0)
        {
            FirstAssetOrientation_ =  UIImageOrientationUp;
        }
        if(firstTransform.a == -1.0 && firstTransform.b == 0 && firstTransform.c == 0 && firstTransform.d == -1.0)
        {
            FirstAssetOrientation_ = UIImageOrientationDown;
        }
 if(isFirstAssetPortrait_)
    {
        NSLog(@"Portrait mode");
     }
else{
        NSLog(@"Landscape mode");
}

上面的代码给出正确的方向,如果首先记录纵向模式。然后记录横屏模式。如果用户再次以横屏模式录制视频。然后它给出了错误的视频方向,并使肖像BOOL是。

如果视频记录在景观模式和修剪使用AVAssetExportSession。然后修剪的视频在MPMoviePlayer中以错误的方向播放。如何解决这个问题?

请引导我。

AVURLAsset* movieAsset = [AVURLAsset URLAssetWithURL: movieFileURL options: nil];
NSArray *tracks = [movieAsset tracksWithMediaType:AVMediaTypeVideo];
CGSize videoSize = CGSizeZero;
if ([tracks count] != 0)
{
    AVAssetTrack *videoTrack = [tracks objectAtIndex:0];
    videoSize = videoTrack.naturalSize;
    CGRect videoRect = CGRectMake(0.0, 0.0, videoSize.width, videoSize.height);
    videoRect = CGRectApplyAffineTransform(videoRect, videoTrack.preferredTransform);
    if (videoRect.size.height > videoRect.size.width)
    {
        NSLog(@"Portrait mode");
    }
    else if (videoRect.size.height < videoRect.size.width)
    {
        NSLog(@"Landscape mode");
    }
    else
    {
        NSLog(@"Square mode");
    }
}