KSYAVMuxer.h
2.26 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
//
// 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