JXCaptureMedia.h 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. #import <UIKit/UIKit.h>
  2. #import <AVFoundation/AVFoundation.h>
  3. #import <CoreGraphics/CoreGraphics.h>
  4. #import <CoreVideo/CoreVideo.h>
  5. #import <CoreMedia/CoreMedia.h>
  6. //@class AVAssetWriter;
  7. #define kVideoRecordEndNotifaction @"kVideoRecordEndNotifaction"//退出程序时,保存未读消息
  8. /*!
  9. @class AVController
  10. @author Benjamin Loulier
  11. @brief Controller to demonstrate how we can have a direct access to the camera using the iPhone SDK 4
  12. */
  13. @interface JXCaptureMedia : NSObject <AVCaptureVideoDataOutputSampleBufferDelegate, AVCaptureAudioDataOutputSampleBufferDelegate> {
  14. AVCaptureSession *_capSession;
  15. UIImageView *_imageView;
  16. CALayer *_customLayer;
  17. AVCaptureVideoPreviewLayer *_prevLayer;
  18. BOOL _isRecording;
  19. BOOL _isPaused;
  20. AVAssetWriter* _writer;
  21. AVAssetWriterInput* _audioInput;
  22. AVAssetWriterInput* _videoInput;
  23. AVCaptureVideoDataOutput *_captureVideo;
  24. AVCaptureAudioDataOutput *_captureAudio;
  25. AVCaptureDeviceInput *_deviceVideo;
  26. AVCaptureDeviceInput *_deviceAudio;
  27. int _writeVideoCount;
  28. int _writeAudioCount;
  29. CMTime _startSessionTime;
  30. NSString* _lastShowTime;
  31. // NSString* _lastSaveFile;
  32. AVAssetWriterInputPixelBufferAdaptor *_adaptor;
  33. size_t _sampleWidth;
  34. size_t _sampleHeight;
  35. BOOL _isSendEnd;
  36. NSInteger _saveCount;
  37. }
  38. @property (nonatomic, strong) AVCaptureSession *captureSession;
  39. @property (nonatomic, strong) UIImage* logoImage;//视频水印
  40. @property (nonatomic, strong) AVCaptureVideoPreviewLayer* previewLayer;
  41. @property (nonatomic, strong) NSString* outputFileName;//输出的视频文件名
  42. @property (nonatomic, strong) NSMutableArray* outputImageFiles;//截图的文件列表
  43. @property (assign) CGRect logoRect;//水印范围
  44. @property (assign) CGRect previewRect;//水印范围
  45. @property (nonatomic, strong) UILabel* labelTime;//显示当前时间
  46. @property (nonatomic, assign) BOOL isReciprocal;//显示倒计时
  47. @property (assign) int saveVideoToImage;//每隔多少秒保存一张截图jpg
  48. @property (assign) BOOL isOnlySaveFirstImage;//只保存第一张截图
  49. @property (assign) BOOL isRecording;
  50. @property (assign) BOOL isEditVideo;
  51. @property (assign) BOOL isFrontFace;//是否前置自拍摄像头
  52. @property (assign) BOOL isRecordAudio;//是否录音频
  53. @property (assign) int videoWidth;//视频宽,默认为480
  54. @property (assign) int videoHeight;//视频高,默认为320
  55. @property (assign) int videoFrames;//视频压缩后帧率,默认为10
  56. @property (assign) int videoEncodeBitRate;//视频压缩后码流,默认为200K
  57. @property (assign) int audioEncodeBitRate;//音频压缩后码流,默认为24K
  58. @property (assign) int audioSampleRate;//音频采样率,默认为22050
  59. @property (assign) int audioChannels;//音频声道,默认为1
  60. @property (assign,setter = setFlashMode:) AVCaptureFlashMode curFlashMode;//当前闪光灯模式
  61. @property (readwrite) AVCaptureVideoOrientation referenceOrientation;
  62. @property (readwrite) AVCaptureVideoOrientation videoOrientation;
  63. @property(nonatomic,assign) NSInteger timeLen;//时长
  64. @property(nonatomic,assign) int maxTime;//最大时长,自动停止
  65. -(BOOL) createPreview:(UIView*)parentView;//传入视频预览窗口句柄
  66. -(void) start;//开始录像
  67. -(void) stop;//结束录像
  68. -(BOOL) pause;
  69. -(BOOL) play;
  70. -(void) setFlashMode:(AVCaptureFlashMode)n;//开关闪光灯
  71. -(BOOL) toggleCamera;//切换摄像头
  72. -(void)clearTempFile;
  73. -(NSUInteger) cameraCount;//摄像头数量
  74. @end