视频采集

视频录制

视频录制大体上有两种方式: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

你可能感兴趣的:(视频采集)