视频信息获取类
class TXVideoInfoReader |
类方法 | |
(TXVideoInfo *) | + getVideoInfo: |
(TXVideoInfo *) | + getVideoInfoWithAsset: |
(void) | + getSampleImages:videoPath:progress: |
(void) | + getSampleImages:videoAsset:progress: |
(void) | + getSampleImages:maxSize:videoAsset:progress: |
(UIImage *) | + getSampleImage:videoPath: |
(UIImage *) | + getSampleImage:videoAsset: |
(void) | + getSampleImagesFromAsset:times:maxSize:progress: |
|
protected |
@notice 1,如果当前image图片为nil,sdk会自动返回上一张image图片 2,sampleProcess 回调不在主线程,如果在回调里面有UI操作,请自行切换到主线程,具体可以参考demo代码
number | 当前采样的是第几张图片(number 从1开始) |
image | 当前采样图片 |
+ (UIImage *) getSampleImage: | (float) | time | |
videoAsset: | (AVAsset *) | videoAsset | |
根据时间获取单帧图片
time | 获取图片的时间 |
videoAsset | 视频AVAsset对象 |
+ (UIImage *) getSampleImage: | (float) | time | |
videoPath: | (NSString *) | videoPath | |
根据时间获取单帧图片
time | 获取图片的时间 |
videoPath | 视频文件路径 |
+ (void) getSampleImages: | (int) | count | |
maxSize: | (CGSize) | maxSize | |
videoAsset: | (AVAsset *) | videoAsset | |
progress: | (sampleProcess) | sampleProcess | |
获取视频的采样图列表
count | 获取的采样图数量(均匀采样) |
maxSize | 缩略图的最大大小,生成的缩略图大小不会超出这个宽高 |
videoAsset | 视频文件属性 |
sampleProcess | 采样进度 |
+ (void) getSampleImages: | (int) | count | |
videoAsset: | (AVAsset *) | videoAsset | |
progress: | (sampleProcess) | sampleProcess | |
获取视频的采样图列表
count | 获取的采样图数量(均匀采样) |
videoAsset | 视频文件属性 |
sampleProcess | 采样进度 |
+ (void) getSampleImages: | (int) | count | |
videoPath: | (NSString *) | videoPath | |
progress: | (sampleProcess) | sampleProcess | |
获取视频的采样图列表
count | 获取的采样图数量(均匀采样) |
videoPath | 视频文件路径 |
sampleProcess | 采样进度 |
+ (void) getSampleImagesFromAsset: | (AVAsset *) | asset | |
times: | (NSArray< NSNumber * > *) | times | |
maxSize: | (CGSize) | maxSize | |
progress: | (sampleProcess) | sampleProcess | |
根据时间列表获取缩略图列表
asset | 视频文件对象 |
times | 获取的时间列表 |
maxSize | 缩略图大小 |
+ (TXVideoInfo *) getVideoInfo: | (NSString *) | videoPath |
获取视频文件信息
videoPath | 视频文件路径 |
+ (TXVideoInfo *) getVideoInfoWithAsset: | (AVAsset *) | videoAsset |
获取视频文件信息
videoAsset | 视频文件属性 |
class TXVideoEditer |
- (void) cancelGenerate |
停止视频文件生成
- (void) deleteAllEffect |
删除所有特效 [精简版不支持]
- (void) deleteLastEffect |
删除最后一个添加的特效 [精简版不支持]
- (void) generateVideo: | (TXVideoCompressed) | videoCompressed | |
videoOutputPath: | (NSString *) | videoOutputPath | |
生成视频 优点:兼容性好,支持各种操作类型的视频生成,生成的视频文件在各个平台播放的兼容性好 缺点:生成视频速度稍慢 调用之后在TXVideoGenerateListener里面监听结果回调
videoCompressed | 视频压缩质量 |
videoOutputPath | 视频操作之后存储路径 |
- (void) generateVideoWithTwoPass: | (TXVideoCompressed) | videoCompressed | |
videoOutputPath: | (NSString *) | videoOutputPath | |
两次扫描生成视频(Two-Pass Encoding) [精简版不支持] 优点:兼容性好,在同等码率下视频更加清晰,可以在较低码率下保持视频质量,支持各种操作类型的视频生成,生成的视频文件在各个平台播放的兼容性好 缺点:生成视频慢 调用之后在TXVideoGenerateListener里面监听结果回调
videoCompressed | 视频压缩质量 |
videoOutputPath | 视频操作之后存储路径 |
- (instancetype) initWithPreview: | (TXPreviewParam *) | param |
默认初始化方法
param | 编辑器画面预览参数 |
- (void) pauseGenerate |
暂停视频生成,仅适用于generateVideo,quickGenerateVideo调用无效 @discussion SDK生成视频默认采用的是硬编码(编码效率高,编码出来的图像效果好),硬编码器在程序进后台后会停止工作,从而导致视频生成失败, 这里新增了两个接口pauseGenerate,resumeGenerate,程序进后台后您可以调用pauseGenerate暂停视频生成,程序重新进前台后, 您可以调用resumeGenerate 继续视频生成,这里需要注意的是,调用resumeGenerate,sdk会重启硬编码器,会有一定的概率重启失败, 或则重启后前几帧数据编码失败,这个时候SDK内部会在 TXVideoGenerateListener 抛出编码错误事件,收到错误事件后您需要重新生成视频。
- (void) pausePlay |
暂停播放
- (void) previewAtTime: | (CGFloat) | time |
渲染某一时刻的视频画面
time | 预览帧时间(s) |
- (void) quickGenerateVideo: | (TXVideoCompressed) | videoCompressed | |
videoOutputPath: | (NSString *) | videoOutputPath | |
使用系统函数快速生成视频 优点:生成视频速度快 缺点:1,剪切出来的视频在各个平台播放的兼容性稍差 2,只有剪切和压缩操作才会使用系统函数,其他情况系统不支持,SDK内部会自动走正常视频生成的逻辑 调用之后在 TXVideoGenerateListener 里面监听结果回调
videoCompressed | 视频压缩质量 |
videoOutputPath | 视频操作之后存储路径 |
- (void) resumeGenerate |
继续视频生成,仅适用于generateVideo,quickGenerateVideo调用无效
- (void) resumePlay |
继续播放
- (void) setAnimatedPasterList: | (NSArray< TXAnimatedPaster * > *) | animatedPasterList |
设置动图列表 [精简版不支持]
animatedPasterList | 动态贴纸列表 |
- (void) setBeautyFilter: | (float) | beautyLevel | |
setWhiteningLevel: | (float) | whiteningLevel | |
设置美颜,美白级别 0~9
beautyLevel | 磨皮级别 0~9 |
whiteningLevel | 美白级别 0~9 |
- (void) setBGM: | (NSString *) | path | |
result: | (void(^)(int)) | result | |
设置背景音乐 [精简版不支持]
path | 音乐文件路径 |
result | 0:成功, -1:音乐文件格式不支持 |
- (void) setBGMAsset: | (AVAsset *) | asset | |
result: | (void(^)(int)) | result | |
设置背景音乐 [精简版不支持]
asset | 音乐AVAsset对象, 从系统媒体库loading出来的音乐,可以直接传入对应的音乐属性,会极大的降低音乐从系统媒体库loading的时间,具体请参考demo用法 |
result | 0:成功, -1:音乐文件格式不支持 |
- (void) setBGMAtVideoTime: | (float) | time |
设置背景音乐在视频的添加的起始位置 [精简版不支持]
time | 背景音乐在视频的添加的起始时间 |
- (void) setBGMFadeInDuration: | (float) | fadeInDuration | |
fadeOutDuration: | (float) | fadeOutDuration | |
设置背景音淡入淡出
fadeInDuration | 淡入持续时长 (s) |
fadeOutDuration | 淡出持续时长 (s) |
- (void) setBGMLoop: | (BOOL) | isLoop |
设置背景音乐是否循环播放 [精简版不支持]
isLoop | 是否循环播放 |
- (void) setBGMStartTime: | (float) | startTime | |
endTime: | (float) | endTime | |
设置背景音乐的起始时间和结束时间 [精简版不支持]
startTime | 音乐起始时间 |
endTime | 音乐结束时间 |
- (void) setBGMVolume: | (float) | volume |
设置背景音乐声音大小 [精简版不支持]
volume | 背景音量, 取值范围 0.0 ~ 1.0 |
- (void) setCutFromTime: | (float) | startTime | |
toTime: | (float) | endTime | |
设置视频剪裁
startTime | 视频起始时间 |
endTime | 视频结束时间 |
- (void) setFilter: | (UIImage *) | image |
设置特效滤镜
image | 滤镜图片 |
- (void) setFilter: | (UIImage *) | leftFilter | |
leftIntensity: | (CGFloat) | leftIntensity | |
rightFilter: | (UIImage *) | rightFilter | |
rightIntensity: | (CGFloat) | rightIntensity | |
leftRatio: | (CGFloat) | leftRatio | |
设置两个滤镜效果
leftFilter | 左滤镜图片(nil代表无左滤镜) |
leftIntensity | 左滤镜浓度 |
rightFilter | 右滤镜图片(nil代表无右滤镜) |
rightIntensity | 右滤镜浓度 |
leftRatio | 左滤镜所占比例 |
- (void) setPasterList: | (NSArray< TXPaster * > *) | pasterList |
设置静态贴纸 [精简版不支持]
pasterList | 静态贴纸列表 |
- (int) setPictureList: | (NSArray< UIImage * > *) | pitureList | |
fps: | (int) | fps | |
设置转场图片列表 [精简版不支持]
pitureList | 转场图片列表,至少设置三张图片 (tips :图片最好压缩到720P以下(参考demo用法),否则内存占用可能过大,导致编辑过程异常) |
fps | 转场图片生成视频后的fps (15 ~ 30) |
- (void) setPictureTransition: | (TXTransitionType) | transitionType | |
duration: | (void(^)(CGFloat)) | duration | |
设置图片转场类型 [精简版不支持]
transitionType | 转场类型,详情见 TXTransitionType |
duration | 转场视频时长(tips:同一个图片列表,每种转场动画的持续时间可能不一样,这里可以获取转场图片的持续时长); |
- (void) setRenderRotation: | (int) | rotation |
设置画面渲染角度 [精简版不支持]
rotation | 画面渲染角度, 必须是90的倍数 |
- (void) setRepeatPlay: | (NSArray< TXRepeat * > *) | repeatList |
设置重复播放 [精简版不支持]
repeatList | 重复播放的范围列表 |
- (void) setReverse: | (BOOL) | isReverse |
设置倒放 [精简版不支持]
isReverse | 是否倒放 |
- (void) setSpecialRatio: | (float) | specialRatio |
设置滤镜效果程度
specialRatio | 从0到1,越大滤镜效果越明显,默认取值0.5 |
- (void) setSpeedList: | (NSArray< TXSpeed * > *) | speedList |
设置视频加速播级别 [精简版不支持]
speedList | 加速范围列表 |
- (void) setSubtitleList: | (NSArray< TXSubtitle * > *) | subtitleList |
设置字幕(气泡)列表 [精简版不支持]
subtitleList | 字幕列表 |
- (void) setTailWaterMark: | (UIImage *) | tailWaterMark | |
normalizationFrame: | (CGRect) | normalizationFrame | |
duration: | (CGFloat) | duration | |
设置片尾水印 [精简版不支持]
tailWaterMark | 片尾水印图片 |
normalizationFrame | 水印相对于视频图像的归一化frame,x,y,width,height 取值范围 0~1; height不用设置,sdk内部会根据水印宽高比自动计算height; 比如视频图像大小为(540,960) frame设置为(0.1,0.1,0.1,0), 水印的实际像素坐标为(540 *,960 * 0.1,540 * 0.1 ,540 * 0.1 * waterMark.size.height / waterMark.size.width) |
duration | 水印的持续时长 |
- (int) setVideoAsset: | (AVAsset *) | videoAsset |
设置视频 AVAsset
videoAsset | 视频AVAsset对象,从本地相册loading出来的视频,可以直接传入对应的视频属性,会极大的降低视频从相册loading的时间,具体请参考demo用法 |
- (void) setVideoBitrate: | (int) | bitrate |
设置视频码率
bitrate | 视频码率 单位:kbps 如果设置了码率,SDK生成视频会优先使用这个码率,注意码率不要太大或则太小,码率太小视频会模糊不清,码率太大,生成视频体积会很大 这里建议设置范围为:600~12000,如果没有调用这个接口,SDK内部会根据压缩质量自动计算码率 |
- (int) setVideoPath: | (NSString *) | videoPath |
Tips: 版本以后,SDK支持图片编辑,这里需要注意的是,只能单独对图片或则视频进行编辑,暂不支持图片和视频的混合编辑。 视频编辑暂不支持的功能:转场动画 图片编辑暂不支持的功能:重复,倒放,快速/慢速,片尾水印, 旋转 设置视频文件路径
videoPath | 视频文件路径 |
- (void) setVideoVolume: | (float) | volume |
设置视频声音大小 [精简版不支持]
volume | 音量, 取值范围 0.0 ~ 1.0 |
- (void) setWaterMark: | (UIImage *) | waterMark | |
normalizationFrame: | (CGRect) | normalizationFrame | |
设置全局水印 [精简版不支持]
waterMark | 全局水印图片 |
normalizationFrame | 水印相对于视频图像的归一化frame,x,y,width,height 取值范围 0~1; height不用设置,sdk内部会根据水印宽高比自动计算height; 比如视频图像大小为(540,960) frame设置为(0.1,0.1,0.1,0), 水印的实际像素坐标为(540 *,960 * 0.1,540 * 0.1 ,540 * 0.1 * waterMark.size.height / waterMark.size.width) |
- (void) startEffect: | (TXEffectType) | type | |
startTime: | (float) | startTime | |
开始特效 [精简版不支持]
type | 特效类型 |
startTime | 特效开始时间 |
- (void) startPlayFromTime: | (CGFloat) | startTime | |
toTime: | (CGFloat) | endTime | |
播放某一时间段的视频
startTime | 播放起始时间(s) |
endTime | 播放结束时间(s) |
- (void) stopEffect: | (TXEffectType) | type | |
endTime: | (float) | endTime | |
结束特效 [精简版不支持]
type | 特效类型 |
endTime | 特效结束时间 |
- (void) stopPlay |
停止播放
|
readwritenonatomicweak |
生成视频回调的委托对象, 可以获取生成进度与完成时间等
|
readwritenonatomicweak |
视频预览回调的委托对象,可以获取视频的播放进度等
|
readnonatomicassign |
判断是否支持TwoPass-Encoding [精简版不支持]
|
readwritenonatomicweak |
视频画面处理的委托对象,可以获取视频画面的OpenGL纹理ID [精简版不支持]
class TXVideoJoiner |
构造函数 | |
(instancetype) | - initWithPreview: |
(int) | - setVideoPathList: |
(int) | - setVideoAssetList: |
(void) | - setVideoVolumes: |
(void) | - startPlay |
(void) | - pausePlay |
(void) | - resumePlay |
(void) | - stopPlay |
(void) | - joinVideo:videoOutputPath: |
(void) | - setSplitScreenList:canvasWidth:canvasHeight: |
(void) | - splitJoinVideo:videoOutputPath: |
(void) | - cancelJoin |
属性 | |
id< TXVideoJoinerListener > | joinerDelegate |
id< TXVideoPreviewListener > | previewDelegate |
- (void) cancelJoin |
停止视频文件合成
- (instancetype) initWithPreview: | (TXPreviewParam *) | param |
初始化 TXVideoJoiner ,如果您不需要预览,param 可以设置为nil
param | 参考 TXPreviewParam |
- (void) joinVideo: | (TXVideoCompressed) | videoCompressed | |
videoOutputPath: | (NSString *) | videoOutputPath | |
合成视频 SDK内部会自动判断视频是否可以快速合成,如果可以,会优先走快速合成逻辑 调用后在TXVideoComposeListener里面监听结果回调
videoCompressed | 视频压缩质量 |
videoOutputPath | 生成新的视频存储路径 |
- (void) pausePlay |
暂停播放
- (void) resumePlay |
继续播放
- (void) setSplitScreenList: | (NSArray< NSValue * > *) | rects | |
canvasWidth: | (int) | canvasWidth | |
canvasHeight: | (int) | canvasHeight | |
设置分屏合成坐标 使用方法详见demo示例
rects | 需要合成视频的坐标 |
canvasWidth | 画布宽度,也是分屏合成之后视频的宽度 |
canvasHeight | 画布高度,也是分屏合成之后视频的高度 |
- (int) setVideoAssetList: | (NSArray< AVAsset * > *) | videoAssetList |
设置视频文件列表 相册的视频文件建议使用这个接口
videoAssetList | 视频AVAsset对象列表,从本地相册loading出视频列表后,可以直接传入对应的视频属性列表,会极大的降低视频从相册loading的时间,具体请参考demo用法 |
- (int) setVideoPathList: | (NSArray *) | videoPathList |
设置视频文件列表 app本地的视频文件建议使用这个接口
videoPathList | 视频路径列表 |
- (void) setVideoVolumes: | (NSArray< NSNumber * > *) | volumes |
设置视频文件列表中每个视频的声音大小(只针对分屏合成有效果)
volumes | 视频音量值列表, 每一个音量值的取值范围 0.0 ~ 1.0 |
- (void) splitJoinVideo: | (TXVideoCompressed) | videoCompressed | |
videoOutputPath: | (NSString *) | videoOutputPath | |
分屏合成
videoCompressed | 视频压缩质量 |
videoOutputPath | 生成新的视频存储路径 |
- (void) startPlay |
开启视频播放,会从视频的起始位置开始播放 (需要在setVideoPathList之后调用)
- (void) stopPlay |
停止播放
|
readwritenonatomicweak |
合成的回调委托对象
|
readwritenonatomicweak |
预览的回调委托对象