为什么使用UIImagePickerController高级和中级视频质量设置选择视频会产生完全相同的视频属性,至少在iPhone4和iPad3等设备上?
详细说明:
我们正在使用UIImagePickerController让我们的应用用户从照片库中选择图像或视频,然后将它们传输到服务器。我们让用户选择我们直接映射到UIImagePickerControllerQualityTypeHigh,UIImagePickerControllerQualityTypeMedium和UIImagePickerControllerQualityTypeLow videoQuality常量的高,中或低视频质量。
当我们使用相机在我们的应用程序外拍摄的10秒左右的视频被选中并在3GS(iOS 5.0)上发送时,我们会看到每个质量设置的明显差异,例如:
当我们在iPhone4或iPad3上尝试相同时(我们碰巧有那些设备很方便;不确定它只发生在那些设备上)我们看到低设置会产生相同的低分辨率结果,但是高和中等设置给我们相同的结果,如下所示:
(请注意,中等和高的结果是相同的。)
设备的原始版本为12.8 MB,720x1280,编解码器:AAC H.264,比特率更高。
可以解释一下这里发生了什么吗?我希望能够向我们的客户解释,甚至可以更好地指出苹果公司的文档中的内容。
提前感谢您的帮助......
答案 0 :(得分:5)
视频质量设置仅适用于捕获视频而不是从视频选择器中拾取视频。该设置清楚地列在下面的捕获设置部分下。
您可以使用以下代码以原始格式导出视频。只需传递所选视频的URL值,该函数将返回导出视频的路径。
+(NSString*) videoAssetURLToTempFile:(NSURL*)url
{
NSString * surl = [url absoluteString];
NSString * ext = [surl substringFromIndex:[surl rangeOfString:@"ext="].location + 4];
NSTimeInterval ti = [[NSDate date]timeIntervalSinceReferenceDate];
NSString * filename = [NSString stringWithFormat: @"%f.%@",ti,ext];
NSString * tmpfile = [NSTemporaryDirectory() stringByAppendingPathComponent:filename];
NSURL *outputURL = [NSURL fileURLWithPath:tmpfile];
AVURLAsset *asset = [AVURLAsset URLAssetWithURL:url options:nil];
AVAssetExportSession *exportSession = [[AVAssetExportSession alloc] initWithAsset:asset presetName:AVAssetExportPresetHighestQuality];
exportSession.outputURL = outputURL;
exportSession.shouldOptimizeForNetworkUse = YES;
exportSession.outputFileType = AVFileTypeQuickTimeMovie;
[exportSession exportAsynchronouslyWithCompletionHandler:^(void)
{
NSLog(@"Export Complete %d %@ %@", exportSession.status, exportSession.error, outputURL);
[exportSession release];
}];
return tmpfile;
}