【发布时间】:2015-04-15 16:39:05
【问题描述】:
我将视频文件存储在 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 还是视频是以横向或纵向模式拍摄的,都会发生这种情况。当我将文件从网络服务器下载到应用程序中时,它确实可以正确播放并且方向正确,因此这只发生在 iOS 之外。值得注意的是,如果我不隐藏文件而是将其保留为 MOV 文件,它会在应用程序外部保持正确的方向,但当然它必须使用 Quicktime 来查看它。
为什么这个转换过程会导致视频倒置,我该如何解决这个问题?
【问题讨论】:
标签: ios objective-c xcode avassetexportsession