KSYGPUCamera.h 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. //
  2. // KSYGPUCamera.h
  3. // KSYStreamer
  4. //
  5. // Created by yiqian on 1/30/16.
  6. // Copyright © 2016 yiqian. All rights reserved.
  7. //
  8. #import <Foundation/Foundation.h>
  9. #import <AVFoundation/AVFoundation.h>
  10. #import <CoreMedia/CoreMedia.h>
  11. #import <GPUImage/GPUImage.h>
  12. /**
  13. 基于 AVFoundation的 音视频采集模块
  14. * 通过回调将采集的音频和视频数据传出
  15. * 将摄像头和音频的常用操作进行封装
  16. * 注意: 同时使用AVFoundation的音视频采集, 可能无法使用后台采集的功能
  17. * 音频采集为可选项
  18. */
  19. @interface KSYGPUCamera : GPUImageVideoCamera <AVCaptureVideoDataOutputSampleBufferDelegate, AVCaptureAudioDataOutputSampleBufferDelegate> {
  20. }
  21. #pragma mark - override
  22. /** Begin a capture session
  23. See AVCaptureSession for acceptable values
  24. @param sessionPreset Session preset to use
  25. @param cameraPosition Camera to capture from
  26. @return nil 表明cameraPosition对应的sessionPreset不支持,初始化不成功
  27. */
  28. - (id)initWithSessionPreset:(NSString *)sessionPreset cameraPosition:(AVCaptureDevicePosition)cameraPosition;
  29. #pragma mark - Torch
  30. /**
  31. @abstract 当前采集设备是否支持闪光灯
  32. @return YES / NO
  33. @discussion 通常只有后置摄像头支持闪光灯
  34. */
  35. - (BOOL) isTorchSupported;
  36. /**
  37. @abstract 开关闪光灯
  38. @discussion 切换闪光灯的开关状态 开 <--> 关
  39. */
  40. - (void) toggleTorch;
  41. /**
  42. @abstract 设置闪光灯
  43. @param mode AVCaptureTorchModeOn/Off
  44. @discussion 设置闪光灯的开关状态
  45. @discussion 开始预览后开始有效
  46. @discussion 请参考 AVCaptureTorchMode
  47. */
  48. - (void) setTorchMode: (AVCaptureTorchMode)mode;
  49. /**
  50. @abstract 判断是否运行
  51. */
  52. @property(readonly, nonatomic) BOOL isRunning;
  53. #pragma mark - raw data
  54. /**
  55. @abstract 音频处理回调接口
  56. @discussion sampleBuffer 原始采集到的音频数据
  57. @discussion 请注意本函数的执行时间,如果太长可能导致不可预知的问题@discussion 请参考 CMSampleBufferRef
  58. @discussion 请参考 CMSampleBufferRef
  59. */
  60. @property(nonatomic, copy) void(^audioProcessingCallback)(CMSampleBufferRef sampleBuffer);
  61. /**
  62. @abstract 视频处理回调接口
  63. @discussion sampleBuffer 原始采集到的视频数据
  64. @discussion 请注意本函数的执行时间,如果太长可能导致不可预知的问题
  65. @discussion 请参考 CMSampleBufferRef
  66. */
  67. @property(nonatomic, copy) void(^videoProcessingCallback)(CMSampleBufferRef sampleBuffer);
  68. /**
  69. @abstract UIInterfaceOrientation 转 AVCaptureVideoOrientation
  70. @param orien UI的朝向
  71. */
  72. + (AVCaptureVideoOrientation) getCapOrientation: (UIInterfaceOrientation) orien;
  73. @end