捕捉媒体
2017-12-04 本文已影响5人
学学学q
-
捕捉会话
捕捉会话管理从物理设备得到的数据流,比如摄像机和麦克风设备,输出到一个或多个目的地。可以动态配置输入和输出的线路,让开发者能够在绘画进行中按需重新配置捕捉环境。AVCaptureSession
(捕捉栈的核心类)
-
捕捉设备
AVCaptureDevice
对物理硬件设备定义了大量的控制方法,比如控制摄像头的对焦、曝光、白平衡和闪光灯等。最常用的是defaultDeviceWithMediaType,根据给定的媒体类型返回一个系统指定的默认设备。
AVCaptureDevice *videoDevice = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
-
捕捉设备的输入
这个对象在设备输出数据和捕捉会话间扮演接线板的作用。AVCaptureDeviceInput
NSError *error;
AVCaptureDeviceInput *videoInput = [AVCaptureDeviceInput deviceInputWithDevice:cameraDevice error:&error];
-
捕捉设备的输出
这是一个抽象基类,用于为从捕捉会话得到的数据寻找输出目的地。比如AVCaptureDeviceOutput
AVCaptureStillImageOutput
和AVCaptureMovieFileOutput
,使用它们可以很容易的实现捕捉静态照片和视频的功能。
-
捕捉连接
自定义拍照时,获取拍摄的照片AVCaptureConnection
[self.imageOutput captureStillImageAsynchronouslyFromConnection:conntion completionHandler:^(CMSampleBufferRef _Nullable imageDataSampleBuffer, NSError * _Nullable error) {
if (imageDataSampleBuffer == nil) {
return ;
}
NSData *imageData = [AVCaptureStillImageOutput jpegStillImageNSDataRepresentation:imageDataSampleBuffer];
[_session stopRunning];
UIImage *faceImage = [UIImage imageWithData:imageData];
_currentImage = faceImage;
}];
-
捕捉预览
预览层是一个AVCaptureVideoPreviewLayer
Core Animation
的CALayer
子类,对捕捉视频数据进行实时预览。