视频录制
视频录制大体上有两种方式: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
}];
播放器
网友评论