在录制视频之前调用相机视图时,我已经实现了叠加视图。
pickerController.cameraOverlayView =myOverlay;
录制视频并通过电子邮件共享后,可以进行视频录制并将视频保存到“相册”中。
如果我将视频质量用作“高质量”,则录制的视频已经变得很大。例如,如果我以高质量录制视频30秒钟,则录制的视频已变为30-40 mb。
pickerController.videoQuality = UIImagePickerControllerQualityTypeHigh;
我如何编程才能在共享之前压缩高质量的录制视频,就像Apple对内置视频录制器的处理方式一样?
请指导我解决此问题。
谢谢!
更新:
这是我最近正在尝试的方法,但仍然没有成功:我想压缩录制的音频,并将它们录制到didFinishPickingMediaWithInfo并将其实际的视频路径本身存储在同一相册中,而不是其他位置。当我从照片库中选取时,我测试了将相同的视频压缩到非常小的尺寸,但是虽然我使用了下面的AVAssetExportSession代码,但是从相机拍摄并通过didFinishPickingMediaWithInfo来的相同视频未压缩。
- (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);