SLAvWriterInput.h 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. //
  2. // SLAvWriterInput.h
  3. // DarkMode
  4. //
  5. // Created by wsl on 2019/11/7.
  6. // Copyright © 2019 https://github.com/wsl2ls ----- All rights reserved.
  7. //
  8. #import <Foundation/Foundation.h>
  9. #import <AVFoundation/AVFoundation.h>
  10. /// 写入的音视频文件类型
  11. typedef NS_ENUM(NSUInteger, SLAvWriterFileType) {
  12. /// 音视频 默认
  13. SLAvWriterFileTypeVideo = 0,
  14. /// 无声视频
  15. SLAvWriterFileTypeSilentVideo,
  16. /// 音频
  17. SLAvWriterFileTypeAudio
  18. };
  19. @class SLAvWriterInput;
  20. /// 音视频写入完成
  21. @protocol SLAvWriterInputDelegate <NSObject>
  22. @optional
  23. /// 写入音视频完成,返回文件地址
  24. /// @param outputFileURL 文件地址
  25. /// @param error 错误信息
  26. - (void)writerInput:(SLAvWriterInput *_Nonnull)writerInput didFinishRecordingToOutputFileAtURL:(NSURL *_Nullable)outputFileURL error:(nullable NSError *)error;
  27. @end
  28. NS_ASSUME_NONNULL_BEGIN
  29. /// 写入音视频样本 生成文件
  30. @interface SLAvWriterInput : NSObject
  31. /// 视频宽高 默认设备宽高 已home键朝下为准
  32. @property (nonatomic, assign) CGSize videoSize;
  33. ///写入代理
  34. @property (nonatomic, weak) id<SLAvWriterInputDelegate> delegate;
  35. // 开始写入 设置写入的输出文件地址和格式、设备方向
  36. - (void)startWritingToOutputFileAtPath:(NSString *)path fileType:(SLAvWriterFileType)fileType deviceOrientation:(UIDeviceOrientation)deviceOrientation;
  37. /// 实时写入视频样本 如果filterImage == nil,就表示不需要加滤镜
  38. - (void)writingVideoSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection filterImage:(CIImage * _Nullable)filterImage;
  39. /// 实时写入音频样本
  40. - (void)writingAudioSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection;
  41. /// 完成写入
  42. - (void)finishWriting;
  43. @end
  44. NS_ASSUME_NONNULL_END