PLSAVAssetExportSession.h
5.03 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
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
//
// PLSAVAssetExportSession.h
// PLShortVideoKit
//
// Created by suntongmian on 2017/7/11.
// Copyright © 2017年 Pili Engineering, Qiniu Inc. All rights reserved.
//
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
#import <AVFoundation/AVFoundation.h>
#import "PLSTypeDefines.h"
@class PLSEditAudio;
@class PLSAVAssetExportSession;
@protocol PLSAVAssetExportSessionDelegate <NSObject>
/**
@abstract 输出视频文件的视频数据,用来做滤镜处理
@since v1.1.0
*/
- (CVPixelBufferRef __nonnull)assetExportSession:(PLSAVAssetExportSession *__nonnull)assetExportSession didOutputPixelBuffer:(CVPixelBufferRef __nonnull)pixelBuffer __deprecated_msg("Method deprecated in v1.9.0. Use `assetExportSession: didOutputPixelBuffer: timestamp:`");
/**
@abstract 输出视频文件的视频数据,用来做滤镜处理
@param pixelBuffer 视频帧
@param timestamp 视频帧的时间戳
@since v1.9.0
*/
- (CVPixelBufferRef __nonnull)assetExportSession:(PLSAVAssetExportSession *__nonnull)assetExportSession didOutputPixelBuffer:(CVPixelBufferRef __nonnull)pixelBuffer timestamp:(CMTime)timestamp;
@end
@interface PLSAVAssetExportSession : NSObject
/**
@abstract 操作视频段的代理
@since v1.1.0
*/
@property (weak, nonatomic) __nullable id<PLSAVAssetExportSessionDelegate> delegate;
/**
@property delegateQueue
@abstract 触发代理对象回调时所在的任务队列。
@discussion 默认情况下该值为 nil,此时代理方法都会通过 main queue 异步执行回调。如果你期望可以所有的回调在自己创建或者其他非主线程调用,
可以设置改 delegateQueue 属性。
@see PLSAVAssetExportSessionDelegate
@see delegate
@since v1.1.0
*/
@property (strong, nonatomic) dispatch_queue_t __nullable delegateQueue;
/**
@brief 实例初始化方法
@since v1.1.0
*/
- (instancetype _Nullable )initWithAsset:(AVAsset *_Nullable)asset;
/**
@brief 将视频导出到相册,默认为 NO
@since v1.4.0
*/
@property (assign, nonatomic) BOOL isExportMovieToPhotosAlbum;
/**
@brief 视频导出的文件类型,默认为 PLSFileTypeMPEG4(.mp4)
@since v1.1.0
*/
@property (assign, nonatomic) PLSFileType outputFileType;
/**
@brief 视频导出的路径
@warning 生成 URL 需使用 [NSURL fileURLWithPath:fileName] 方式,让 URL 的 scheme 合法(file://,http://,https:// 等)。
@since v1.1.0
*/
@property (strong, nonatomic) NSURL * _Nullable outputURL;
/**
@brief 视频的码率,默认为原视频的码率
@since v1.11.0
*/
@property (assign, nonatomic) float bitrate;
/**
@brief 视频旋转,默认为 PLSPreviewOrientationPortrait 视频的原始方向
@since v1.7.0
*/
@property (assign, nonatomic) PLSPreviewOrientation videoLayerOrientation;
/**
@brief 视频导出的分辨率
@since v1.5.0
*/
@property (assign, nonatomic) CGSize outputVideoSize;
/**
@brief 是否设置便于网络环境下的传输,默认为 YES
@since v1.1.0
*/
@property (assign, nonatomic) BOOL shouldOptimizeForNetworkUse;
/**
@brief 视频导出的设置信息
@since v1.1.0
*/
@property (strong, nonatomic) NSDictionary * _Nullable outputSettings;
/**
@brief 视频导出的进度
@since v1.1.0
*/
@property (nonatomic, readonly) float progress;
/**
@abstract 视频导出完成的 block
@since v1.1.0
*/
@property (copy, nonatomic) void(^ _Nullable completionBlock)(NSURL * _Nullable url);
/**
@abstract 视频导出失败的 block
@since v1.1.0
*/
@property (copy, nonatomic) void(^ _Nullable failureBlock)(NSError* _Nullable error);
/**
@abstract 视频导出进度的 block,可在该 block 中刷新导出进度条 UI
@since v1.1.0
*/
@property (copy, nonatomic) void(^ _Nullable processingBlock)(float progress);
/**
@brief 异步进行视频导出
@since v1.1.0
*/
- (void)exportAsynchronously;
/**
@brief 取消视频导出
@since v1.1.0
*/
- (void)cancelExport;
/**
* 添加滤镜效果
*
* @param colorImagePath 当前使用的滤镜的颜色表图的路径
@since v1.5.0
*/
- (void)addFilter:(NSString *_Nullable)colorImagePath;
/**
* 添加 MV 图层方法 1, 相当于 addMVLayerWithColor:colorURL alpha:alphaURL timeRange:kCMTimeRangeZero loopEnable:NO
*
* @param colorURL 彩色层视频的地址
* @param alphaURL 被彩色层当作透明层的视频的地址
@since v1.5.0
*/
- (void)addMVLayerWithColor:(NSURL *_Nullable)colorURL alpha:(NSURL *_Nullable)alphaURL;
/**
* 添加 MV 图层方法 2
*
* @param colorURL 彩色层视频的地址
* @param alphaURL 被彩色层当作透明层的视频的地址
* @param timeRange 选取 MV 文件的时间段, 如果选取整个 MV,直接传入 kCMTimeRangeZero 即可
* @param loopEnable 当 MV 时长(timeRange.duration)小于视频时长时,是否循环播放 MV
@since v1.14.0
*/
- (void)addMVLayerWithColor:(NSURL *)colorURL alpha:(NSURL *)alphaURL timeRange:(CMTimeRange)timeRange loopEnable:(BOOL)loopEnable;
@end