Taking Videos with the Camera(摄像)

1。导入库,实现协议

   #import <MobileCoreServices/MobileCoreServices.h>

   <UIImagePickerControllerDelegate, UINavigationControllerDelegate>


e.g.

- (BOOL) cameraSupportsMedia:(NSString *)paramMediaType sourceType:(UIImagePickerControllerSourceType)paramSourceType{

    __block BOOL result = NO;   

    if ([paramMediaType length] == 0){

        NSLog(@"Media type is empty.");

        return NO;

    }  

    //获取本机中符合指定资源的所有媒体类型,以便后续判定是否支持

    NSArray *availableMediaTypes =  [UIImagePickerController  availableMediaTypesForSourceType:paramSourceType];   

    [availableMediaTypes  enumerateObjectsUsingBlock:

         ^(id obj, NSUInteger idx, BOOL *stop) {       

         NSString *mediaType = (NSString *)obj;

         if ([mediaType isEqualToString:paramMediaType]){

             result = YES;

             *stop= YES;

         }        

     }];    

    return result;    

}

//是否支持摄像

- (BOOL) doesCameraSupportTakingVideos{  

    //KUTTypeMovie : 视频  

    return [self cameraSupportsMedia:(__bridge NSString *)kUTTypeMovie  sourceType:UIImagePickerControllerSourceTypeCamera];    

}

//是否可用摄像头

- (BOOL) isCameraAvailable{    

    return [UIImagePickerController isSourceTypeAvailable: UIImagePickerControllerSourceTypeCamera];   

}

//delegate:完成选择,注意这里的视频数据并未被保存(到机子中)

- (void)  imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {  

    NSLog(@"Picker returned successfully.");  

    NSLog(@"infoOfPickedMedia:%@", info); //info:包含了挑选的媒体信息   

    NSString  *mediaType = info[UIImagePickerControllerMediaType];   

    if ([mediaType isEqualToString:(__bridge NSString *)kUTTypeMovie]){ //挑选的是视频 

        NSURL *urlOfVideo = info[UIImagePickerControllerMediaURL];

        NSLog(@"Video URL = %@", urlOfVideo); 

        NSError *dataReadingError = nil;    

        //获取到的录制数据    

        NSData *videoData =  [NSDatadataWithContentsOfURL:urlOfVideo 

                                options:NSDataReadingMapped error:&dataReadingError];       

        if (videoData != nil){

            NSLog(@"Successfully loaded the data.");

        } else {

            NSLog(@"Failed to load the data with error = %@", dataReadingError);

        }

    }   

   [picker dismissViewControllerAnimated:YES completion:nil];  

}

//delegate 取消选择

- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker{

    NSLog(@"Picker was cancelled");

    [picker dismissViewControllerAnimated:YES completion:nil];   

}

- (void)actionDisplayPickerController {

    if ([self isCameraAvailable] && [self doesCameraSupportTakingVideos]){

       UIImagePickerController *controller =  [[UIImagePickerController alloc] init];      

        controller.sourceType = UIImagePickerControllerSourceTypeCamera;      

       

        //mediaType:KUTTypeImage / KUTTypeMovie 这里决定了出现的模式窗口imagePickerController是进行摄像还是进行照相

        controller.mediaTypes = @[(__bridge NSString *)kUTTypeMovie];       

        controller.allowsEditing= YES;

        controller.delegate = self;      

        /* 录制质量  UIImagePickerControllerQualityTypeHigh / UIImagePickerControllerQualityTypeMedium */

        controller.videoQualityUIImagePickerControllerQualityTypeHigh;      

        /* 允许摄录的时间 (秒) */

        controller.videoMaximumDuration = 30.0f;       

        [self presentViewController:controller animated:YES completion:nil];        

    } else {

        NSLog(@"Camera is not available.");

    }   

}




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值