//
// ViewController.m
// PickUp
//
// Created by yiral on 16/6/29.
// Copyright © 2016年 qust. All rights reserved.
//
#import "ViewController.h"
#import <MobileCoreServices/MobileCoreServices.h>
#import <AVFoundation/AVFoundation.h>
@interface ViewController ()<UIImagePickerControllerDelegate,UINavigationControllerDelegate>
@property (weak,nonatomic) IBOutletUIImageView *imageView;
@property(nonatomic,strong) UIImagePickerController *imagePick;
@property (assign,nonatomic)int isVideo;//是否录制视频,如果为1表示录制视频,0代表拍照
@property (strong,nonatomic)UIImagePickerController *imagePicker;
@property (strong ,nonatomic)AVPlayer *player;//播放器,用于录制完视频后播放视频
@end
@implementation ViewController
- (IBAction)buttonAction:(id)sender {
if ([UIImagePickerController
isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {
NSArray *availableMediaTypes = [UIImagePickerController
availableMediaTypesForSourceType:UIImagePickerControllerSourceTypeCamera];
if ([availableMediaTypescontainsObject:(NSString *)kUTTypeMovie]) {
// 支持视频录制
_imagePicker=[[UIImagePickerControlleralloc]init];
_imagePicker.sourceType=UIImagePickerControllerSourceTypeCamera;//设置image picker的来源,这里设置为摄像头
_imagePicker.cameraDevice=UIImagePickerControllerCameraDeviceRear;//设置使用哪个摄像头,这里设置为后置摄像头
if (self.isVideo) {
_imagePicker.mediaTypes=@[(NSString *)kUTTypeMovie];
_imagePicker.videoQuality=UIImagePickerControllerQualityTypeIFrame1280x720;
_imagePicker.cameraCaptureMode=UIImagePickerControllerCameraCaptureModeVideo;//设置摄像头模式(拍照,录制视频)
}
else{
_imagePicker.cameraCaptureMode=UIImagePickerControllerCameraCaptureModePhoto;
}
_imagePicker.allowsEditing=YES;//允许编辑
_imagePicker.delegate=self;//设置代理,检测操作
}
}
[selfpresentViewController:self.imagePickeranimated:YEScompletion:nil];
}
#pragma mark - UIImagePickerController代理方法
//完成
-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info{
NSString *mediaType=[infoobjectForKey:UIImagePickerControllerMediaType];
if ([mediaTypeisEqualToString:(NSString *)kUTTypeImage]) {//如果是拍照
UIImage *image;
//如果允许编辑则获得编辑后的照片,否则获取原始照片
if (self.imagePicker.allowsEditing) {
image=[info objectForKey:UIImagePickerControllerEditedImage];//获取编辑后的照片
}else{
image=[info objectForKey:UIImagePickerControllerOriginalImage];//获取原始照片
}
[self.imageViewsetImage:image];//显示照片
UIImageWriteToSavedPhotosAlbum(image,nil, nil, nil);//保存到相簿
}elseif([mediaType isEqualToString:(NSString *)kUTTypeMovie]){//如果是录制视频
NSLog(@"video...");
NSURL *url=[infoobjectForKey:UIImagePickerControllerMediaURL];//视频路径
NSString *urlStr=[urlpath];
if (UIVideoAtPathIsCompatibleWithSavedPhotosAlbum(urlStr)) {
//保存视频到相簿,注意也可以使用ALAssetsLibrary来保存
UISaveVideoAtPathToSavedPhotosAlbum(urlStr,self, @selector(video:didFinishSavingWithError:contextInfo:),nil);//保存视频到相簿
}
}
[selfdismissViewControllerAnimated:YEScompletion:nil];
}
-(void)imagePickerControllerDidCancel:(UIImagePickerController *)picker{
NSLog(@"取消");
}
- (void)video:(NSString *)videoPath didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo{
if (error) {
NSLog(@"保存视频过程中发生错误,错误信息:%@",error.localizedDescription);
}else{
NSLog(@"视频保存成功.");
//录制完之后自动播放
NSURL *url=[NSURLfileURLWithPath:videoPath];
_player=[AVPlayerplayerWithURL:url];
AVPlayerLayer *playerLayer=[AVPlayerLayerplayerLayerWithPlayer:_player];
playerLayer.frame=self.imageView.frame;
[self.imageView.layeraddSublayer:playerLayer];
[_playerplay];
}
}
- (void)viewDidLoad {
[superviewDidLoad];
_isVideo=NO;//拍照,反之为YES,为录制视频,顺带保存;
}
- (void)didReceiveMemoryWarning {
[superdidReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end