美文网首页
视频采集

视频采集

作者: DDY | 来源:发表于2016-11-01 17:51 被阅读49次

    视频录制

    视频录制大体上有两种方式:UIImagePickerController方式和AVFoundation方式,前者简单易用但是不利于定制和一些复杂操作,后者反之。

    * UIImagePickerController视频录制
    AVAuthorizationStatus authStatus = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeVideo];
    if (authStatus == AVAuthorizationStatusRestricted
        || authStatus == AVAuthorizationStatusDenied) {
      NSLog(@"摄像头已被禁用,您可在设置应用程序中进行开启");
      return;
    }
     
    if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {
      UIImagePickerController *picker = [[UIImagePickerController alloc] init];
      picker.delegate = self;
      picker.allowsEditing = YES;
      picker.sourceType = UIImagePickerControllerSourceTypeCamera;
      picker.videoQuality = UIImagePickerControllerQualityType640x480; //录像质量
      picker.videoMaximumDuration = 5 * 60.0f; // 限制视频录制最多不超过5分钟
      picker.mediaTypes = @[(NSString *)kUTTypeMovie];
      [self presentViewController:picker animated:YES completion:NULL];
      self.shouldAsync = YES;
    } else {
      NSLog(@"手机不支持摄像");
    } 
    
    * AVFoundation视频录制
    /**
     *  AVCaptureVideoDataOutputSampleBufferDelegate : 获取实时拍照时视频流
     *  AVCaptureAudioDataOutputSampleBufferDelegate : 获取实时拍照时音频流
     *  AVCaptureMetadataOutputObjectsDelegate : 获取元数据(数据的信息)输出
     *  AVCaptureSession : 媒体(音/视频)捕获会话,负责把捕获的数据输出到输出设备中,可以有多个输入输出
     *  AVCaptureDevice:输入设备(麦克风、摄像头),通过该对象可设置物理设备的属性(相机聚焦、白平衡等)
     *  AVCaptureDeviceInput : 设备输入数据管理对象,可根据AVCaptureDevice创建对应的AVCaptureDeviceInput对象,该对象将会被添加到AVCaptureSession中管理
     *  AVCaptureOutput : 输出数据管理对象,用于接收各类输出数据,通常使用对应的子类AVCaptureAudioDataOutput、AVCaptureStillImageOutput、AVCaptureVideoDataOutput、AVCaptureFileOutput,该对象将会被添加到AVCaptureSession中管理。注意:前面几个对象的输出数据都是NSData类型,而AVCaptureFileOutput代表数据以文件形式输出,类似的,AVCaptureFileOutput也不会直接创建使用,通常会使用其子类:AVCaptureAudioFileOutput、AVCaptureMovieFileOutput。当把一个输入或者输出添加到AVCaptureSession之后AVCaptureSession就会在所有相符的输入、输出设备之间建立连接(AVCaptionConnection)
     *  AVCaptureConnection : 根据设备输出获得连接
     *  CMFormatDescriptionRef : 格式描述
     *  CIFilter : 滤镜
     *  搜索所有可用的滤镜名称
     *  Swift : let filterNames = CIFilter.filterNamesInCategory(kCICategoryBuiltIn) as [String]
     *  OC :    [CIFilter filterNamesInCategories:@[(NSString *)kCICategoryBuiltIn]]
     *
     *  AVAssetWriter : 可以方便的将图像和音频写成一个完整的视频文件
     *
     *  CMTime : Core Media中精确表示时间
     *  CIContext : CoreImage中上下文
     *  EAGLContext : openGL ES中上下文
     *
     *  AVMutableAudioMixInputParameters : 输入参数可变的音频混合
     *  audioMixInputParametersWithTrack : 音频混音输入参数与轨道
     */
    

    视频录制拼接

    附 :

    系统权限

    例如 :
    [DDYAuthorityMaster cameraAuthorizedSuccess:^{
    // 已经获得权限
    } fail:^{
    // 无权限时处理,防止crash
    }];

    播放器
    AVF 和 ImgPicker

    相关文章

      网友评论

          本文标题:视频采集

          本文链接:https://www.haomeiwen.com/subject/hnemuttx.html