LiteAVSDK
腾讯云音视频 SDK ,服务于数万家企业客户的高可用组件,致力于最大限度地节省您的研发成本。
TXVideoEditer

详细描述

视频信息获取类


结构体说明

◆ TXVideoInfoReader

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:
 

成员类型定义说明

◆ sampleProcess

- (typedef BOOL(^ sampleProcess) (int number, UIImage *image))
protected

@notice 1,如果当前image图片为nil,sdk会自动返回上一张image图片 2,sampleProcess 回调不在主线程,如果在回调里面有UI操作,请自行切换到主线程,具体可以参考demo代码

参数
number当前采样的是第几张图片(number 从1开始)
image当前采样图片
返回
是否继续获取下一张图片,YES:继续获取 NO:终止获取

函数文档

◆ getSampleImage:videoAsset:()

+ (UIImage *) getSampleImage: (float)  time
videoAsset: (AVAsset *)  videoAsset 

根据时间获取单帧图片

参数
time获取图片的时间
videoAsset视频AVAsset对象

◆ getSampleImage:videoPath:()

+ (UIImage *) getSampleImage: (float)  time
videoPath: (NSString *)  videoPath 

根据时间获取单帧图片

参数
time获取图片的时间
videoPath视频文件路径

◆ getSampleImages:maxSize:videoAsset:progress:()

