在录制视频之前调用摄像头视图时,我已经实现了一个叠加视图。iPhone:以编程方式压缩录制的视频以分享?
pickerController.cameraOverlayView =myOverlay;
视频录制和录制视频,并通过电子邮件等分享一切工作正常后,保存视频到相册。
如果我使用视频质量作为“高质量”,那么录制的视频已经变得非常庞大。例如,如果我以高质量录制视频30秒,录制的视频已经变成大约30 - 40 MB。
pickerController.videoQuality = UIImagePickerControllerQualityTypeHigh;
如何在共享之前压缩高质量录制的视频,例如苹果如何使用内置录像机?
请指导我解决这个问题。
谢谢!
更新:
这就是我想要最近,但仍然没有成功:我要压缩拍摄录制的视频里面说到didFinishPickingMediaWithInfo并存储在同一相册实际的视频路径本身,而不是其他地方。我测试了同样的视频压缩到非常小的尺寸时,我从照片库中选择,但从摄像头拍摄并通过didFinishPickingMediaWithInfo传来的相同视频不压缩,虽然我使用下面的AVAssetExportSession代码。
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info{
NSString *mediaType = [info objectForKey:UIImagePickerControllerMediaType];
if ([mediaType isEqualToString:(NSString *)kUTTypeMovie])
{
NSURL *videoURL = [info objectForKey:UIImagePickerControllerMediaURL];
NSString *urlPath = [videoURL path];
if ([[urlPath lastPathComponent] isEqualToString:@"capturedvideo.MOV"])
{
if (UIVideoAtPathIsCompatibleWithSavedPhotosAlbum (urlPath))
{
[self copyTempVideoToMediaLibrary :urlPath];
}
else
{
NSLog(@"Video Capture Error: Captured video cannot be saved...didFinishPickingMediaWithInfo()");
}
}
else
{
NSLog(@"Processing soon to saved photos album...else loop of lastPathComponent..didFinishPickingMediaWithInfo()");
}
}
[self dismissModalViewControllerAnimated:YES];
}
- (void)copyTempVideoToMediaLibrary :(NSString *)videoURL {
dispatch_queue_t mainQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_async(mainQueue, ^{
ALAssetsLibrary *library = [[[ALAssetsLibrary alloc] init] autorelease];
ALAssetsLibraryWriteVideoCompletionBlock completionBlock = ^(NSURL *assetURL, NSError *error) {
NSLog(@"Saved URL: %@", assetURL);
NSLog(@"Error: %@", error);
if (assetURL != nil) {
AVURLAsset *theAsset = [AVURLAsset URLAssetWithURL:[NSURL URLWithString:videoURL] options:nil];
NSArray *compatiblePresets = [AVAssetExportSession exportPresetsCompatibleWithAsset:theAsset];
AVAssetExportSession *exportSession = [[AVAssetExportSession alloc] initWithAsset:theAsset presetName:AVAssetExportPresetLowQuality];
[exportSession setOutputURL:[NSURL URLWithString:videoURL]];
[exportSession setOutputFileType:AVFileTypeQuickTimeMovie];
[exportSession exportAsynchronouslyWithCompletionHandler:^ {
switch ([exportSession status]) {
case AVAssetExportSessionStatusFailed:
NSLog(@"Export session faied with error: %@", [exportSession error]);
break;
default:
//[self mediaIsReady];
break;
}
}];
}
};
[library writeVideoAtPathToSavedPhotosAlbum:[NSURL URLWithString:videoURL] completionBlock:completionBlock];
});
}
会是怎样降低视频质量和压缩其之间的差异压缩视频?或者你的意思是压缩像压缩? – 2011-04-19 12:36:31