iOS 拍摄视频方向不正确问题

应该有很多小伙伴试过这种情况:使用自定义的照相机拍摄视频,将获取到的视频上传到服务器后,发现视频的方向和实际拍摄的方向不一样,其实解决方法很简单,即使这样也花费了我较多的时间,因为一开始我就一直想通过视频转码来改变视频的的方向(网上有很多资料, 就是通过设置AVAssetExportSession的属性videoComposition来旋转视频,这里就不展开讲了), 但都发现改变不了视频的方向(不知是不是和我项目只支持竖屏有关),所以只好放弃了,所以就重新整理思路,然后想苹果应该解决了这个问题吧,所以就从API入手,果然发现AVCaptureConnection有两个属性isVideoOrientationSupported和videoOrientation(只怪自己没仔细看文档),这两个属性是配合用的,使用方法就是:在点击拍摄按钮拍摄的这一刻,根据当前设备的方向来设置录像的方向,具体代码如下:

AVCaptureConnection *captureConnection = [_captureMovieFileOutput connectionWithMediaType:AVMediaTypeVideo];
        if ([captureConnection isVideoOrientationSupported]) {
            captureConnection.videoOrientation = [self getCaptureVideoOrientation];
        }
其中_captureMovieFileOutput是AVCaptureMovieFileOutput的一个实例。方法 getCaptureVideoOrientation的实现如下:

- (AVCaptureVideoOrientation)getCaptureVideoOrientation {
    AVCaptureVideoOrientation result;
    
    UIDeviceOrientation deviceOrientation = [UIDevice currentDevice].orientation;
    switch (deviceOrientation) {
        case UIDeviceOrientationPortrait:
        case UIDeviceOrientationFaceUp:
        case UIDeviceOrientationFaceDown:
            result = AVCaptureVideoOrientationPortrait;
            break;
        case UIDeviceOrientationPortraitUpsideDown:
            //如果这里设置成AVCaptureVideoOrientationPortraitUpsideDown,则视频方向和拍摄时的方向是相反的。
            result = AVCaptureVideoOrientationPortrait;
            break;
        case UIDeviceOrientationLandscapeLeft:
            result = AVCaptureVideoOrientationLandscapeRight;
            break;
        case UIDeviceOrientationLandscapeRight:
            result = AVCaptureVideoOrientationLandscapeLeft;
            break;
        default:
            result = AVCaptureVideoOrientationPortrait;
            break;
    }
    
    return result;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值