FUCamera.h 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. //
  2. // FUCamera.h
  3. // FUAPIDemo
  4. //
  5. // Created by liuyang on 2016/12/26.
  6. // Copyright © 2016年 liuyang. All rights reserved.
  7. //
  8. #import <Foundation/Foundation.h>
  9. #import <AVFoundation/AVFoundation.h>
  10. @class FUCamera;
  11. typedef NS_ENUM( NSInteger, FUCameraFocusModel) {
  12. /* 先找人脸对焦模式 */
  13. FUCameraModelAutoFace,
  14. /* 固定点对焦模式 */
  15. FUCameraModelChangeless
  16. };
  17. @protocol FUCameraDelegate <NSObject>
  18. - (void)didOutputVideoSampleBuffer:(CMSampleBufferRef)sampleBuffer;
  19. @end
  20. @protocol FUCameraDataSource <NSObject>
  21. - (CGPoint)faceCenterInImage:(FUCamera *)camera ;
  22. @end
  23. @interface FUCamera : NSObject
  24. @property (nonatomic, weak) id<FUCameraDelegate> delegate;
  25. @property (nonatomic, weak) id<FUCameraDataSource> dataSource;
  26. @property (nonatomic, assign, readonly) BOOL isFrontCamera;
  27. @property (assign, nonatomic) int captureFormat; //采集格式
  28. @property (copy , nonatomic) dispatch_queue_t videoCaptureQueue;//视频采集的队列
  29. @property (copy , nonatomic) dispatch_queue_t audioCaptureQueue;//音频采集队列
  30. @property (copy , nonatomic) dispatch_queue_t tmpCaptureQueue;//视频采集的队列
  31. - (instancetype)initWithCameraPosition:(AVCaptureDevicePosition)cameraPosition captureFormat:(int)captureFormat;
  32. - (void)startCapture;
  33. - (void)stopCapture;
  34. - (void)changeCameraInputDeviceisFront:(BOOL)isFront;
  35. - (void)takePhotoAndSave;
  36. - (void)startRecord;
  37. - (void)stopRecordWithCompletionHandler:(void (^)(NSString *videoPath))handler;
  38. - (void)addAudio;
  39. - (void)removeAudio;
  40. /* 当前分辨率是否支持前后置 */
  41. -(BOOL)supportsAVCaptureSessionPreset:(BOOL)isFront;
  42. /**
  43. 设置采集方向
  44. @param orientation 方向
  45. */
  46. - (void)setCaptureVideoOrientation:(AVCaptureVideoOrientation)orientation;
  47. /**
  48. 查询当前相机最大曝光补偿信息
  49. @param current 当前
  50. @param max 最大
  51. @param min 最小
  52. */
  53. - (void)getCurrentExposureValue:(float *)current max:(float *)max min:(float *)min;
  54. /**
  55. 恢复以屏幕中心自动连续对焦和曝光
  56. */
  57. - (void)resetFocusAndExposureModes;
  58. /**
  59. 修改采集分辨率
  60. @param sessionPreset string constants
  61. */
  62. -(BOOL)changeSessionPreset:(AVCaptureSessionPreset)sessionPreset;
  63. /**
  64. 修改采集视频镜像关系
  65. @param videoMirrored videoMirrore
  66. */
  67. -(void)changeVideoMirrored:(BOOL)videoMirrored;
  68. /**
  69. 修改帧率
  70. 在iOS上,使用AvCaptureDevice的setActiveFormat:和AvCaptureSession的setSessionPreset:是互斥的。
  71. 如果 frameRate <= 30 setActiveFormat 则该设备所连接的会话将其预设更改为avCaptureSessionPresetinputPriority
  72. */
  73. -(void)changeVideoFrameRate:(int)frameRate;
  74. - (void)setExposureValue:(float)value;
  75. /// 设置曝光模式和兴趣点
  76. /// @param focusMode 对焦模式
  77. /// @param exposureMode 曝光模式
  78. /// @param point 兴趣点
  79. /// @param monitorSubjectAreaChange 是否监听主题变化
  80. - (void)focusWithMode:(AVCaptureFocusMode)focusMode exposeWithMode:(AVCaptureExposureMode)exposureMode atDevicePoint:(CGPoint)point monitorSubjectAreaChange:(BOOL)monitorSubjectAreaChange;
  81. /// 修改对焦模式
  82. /// @param modle 对焦模式
  83. -(void)cameraChangeModle:(FUCameraFocusModel)modle;
  84. // 缩放
  85. // 可用于模拟对焦
  86. - (void)setZoomValue:(CGFloat)zoomValue;
  87. @end