| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- //
- // KSYAVCompositon.h
- // KSYStreamer
- //
- // Created by yiqian on 6/16/16.
- // Copyright © 2016 yiqian. All rights reserved.
- //
- #import <Foundation/Foundation.h>
- /*!
- * @abstract 交织处理状态
- */
- typedef NS_ENUM(NSInteger, KSYAVMuxerStatus) {
- /// 初始状态
- KSYAVMuxerStatusIdle,
- /// 处理中
- KSYAVMuxerStatusMuxing,
- /// 处理完成
- KSYAVMuxerStatusCompleted,
- /// 处理失败
- KSYAVMuxerStatusFailed,
- /// 处理任务被取消
- KSYAVMuxerStatusCancelled
- };
- /**
- 音视频交织工具类
-
- * 将输入的纯音频文件和纯视频文件交织输出为正常的视频文件
- * 本工具类不做解码和编码,仅仅将音视频交织
- * 视频文件要求是只有单路图像, 如果有音频会被丢弃, 音频文件反之
- * 支持输出的文件格式: flv, MP4
- */
- @interface KSYAVMuxer : NSObject
- #pragma mark - cfgs
- /**
- @abstract 当视频数据比音频数据短时,是否循环使用视频数据 (默认为NO)
- */
- @property(atomic, assign) BOOL bLoopVideo;
- /**
- @abstract 当音频数据比视频数据短时,是否循环使用音频数据 (默认为NO)
- @discussion 当bLoopVideo和bLoopAudio都为NO时, 比较长的数据被丢弃
- */
- @property(atomic, assign) BOOL bLoopAudio;
- /**
- @abstract 最后输出视频文件时附带的metadata (默认为nil)
- @discussion key 一定要是 NSString* 类型的
- */
- @property(atomic, copy) NSDictionary * metadata;
- #pragma mark - process
- /**
- @abstract 启动处理(同步)
- @param vFile 为输入的纯视频文件的路径
- @param aFile 为输入的音频文件的路径
- @param oFile 为输出文件的路径
- */
- - (void) startMuxVideo:(NSURL*) vFile
- andAudio:(NSURL*) aFile
- To:(NSURL*) oFile;
- /**
- @abstract 启动处理(异步)
- @param vFile 为输入的纯视频文件的路径
- @param aFile 为输入的音频文件的路径
- @param oFile 为输出文件的路径
- */
- - (void) asyncMuxVideo:(NSURL*) vFile
- andAudio:(NSURL*) aFile
- To:(NSURL*) oFile;
- /**
- @abstract 中止处理
- */
- - (void) cancelMux;
- #pragma mark - handlers
- /**
- @abstract 异步处理完成回调
- @param status
- */
- @property(nonatomic, copy) void(^muxCompleteBlock)(KSYAVMuxerStatus status );
- @end
|