KSYAVMuxer.h 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. //
  2. // KSYAVCompositon.h
  3. // KSYStreamer
  4. //
  5. // Created by yiqian on 6/16/16.
  6. // Copyright © 2016 yiqian. All rights reserved.
  7. //
  8. #import <Foundation/Foundation.h>
  9. /*!
  10. * @abstract 交织处理状态
  11. */
  12. typedef NS_ENUM(NSInteger, KSYAVMuxerStatus) {
  13. /// 初始状态
  14. KSYAVMuxerStatusIdle,
  15. /// 处理中
  16. KSYAVMuxerStatusMuxing,
  17. /// 处理完成
  18. KSYAVMuxerStatusCompleted,
  19. /// 处理失败
  20. KSYAVMuxerStatusFailed,
  21. /// 处理任务被取消
  22. KSYAVMuxerStatusCancelled
  23. };
  24. /**
  25. 音视频交织工具类
  26. * 将输入的纯音频文件和纯视频文件交织输出为正常的视频文件
  27. * 本工具类不做解码和编码,仅仅将音视频交织
  28. * 视频文件要求是只有单路图像, 如果有音频会被丢弃, 音频文件反之
  29. * 支持输出的文件格式: flv, MP4
  30. */
  31. @interface KSYAVMuxer : NSObject
  32. #pragma mark - cfgs
  33. /**
  34. @abstract 当视频数据比音频数据短时,是否循环使用视频数据 (默认为NO)
  35. */
  36. @property(atomic, assign) BOOL bLoopVideo;
  37. /**
  38. @abstract 当音频数据比视频数据短时,是否循环使用音频数据 (默认为NO)
  39. @discussion 当bLoopVideo和bLoopAudio都为NO时, 比较长的数据被丢弃
  40. */
  41. @property(atomic, assign) BOOL bLoopAudio;
  42. /**
  43. @abstract 最后输出视频文件时附带的metadata (默认为nil)
  44. @discussion key 一定要是 NSString* 类型的
  45. */
  46. @property(atomic, copy) NSDictionary * metadata;
  47. #pragma mark - process
  48. /**
  49. @abstract 启动处理(同步)
  50. @param vFile 为输入的纯视频文件的路径
  51. @param aFile 为输入的音频文件的路径
  52. @param oFile 为输出文件的路径
  53. */
  54. - (void) startMuxVideo:(NSURL*) vFile
  55. andAudio:(NSURL*) aFile
  56. To:(NSURL*) oFile;
  57. /**
  58. @abstract 启动处理(异步)
  59. @param vFile 为输入的纯视频文件的路径
  60. @param aFile 为输入的音频文件的路径
  61. @param oFile 为输出文件的路径
  62. */
  63. - (void) asyncMuxVideo:(NSURL*) vFile
  64. andAudio:(NSURL*) aFile
  65. To:(NSURL*) oFile;
  66. /**
  67. @abstract 中止处理
  68. */
  69. - (void) cancelMux;
  70. #pragma mark - handlers
  71. /**
  72. @abstract 异步处理完成回调
  73. @param status
  74. */
  75. @property(nonatomic, copy) void(^muxCompleteBlock)(KSYAVMuxerStatus status );
  76. @end