将MOV文件转换为MP4会使视频颠倒

时间:2015-04-15 16:39:05

标签: ios objective-c xcode avassetexportsession

我将视频文件存储在Web服务器上,该服务器与UIImagePickerController中的iOS视频录制器一起使用。在将视频发送到服务器之前,我使用以下代码将其从MOV转换为MP4:

AVAsset *avAsset = [AVAsset assetWithURL:info[UIImagePickerControllerMediaURL]];
        AVAssetExportSession *exporter = [[AVAssetExportSession alloc]initWithAsset:avAsset presetName:AVAssetExportPresetPassthrough];
        exporter.outputFileType = AVFileTypeMPEG4;
        exporter.shouldOptimizeForNetworkUse = YES;
        exporter.outputURL = [NSURL fileURLWithPath:[self getVideoPath]];
        [exporter exportAsynchronouslyWithCompletionHandler:^{
            switch (exporter.status)
            {
                case AVAssetExportSessionStatusFailed:
                    NSLog(@"Video conversion Failed: %@",exporter.error);
                    break;
                case AVAssetExportSessionStatusCancelled:
                    NSLog(@"video conversion canceled");
                    break;
                case AVAssetExportSessionStatusExporting:
                    NSLog(@"video conversion exporting");
                    break;
                case AVAssetExportSessionStatusWaiting:
                    NSLog(@"video conversion is waiting");
                    break;
                case AVAssetExportSessionStatusUnknown:
                    NSLog(@"video converstion status unknown");
                    break;
                case AVAssetExportSessionStatusCompleted:
                    self.outputFileURL = exporter.outputURL;
                    break;
            }
        }];

我已使用上面的switch语句验证转换是否达到AVAssetExportSessionStatusCompleted状态。但是,当我查看服务器端的视频时,它会颠倒翻转。无论iPad / iPhone或视频是以横向还是纵向模式拍摄,都会出现这种情况。当我将文件从Web服务器下载到应用程序时,它确实正确播放并且方向正确,因此这只发生在iOS之外。值得注意的是,如果我没有隐藏文件而是将其保留为MOV文件,它会在应用程序外部保持正确的方向,但当然必须使用Quicktime来查看它。

为什么此转化过程会导致视频呈现倒置,我该如何解决?

1 个答案:

答案 0 :(得分:0)