+ (void) getSampleImages: (int)  count
maxSize: (CGSize)  maxSize
videoAsset: (AVAsset *)  videoAsset
progress: (sampleProcess sampleProcess 

获取视频的采样图列表

参数
count获取的采样图数量(均匀采样)
maxSize缩略图的最大大小,生成的缩略图大小不会超出这个宽高
videoAsset视频文件属性
sampleProcess采样进度

◆ getSampleImages:videoAsset:progress:()

+ (void) getSampleImages: (int)  count
videoAsset: (AVAsset *)  videoAsset
progress: (sampleProcess sampleProcess 

获取视频的采样图列表

参数
count获取的采样图数量(均匀采样)
videoAsset视频文件属性
sampleProcess采样进度

◆ getSampleImages:videoPath:progress:()

+ (void) getSampleImages: (int)  count
videoPath: (NSString *)  videoPath
progress: (sampleProcess sampleProcess 

获取视频的采样图列表

参数
count获取的采样图数量(均匀采样)
videoPath视频文件路径
sampleProcess采样进度

◆ getSampleImagesFromAsset:times:maxSize:progress:()

+ (void) getSampleImagesFromAsset: (AVAsset *)  asset
times: (NSArray< NSNumber * > *)  times
maxSize: (CGSize)  maxSize
progress: (sampleProcess sampleProcess 

根据时间列表获取缩略图列表

参数
asset视频文件对象
times获取的时间列表
maxSize缩略图大小

◆ getVideoInfo:()

+ (TXVideoInfo *) getVideoInfo: (NSString *)  videoPath

获取视频文件信息

参数
videoPath视频文件路径

◆ getVideoInfoWithAsset:()

+ (TXVideoInfo *) getVideoInfoWithAsset: (AVAsset *)  videoAsset

获取视频文件信息

参数
videoAsset视频文件属性
返回
视频信息

◆ TXVideoEditer

class TXVideoEditer

构造函数

(instancetype) - initWithPreview:
 

属性

id< TXVideoGenerateListenergenerateDelegate
 
id< TXVideoPreviewListenerpreviewDelegate
 
id< TXVideoCustomProcessListenervideoProcessDelegate
 
BOOL supportsTwoPassEncoding
 

视频/图片设置相关方法

(int) - setVideoPath:
 
(int) - setVideoAsset:
 
(int) - setPictureList:fps:
 
(void) - setPictureTransition:duration:
 

预览逻辑相关方法

(void) - previewAtTime:
 
(void) - startPlayFromTime:toTime:
 
(void) - pausePlay
 
(void) - resumePlay
 
(void) - stopPlay
 
(void) - setBeautyFilter:setWhiteningLevel:
 
(void) - setFilter:
 
(void) - setFilter:leftIntensity:rightFilter:rightIntensity:leftRatio:
 
(void) - setSpecialRatio:
 
(void) - setReverse:
 
(void) - setRepeatPlay:
 
(void) - setRenderRotation:
 
(void) - setSpeedList:
 
(void) - startEffect:startTime:
 
(void) - stopEffect:endTime:
 
(void) - deleteLastEffect
 
(void) - deleteAllEffect
 

贴纸相关方法 [精简版不支持]

(void) - setSubtitleList:
 
(void) - setPasterList:
 
(void) - setAnimatedPasterList:
 

BGM相关方法

(void) - setBGM:result:
 
(void) - setBGMAsset:result:
 
(void) - setBGMStartTime:endTime:
 
(void) - setBGMLoop:
 
(void) - setBGMAtVideoTime:
 
(void) - setVideoVolume:
 
(void) - setBGMVolume:
 
(void) - setBGMFadeInDuration:fadeOutDuration:
 

水印相关方法

(void) - setWaterMark:normalizationFrame:
 
(void) - setTailWaterMark:normalizationFrame:duration:
 

视频生成相关方法

(void) - setCutFromTime:toTime:
 
(void) - setVideoBitrate:
 
(void) - generateVideo:videoOutputPath:
 
(void) - quickGenerateVideo:videoOutputPath:
 
(void) - generateVideoWithTwoPass:videoOutputPath:
 
(void) - pauseGenerate
 
(void) - resumeGenerate
 
(void) - cancelGenerate
 

函数文档

◆ cancelGenerate()

- (void) cancelGenerate

停止视频文件生成

◆ deleteAllEffect()

- (void) deleteAllEffect

删除所有特效 [精简版不支持]

◆ deleteLastEffect()

- (void) deleteLastEffect

删除最后一个添加的特效 [精简版不支持]

◆ generateVideo:videoOutputPath:()

- (void) generateVideo: (TXVideoCompressed)  videoCompressed
videoOutputPath: (NSString *)  videoOutputPath 

生成视频 优点:兼容性好,支持各种操作类型的视频生成,生成的视频文件在各个平台播放的兼容性好 缺点:生成视频速度稍慢 调用之后在TXVideoGenerateListener里面监听结果回调

参数
videoCompressed视频压缩质量
videoOutputPath视频操作之后存储路径

◆ generateVideoWithTwoPass:videoOutputPath:()

- (void) generateVideoWithTwoPass: (TXVideoCompressed)  videoCompressed
videoOutputPath: (NSString *)  videoOutputPath 

两次扫描生成视频(Two-Pass Encoding) [精简版不支持] 优点:兼容性好,在同等码率下视频更加清晰,可以在较低码率下保持视频质量,支持各种操作类型的视频生成,生成的视频文件在各个平台播放的兼容性好 缺点:生成视频慢 调用之后在TXVideoGenerateListener里面监听结果回调

参数
videoCompressed视频压缩质量
videoOutputPath视频操作之后存储路径

◆ initWithPreview:()

- (instancetype) initWithPreview: (TXPreviewParam *)  param

默认初始化方法

参数
param编辑器画面预览参数
参见
TXPreviewParam

◆ pauseGenerate()

- (void) pauseGenerate

暂停视频生成,仅适用于generateVideo,quickGenerateVideo调用无效 @discussion SDK生成视频默认采用的是硬编码(编码效率高,编码出来的图像效果好),硬编码器在程序进后台后会停止工作,从而导致视频生成失败, 这里新增了两个接口pauseGenerate,resumeGenerate,程序进后台后您可以调用pauseGenerate暂停视频生成,程序重新进前台后, 您可以调用resumeGenerate 继续视频生成,这里需要注意的是,调用resumeGenerate,sdk会重启硬编码器,会有一定的概率重启失败, 或则重启后前几帧数据编码失败,这个时候SDK内部会在 TXVideoGenerateListener 抛出编码错误事件,收到错误事件后您需要重新生成视频。

参见
resumeGenerate

◆ pausePlay()

- (void) pausePlay

暂停播放

◆ previewAtTime:()

- (void) previewAtTime: (CGFloat)  time

渲染某一时刻的视频画面

参数
time预览帧时间(s)

◆ quickGenerateVideo:videoOutputPath:()

- (void) quickGenerateVideo: (TXVideoCompressed)  videoCompressed
videoOutputPath: (NSString *)  videoOutputPath 

使用系统函数快速生成视频 优点:生成视频速度快 缺点:1,剪切出来的视频在各个平台播放的兼容性稍差 2,只有剪切和压缩操作才会使用系统函数,其他情况系统不支持,SDK内部会自动走正常视频生成的逻辑 调用之后在 TXVideoGenerateListener 里面监听结果回调

参数
videoCompressed视频压缩质量
videoOutputPath视频操作之后存储路径

◆ resumeGenerate()

- (void) resumeGenerate

继续视频生成,仅适用于generateVideo,quickGenerateVideo调用无效

参见
pauseGenerate

◆ resumePlay()

- (void) resumePlay

继续播放

◆ setAnimatedPasterList:()

- (void) setAnimatedPasterList: (NSArray< TXAnimatedPaster * > *)  animatedPasterList

设置动图列表 [精简版不支持]

参数
animatedPasterList动态贴纸列表

◆ setBeautyFilter:setWhiteningLevel:()

- (void) setBeautyFilter: (float)  beautyLevel
setWhiteningLevel: (float)  whiteningLevel 

设置美颜,美白级别 0~9

参数
beautyLevel磨皮级别 0~9
whiteningLevel美白级别 0~9

◆ setBGM:result:()

- (void) setBGM: (NSString *)  path
result: (void(^)(int))  result 

设置背景音乐 [精简版不支持]

参数
path音乐文件路径
result0:成功, -1:音乐文件格式不支持

◆ setBGMAsset:result:()

- (void) setBGMAsset: (AVAsset *)  asset
result: (void(^)(int))  result 

设置背景音乐 [精简版不支持]

参数
asset音乐AVAsset对象, 从系统媒体库loading出来的音乐,可以直接传入对应的音乐属性,会极大的降低音乐从系统媒体库loading的时间,具体请参考demo用法
result0:成功, -1:音乐文件格式不支持

◆ setBGMAtVideoTime:()

- (void) setBGMAtVideoTime: (float)  time

设置背景音乐在视频的添加的起始位置 [精简版不支持]

参数
time背景音乐在视频的添加的起始时间

◆ setBGMFadeInDuration:fadeOutDuration:()

- (void) setBGMFadeInDuration: (float)  fadeInDuration
fadeOutDuration: (float)  fadeOutDuration 

设置背景音淡入淡出

参数
fadeInDuration淡入持续时长 (s)
fadeOutDuration淡出持续时长 (s)

◆ setBGMLoop:()

- (void) setBGMLoop: (BOOL)  isLoop

设置背景音乐是否循环播放 [精简版不支持]

参数
isLoop是否循环播放

◆ setBGMStartTime:endTime:()

- (void) setBGMStartTime: (float)  startTime
endTime: (float)  endTime 

设置背景音乐的起始时间和结束时间 [精简版不支持]

参数
startTime音乐起始时间
endTime音乐结束时间

◆ setBGMVolume:()

- (void) setBGMVolume: (float)  volume

设置背景音乐声音大小 [精简版不支持]

参数
volume背景音量, 取值范围 0.0 ~ 1.0

◆ setCutFromTime:toTime:()

- (void) setCutFromTime: (float)  startTime
toTime: (float)  endTime 

设置视频剪裁

参数
startTime视频起始时间
endTime视频结束时间

◆ setFilter:()

- (void) setFilter: (UIImage *)  image

设置特效滤镜

参数
image滤镜图片

◆ setFilter:leftIntensity:rightFilter:rightIntensity:leftRatio:()

- (void) setFilter: (UIImage *)  leftFilter
leftIntensity: (CGFloat)  leftIntensity
rightFilter: (UIImage *)  rightFilter
rightIntensity: (CGFloat)  rightIntensity
leftRatio: (CGFloat)  leftRatio 

设置两个滤镜效果

参数
leftFilter左滤镜图片(nil代表无左滤镜)
leftIntensity左滤镜浓度
rightFilter右滤镜图片(nil代表无右滤镜)
rightIntensity右滤镜浓度
leftRatio左滤镜所占比例

◆ setPasterList:()

- (void) setPasterList: (NSArray< TXPaster * > *)  pasterList

设置静态贴纸 [精简版不支持]

参数
pasterList静态贴纸列表

◆ setPictureList:fps:()

- (int) setPictureList: (NSArray< UIImage * > *)  pitureList
fps: (int)  fps 

设置转场图片列表 [精简版不支持]

参数
pitureList转场图片列表,至少设置三张图片 (tips :图片最好压缩到720P以下(参考demo用法),否则内存占用可能过大,导致编辑过程异常)
fps转场图片生成视频后的fps (15 ~ 30)
返回
0 设置成功; -1 设置失败,请检查图片列表是否存在,图片数量是否大于等于3张,fps是否正常;

◆ setPictureTransition:duration:()

- (void) setPictureTransition: (TXTransitionType transitionType
duration: (void(^)(CGFloat))  duration 

设置图片转场类型 [精简版不支持]

参数
transitionType转场类型,详情见 TXTransitionType
duration转场视频时长(tips:同一个图片列表,每种转场动画的持续时间可能不一样,这里可以获取转场图片的持续时长);

◆ setRenderRotation:()

- (void) setRenderRotation: (int)  rotation

设置画面渲染角度 [精简版不支持]

参数
rotation画面渲染角度, 必须是90的倍数
警告
只支持视频旋转

◆ setRepeatPlay:()

- (void) setRepeatPlay: (NSArray< TXRepeat * > *)  repeatList

设置重复播放 [精简版不支持]

参数
repeatList重复播放的范围列表
参见
TXRepeat

◆ setReverse:()

- (void) setReverse: (BOOL)  isReverse

设置倒放 [精简版不支持]

参数
isReverse是否倒放

◆ setSpecialRatio:()

- (void) setSpecialRatio: (float)  specialRatio

设置滤镜效果程度

参数
specialRatio从0到1,越大滤镜效果越明显,默认取值0.5

◆ setSpeedList:()

- (void) setSpeedList: (NSArray< TXSpeed * > *)  speedList

设置视频加速播级别 [精简版不支持]

参数
speedList加速范围列表

◆ setSubtitleList:()

- (void) setSubtitleList: (NSArray< TXSubtitle * > *)  subtitleList

设置字幕(气泡)列表 [精简版不支持]

参数
subtitleList字幕列表

◆ setTailWaterMark:normalizationFrame:duration:()

- (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水印的持续时长

◆ setVideoAsset:()

- (int) setVideoAsset: (AVAsset *)  videoAsset

设置视频 AVAsset

参数
videoAsset视频AVAsset对象,从本地相册loading出来的视频,可以直接传入对应的视频属性,会极大的降低视频从相册loading的时间,具体请参考demo用法
返回
0 成功; -1 视频属性asset 为nil; -2 视频不支持:暂不支持2个声道以上的视频编辑

◆ setVideoBitrate:()

- (void) setVideoBitrate: (int)  bitrate

设置视频码率

参数
bitrate视频码率 单位:kbps 如果设置了码率,SDK生成视频会优先使用这个码率,注意码率不要太大或则太小,码率太小视频会模糊不清,码率太大,生成视频体积会很大 这里建议设置范围为:600~12000,如果没有调用这个接口,SDK内部会根据压缩质量自动计算码率

◆ setVideoPath:()

- (int) setVideoPath: (NSString *)  videoPath

Tips: 版本以后,SDK支持图片编辑,这里需要注意的是,只能单独对图片或则视频进行编辑,暂不支持图片和视频的混合编辑。 视频编辑暂不支持的功能:转场动画 图片编辑暂不支持的功能:重复,倒放,快速/慢速,片尾水印, 旋转 设置视频文件路径

参数
videoPath视频文件路径
返回
0:成功;-1:视频文件不存在;-2:暂不支持2个声道以上的视频编辑;-3:传入的视频和音频的时长均为0

◆ setVideoVolume:()

- (void) setVideoVolume: (float)  volume

设置视频声音大小 [精简版不支持]

参数
volume音量, 取值范围 0.0 ~ 1.0

◆ setWaterMark:normalizationFrame:()

- (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)

◆ startEffect:startTime:()

- (void) startEffect: (TXEffectType type
startTime: (float)  startTime 

开始特效 [精简版不支持]

参数
type特效类型
startTime特效开始时间

◆ startPlayFromTime:toTime:()

- (void) startPlayFromTime: (CGFloat)  startTime
toTime: (CGFloat)  endTime 

播放某一时间段的视频

参数
startTime播放起始时间(s)
endTime播放结束时间(s)

◆ stopEffect:endTime:()

- (void) stopEffect: (TXEffectType type
endTime: (float)  endTime 

结束特效 [精简版不支持]

参数
type特效类型
endTime特效结束时间

◆ stopPlay()

- (void) stopPlay

停止播放

属性说明

◆ generateDelegate

- (id<TXVideoGenerateListener>) generateDelegate
readwritenonatomicweak

生成视频回调的委托对象, 可以获取生成进度与完成时间等

参见
TXVideoGenerateListener

◆ previewDelegate

- (id<TXVideoPreviewListener>) previewDelegate
readwritenonatomicweak

视频预览回调的委托对象,可以获取视频的播放进度等

参见
TXVideoPreviewListener

◆ supportsTwoPassEncoding

- (BOOL) supportsTwoPassEncoding
readnonatomicassign

判断是否支持TwoPass-Encoding [精简版不支持]

◆ videoProcessDelegate

- (id<TXVideoCustomProcessListener>) videoProcessDelegate
readwritenonatomicweak

视频画面处理的委托对象,可以获取视频画面的OpenGL纹理ID [精简版不支持]

参见
TXVideoCustomProcessListener

◆ TXVideoJoiner

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< TXVideoJoinerListenerjoinerDelegate
 
id< TXVideoPreviewListenerpreviewDelegate
 

函数文档

◆ cancelJoin()

- (void) cancelJoin

停止视频文件合成

◆ initWithPreview:()

- (instancetype) initWithPreview: (TXPreviewParam *)  param

初始化 TXVideoJoiner ,如果您不需要预览,param 可以设置为nil

参数
param参考 TXPreviewParam

◆ joinVideo:videoOutputPath:()

- (void) joinVideo: (TXVideoCompressed)  videoCompressed
videoOutputPath: (NSString *)  videoOutputPath 

合成视频 SDK内部会自动判断视频是否可以快速合成,如果可以,会优先走快速合成逻辑 调用后在TXVideoComposeListener里面监听结果回调

参数
videoCompressed视频压缩质量
videoOutputPath生成新的视频存储路径

◆ pausePlay()

- (void) pausePlay

暂停播放

◆ resumePlay()

- (void) resumePlay

继续播放

◆ setSplitScreenList:canvasWidth:canvasHeight:()

- (void) setSplitScreenList: (NSArray< NSValue * > *)  rects
canvasWidth: (int)  canvasWidth
canvasHeight: (int)  canvasHeight 

设置分屏合成坐标 使用方法详见demo示例

参数
rects需要合成视频的坐标
canvasWidth画布宽度,也是分屏合成之后视频的宽度
canvasHeight画布高度,也是分屏合成之后视频的高度

◆ setVideoAssetList:()

- (int) setVideoAssetList: (NSArray< AVAsset * > *)  videoAssetList

设置视频文件列表 相册的视频文件建议使用这个接口

参数
videoAssetList视频AVAsset对象列表,从本地相册loading出视频列表后,可以直接传入对应的视频属性列表,会极大的降低视频从相册loading的时间,具体请参考demo用法
返回
0 成功; -1 视频属性asset列表不存在 -2 视频列表里面有一个或则几个视频不存在 -3 视频列表里面有不支持合成的视频 (声道数>2暂不支持合成)

◆ setVideoPathList:()

- (int) setVideoPathList: (NSArray *)  videoPathList

设置视频文件列表 app本地的视频文件建议使用这个接口

参数
videoPathList视频路径列表
返回
0 成功; -1 视频列表文件不存在 -2 视频列表里面有一个或则几个视频不存在 -3 视频列表里面有不支持合成的视频 (声道数>2暂不支持合成)

◆ setVideoVolumes:()

- (void) setVideoVolumes: (NSArray< NSNumber * > *)  volumes

设置视频文件列表中每个视频的声音大小(只针对分屏合成有效果)

参数
volumes视频音量值列表, 每一个音量值的取值范围 0.0 ~ 1.0

◆ splitJoinVideo:videoOutputPath:()

- (void) splitJoinVideo: (TXVideoCompressed)  videoCompressed
videoOutputPath: (NSString *)  videoOutputPath 

分屏合成

参数
videoCompressed视频压缩质量
videoOutputPath生成新的视频存储路径

◆ startPlay()

- (void) startPlay

开启视频播放,会从视频的起始位置开始播放 (需要在setVideoPathList之后调用)

◆ stopPlay()

- (void) stopPlay

停止播放

属性说明

◆ joinerDelegate

- (id<TXVideoJoinerListener>) joinerDelegate
readwritenonatomicweak

合成的回调委托对象

参见
TXVideoJoinerListener

◆ previewDelegate

- (id<TXVideoPreviewListener>) previewDelegate
readwritenonatomicweak

预览的回调委托对象

参见
TXVideoPreviewListener