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

详细描述

短视频录制类


结构体说明

◆ TXUGCRecord

class TXUGCRecord

属性

id< TXUGCRecordListenerrecordDelegate
 
id< TXVideoCustomProcessDelegate > videoProcessDelegate
 
TXUGCPartsManagerpartsManager
 

实例化

(TXUGCRecord *) + shareInstance
 

摄像头,麦克风相关逻辑

(int) - startCameraSimple:preview:
 
(int) - startCameraCustom:preview:
 
(void) - setVideoResolution:
 
(void) - setVideoRenderMode:
 
(void) - setVideoBitrate:
 
(void) - setZoom:
 
(BOOL) - switchCamera:
 
(BOOL) - toggleTorch:
 
(void) - stopCameraPreview
 

录制相关逻辑

(void) - setHomeOrientation:
 
(void) - setRenderRotation:
 
(void) - setAspectRatio:
 
(void) - setRecordSpeed:
 
(void) - setMute:
 
(int) - startRecord
 
(int) - startRecord:coverPath:
 
(int) - startRecord:videoPartsFolder:coverPath:
 
(int) - pauseRecord
 
(int) - pauseRecord:
 
(int) - resumeRecord
 
(int) - stopRecord
 
(void) - pauseAudioSession
 
(void) - resumeAudioSession
 

录制效果设置相关逻辑

(void) - setWaterMark:normalizationFrame:
 
(TXBeautyManager *) - getBeautyManager
 
(void) - setBeautyStyle:beautyLevel:whitenessLevel:ruddinessLevel:
 
(void) - setFilter:
 
(void) - setFilter:leftIntensity:rightFilter:rightIntensity:leftRatio:
 
(void) - setSpecialRatio:
 
(void) - setEyeScaleLevel:
 
(void) - setFaceScaleLevel:
 
(void) - setFaceVLevel:
 
(void) - setChinLevel:
 
(void) - setFaceShortLevel:
 
(void) - setNoseSlimLevel:
 
(void) - setGreenScreenFile:
 
(void) - selectMotionTmpl:inDir:
 
(void) - setMotionMute:
 

背景音相关逻辑

(CGFloat) - setBGM:
 
(CGFloat) - setBGMAsset:
 
(void) - setBGMLoop:
 
(BOOL) - playBGMFromTime:toTime:withBeginNotify:withProgressNotify:andCompleteNotify:
 
(BOOL) - stopBGM
 
(BOOL) - pauseBGM
 
(BOOL) - resumeBGM
 
(BOOL) - setMicVolume:
 
(BOOL) - setBGMVolume:
 
(BOOL) - setReverbType:
 
(BOOL) - setVoiceChangerType:
 
(int) - snapshot:
 
(void) - setFocusPosition:eventY:
 

函数文档

◆ getBeautyManager()

- (TXBeautyManager *) getBeautyManager

获取美颜管理对象

通过美颜管理,您可以使用以下功能:

  • 设置"美颜风格"、“美白”、“红润”、“大眼”、“瘦脸”、“V脸”、“下巴”、“短脸”、“小鼻”、“亮眼”、“白牙”、“祛眼袋”、“祛皱纹”、“祛法令纹”等美容效果。
  • 调整“发际线”、“眼间距”、“眼角”、“嘴形”、“鼻翼”、“鼻子位置”、“嘴唇厚度”、“脸型”
  • 设置人脸挂件(素材)等动态效果
  • 添加美妆
  • 进行手势识别

◆ pauseAudioSession()

- (void) pauseAudioSession

在录制的过程中,如果您使用了其他播放器预览视频,AudioSession可能会冲突,会导致录制/播放异常,因此, 当使用其他播放器预览视频的时候,请先调用 pauseAudioSession 当停止视频预览,重新录制的时候,请调用 resumeAudioSession

◆ pauseBGM()

- (BOOL) pauseBGM

暂停播放背景音乐 [精简版不支持]

◆ pauseRecord()

- (int) pauseRecord

暂停录制短视频(注:切后台时需保持后台运行状态) 每一次暂停录制都会生成一个视频片段(>100ms有效,<= 100ms 会被认为是无效视频,不会被存放在视频分片里面),您可以在partsManager里面管理这些视频片段

返回
0 成功, -1 不存在录制任务, -2 videoRecorder未初始化

◆ pauseRecord:()

- (int) pauseRecord: (void(^)(void))  complete

4.9 版本后pauseRecord 修改为了异步调用,请在收到 complete 回调后再去 partsManager 获取当前的视频片段信息 注意:resumeRecord 不需要等到 pauseRecord 的 complete 之后再调用,正常顺序调用即可

返回
0 成功, -1 不存在录制任务, -2 videoRecorder未初始化

◆ playBGMFromTime:toTime:withBeginNotify:withProgressNotify:andCompleteNotify:()

- (BOOL) playBGMFromTime: (float)  startTime
toTime: (float)  endTime
withBeginNotify: (void(^)(NSInteger errCode))  beginNotify
withProgressNotify: (void(^)(NSInteger progressMS, NSInteger durationMS))  progressNotify
andCompleteNotify: (void(^)(NSInteger errCode))  completeNotify 

播放背景音乐 [精简版不支持] 必须在startCamera之后调用

参数
startTime音乐播放起始时间
endTime音乐播放结束时间
beginNotify音乐播放开始的回调
progressNotify音乐播放的进度回调,单位毫秒
completeNotify音乐播放结束的回调
返回
是否成功

◆ resumeAudioSession()

- (void) resumeAudioSession

重启SDK内部的 AudioSession

◆ resumeBGM()

- (BOOL) resumeBGM

继续播放背景音乐 [精简版不支持]

◆ resumeRecord()

- (int) resumeRecord

恢复录制短视频

返回
0 成功, -1 不存在录制任务, -2 videoRecorder未初始化

◆ selectMotionTmpl:inDir:()

- (void) selectMotionTmpl: (NSString *)  tmplName
inDir: (NSString *)  tmplDir 

设置动效 (增值版本有效,普通版本设置此参数无效)[仅限企业版及企业版Pro]

弃用:
v6.9 版本弃用,请使用 TXBeautyManager 设置美颜功能
参数
tmplName动效名称
tmplDir动效上层文件路径

◆ setAspectRatio:()

- (void) setAspectRatio: (TXVideoAspectRatio videoRatio

设置视频录制比例

警告
需要在 startRecord 之前设置,录制过程中设置无效
参数
videoRatio: 3:4 9:16 1:1

◆ setBeautyStyle:beautyLevel:whitenessLevel:ruddinessLevel:()

- (void) setBeautyStyle: (TXVideoBeautyStyle beautyStyle
beautyLevel: (float)  beautyLevel
whitenessLevel: (float)  whitenessLevel
ruddinessLevel: (float)  ruddinessLevel 

设置美颜 和 美白 效果级别

弃用:
v6.9 版本弃用,请使用 TXBeautyManager 设置美颜功能
参数
beautyStyle: 美颜风格,TXVideoBeautyStyle类型。
beautyLevel: 美颜级别取值范围 0 ~ 9; 0 表示关闭 1 ~ 9值越大 效果越明显。
whitenessLevel: 美白级别取值范围 0 ~ 9; 0 表示关闭 1 ~ 9值越大 效果越明显。
ruddinessLevel: 红润级别取值范围 0 ~ 9; 0 表示关闭 1 ~ 9值越大 效果越明显。

◆ setBGM:()

- (CGFloat) setBGM: (NSString *)  path

设置背景音乐文件 [精简版不支持] 注意:录制过程不能切换背景音乐,可能会导致异常,如果需要切换音乐,请先停止视频录制

参数
path音乐文件路径,一定要是app对应的document目录下面的路径,否则文件会读取失败 return: 音乐时长 s (返回值为0,表示BGM格式不支持或则音频解析失败)

◆ setBGMAsset:()

- (CGFloat) setBGMAsset: (AVAsset *)  asset

设置背景音乐文件 [精简版不支持] 注意:录制过程不能切换背景音乐,可能会导致异常,如果需要切换音乐,请先停止视频录制

参数
asset音乐属性asset,从系统媒体库loading出来的音乐,可以直接传入对应的音乐属性,会极大的降低音乐从系统媒体库loading的时间,具体请参考demo用法 return: 音乐时长 s (返回值为0,表示BGM格式不支持或则音频解析失败)

◆ setBGMLoop:()

- (void) setBGMLoop: (BOOL)  isLoop

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

参数
isLoop是否循环播放

◆ setBGMVolume:()

- (BOOL) setBGMVolume: (float)  volume

设置背景音乐的音量大小,播放背景音乐混音时使用,用来控制背景音音量大小 [精简版不支持]

参数
volume音量大小,1为正常音量,建议值为0~2,如果需要调大背景音量可以设置更大的值 注意:这个接口目前在playBGM之后才生效

◆ setChinLevel:()

- (void) setChinLevel: (float)  chinLevel

设置下巴拉伸或收缩(增值版本有效,普通版本设置此参数无效)[仅限企业版Pro]

弃用:
v6.9 版本弃用,请使用 TXBeautyManager 设置美颜功能
参数
chinLevel下巴拉伸或收缩取值范围 -9 ~ 9; 0 表示关闭 -9收缩 ~ 9拉伸。

◆ setEyeScaleLevel:()

- (void) setEyeScaleLevel: (float)  eyeScaleLevel

设置大眼级别(增值版本有效,普通版本设置此参数无效) [仅限企业版Pro]

弃用:
v6.9 版本弃用,请使用 TXBeautyManager 设置美颜功能
参数
eyeScaleLevel大眼级别取值范围 0 ~ 9; 0 表示关闭 1 ~ 9值越大 效果越明显。

◆ setFaceScaleLevel:()

- (void) setFaceScaleLevel: (float)  faceScaleLevel

设置瘦脸级别(增值版本有效,普通版本设置此参数无效)[仅限企业版Pro]

弃用:
v6.9 版本弃用,请使用 TXBeautyManager 设置美颜功能
参数
faceScaleLevel瘦脸级别取值范围 0 ~ 9; 0 表示关闭 1 ~ 9值越大 效果越明显。

◆ setFaceShortLevel:()

- (void) setFaceShortLevel: (float)  faceShortlevel

设置短脸(增值版本有效,普通版本设置此参数无效)[仅限企业版Pro]

弃用:
v6.9 版本弃用,请使用 TXBeautyManager 设置美颜功能
参数
faceShortlevel短脸级别取值范围 0 ~ 9; 0 表示关闭 1 ~ 9值越大 效果越明显。

◆ setFaceVLevel:()

- (void) setFaceVLevel: (float)  faceVLevel

设置V脸(增值版本有效,普通版本设置此参数无效)[仅限企业版Pro]

弃用:
v6.9 版本弃用,请使用 TXBeautyManager 设置美颜功能
参数
faceVLevelV脸级别取值范围 0 ~ 9; 0 表示关闭 1 ~ 9值越大 效果越明显。

◆ setFilter:()

- (void) setFilter: (UIImage *)  filterImage

设置指定素材滤镜特效 demo 用到的滤镜查找表图片位于RTMPiOSDemo/RTMPiOSDemo/resource/FilterResource.bundle中

弃用:
v7.2 版本弃用,请使用 TXBeautyManager 设置素材滤镜
参数
filterImage指定素材,即颜色查找表图片。注意:一定要用png格式!!!

◆ 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左滤镜所占比例

◆ setFocusPosition:eventY:()

- (void) setFocusPosition: (float)  eventX
eventY: (float)  eventY 

支持外面设置聚焦位置,如果设置了聚焦位置touchFocus,则由外面绘制,sdk不再绘制聚焦图标

参数
eventXx坐标
eventYy坐标

◆ setGreenScreenFile:()

- (void) setGreenScreenFile: (NSURL *)  file

设置绿幕文件(增值版本有效,普通版本设置此参数无效)[仅限企业版Pro]

弃用:
v7.2 版本弃用,请使用 TXBeautyManager 设置绿幕背景视频
参数
file绿幕文件路径

◆ setHomeOrientation:()

- (void) setHomeOrientation: (TXVideoHomeOrientation homeOrientation

横竖屏录制 activity竖屏模式,竖屏录制 [[TXUGCRecord shareInstance] setHomeOrientation:VIDEO_HOME_ORIENTATION_DOWN]; [[TXUGCRecord shareInstance] setRenderRotation:0];

activity竖屏模式,home在右横屏录制 [[TXUGCRecord shareInstance] setHomeOrientation:VIDOE_HOME_ORIENTATION_RIGHT]; [[TXUGCRecord shareInstance] setRenderRotation:90];

activity竖屏模式,home在左横屏录制 [[TXUGCRecord shareInstance] setHomeOrientation:VIDEO_HOME_ORIENTATION_LEFT]; [[TXUGCRecord shareInstance] setRenderRotation:270];

activity横屏模式,home在右横屏录制 注意:渲染view要跟着activity旋转 [[TXUGCRecord shareInstance] setHomeOrientation:VIDOE_HOME_ORIENTATION_RIGHT]; [[TXUGCRecord shareInstance] setRenderRotation:0];

activity横屏模式,home在左横屏录制 注意:渲染view要跟着activity旋转 [[TXUGCRecord shareInstance] setHomeOrientation:VIDEO_HOME_ORIENTATION_LEFT]; [[TXUGCRecord shareInstance] setRenderRotation:0]; 设置横竖屏录制,设置后可能会改变视频预览的方向,请调用setRenderRotation 来修本地视预览频流方向,请参考上面注释或则demo示例

参数
homeOrientation横竖屏录制方向
警告
需要在startRecord 之前设置,录制过程中设置无效
参见
TXVideoHomeOrientation

◆ setMicVolume:()

- (BOOL) setMicVolume: (float)  volume

设置麦克风的音量大小,播放背景音乐混音时使用,用来控制麦克风音量大小 [精简版不支持]

参数
volume音量大小,1为正常音量,建议值为0~2,如果需要调大音量可以设置更大的值 注意:这个接口目前在playBGM之后才生效

◆ setMotionMute:()

- (void) setMotionMute: (BOOL)  motionMute

设置动效静音 (增值版本有效,普通版本设置此参数无效)[仅限企业版及企业版Pro]

弃用:
v6.9 版本弃用,请使用 TXBeautyManager 设置美颜功能
参数
motionMuteYES 静音, NO 不静音

◆ setMute:()

- (void) setMute: (BOOL)  isMute

设置是否静音录制

◆ setNoseSlimLevel:()

- (void) setNoseSlimLevel: (float)  noseSlimLevel

设置瘦鼻(增值版本有效,普通版本设置此参数无效)[仅限企业版Pro]

弃用:
v6.9 版本弃用,请使用 TXBeautyManager 设置美颜功能
参数
noseSlimLevel瘦鼻级别取值范围 0 ~ 9; 0 表示关闭 1 ~ 9值越大 效果越明显。

◆ setRecordSpeed:()

- (void) setRecordSpeed: (TXVideoRecordSpeed recordSpeed

设置录制速率 [精简版不支持]

◆ setRenderRotation:()

- (void) setRenderRotation: (int)  rotation

设置预览视频方向

参数
rotation取值为 0 , 90, 180, 270(其他值无效) 表示视频预览向右旋转的角度 设置横竖屏录制,activty旋转可能会改变视频预览的方向,可以设置此参数让视频预览回到正方向,请参考上面注释或则demo示例
警告
需要在 startRecord 之前设置,录制过程中设置无效

◆ setReverbType:()

- (BOOL) setReverbType: (TXVideoReverbType reverbType

设置混响效果 [精简版不支持]

参数
reverbType混响类型 ,详见 TXReverbType

◆ setSpecialRatio:()

- (void) setSpecialRatio: (float)  specialRatio

设置滤镜效果程度

弃用:
v7.2 版本弃用,请使用 TXBeautyManager setFilterStrength 接口
参数
specialRatio从0到1,越大滤镜效果越明显,默认取值0.5

◆ setVideoBitrate:()

- (void) setVideoBitrate: (int)  bitrate

切换视频录制码率 注意:需要在startRecord 之前设置,录制过程中设置无效

参数
bitrate视频码率

◆ setVideoRenderMode:()

- (void) setVideoRenderMode: (TXVideoRenderMode renderMode

设置视频渲染模式,startCamera 之后调用有效

参数
renderMode渲染模式

◆ setVideoResolution:()

- (void) setVideoResolution: (TXVideoResolution resolution

切换视频录制分辨率,startCamera 之后调用有效 注意:需要在startRecord 之前设置,录制过程中设置无效

参数
resolution视频分辨率

◆ setVoiceChangerType:()

- (BOOL) setVoiceChangerType: (TXVideoVoiceChangerType voiceChangerType

设置变声类型 [精简版不支持]

参数
voiceChangerType变声类型, 详见 TXVoiceChangerType 注意:变声目前仅支持 AUDIO_SAMPLERATE_8000 , AUDIO_SAMPLERATE_16000 ,AUDIO_SAMPLERATE_48000 三种采样率

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

◆ setZoom:()

- (void) setZoom: (CGFloat)  distance

调整焦距,startCamera 之后调用有效

参数
distance取值范围 1~5 ,当为1的时候为最远视角(正常镜头),当为5的时候为最近视角(放大镜头),这里最大值推荐为5,超过5后视频数据会变得模糊不清

◆ shareInstance()

+ (TXUGCRecord*) shareInstance

获取单例

◆ snapshot:()

- (int) snapshot: (void(^)(UIImage *))  snapshotCompletionBlock

截图/拍照,startCamera 之后调用有效 [精简版不支持]

参数
snapshotCompletionBlock完成回调
返回
0 | 成功 -2 | videoRecorder初始化失败 -5 | licence 验证失败,您可以通过 getLicenceInfo 接口查询licence信息

◆ startCameraCustom:preview:()

- (int) startCameraCustom: (TXUGCCustomConfig *)  config
preview: (UIView *)  preview 

开始画面预览

参数
config预览参数
preview预览画面的父vie
参见
TXUGCCustomConfig
返回
0 成功, -1 摄像头尚未关闭 请先调用stopCameraPreview关闭, -2 编码器初始化失败

◆ startCameraSimple:preview:()

- (int) startCameraSimple: (TXUGCSimpleConfig *)  config
preview: (UIView *)  preview 

开始画面预览

参数
config预览参数
preview预览画面的父view
参见
TXUGCSimpleConfig
返回
0 成功, -1 摄像头尚未关闭 请先调用stopCameraPreview关闭, -2 编码器初始化失败

◆ startRecord()

- (int) startRecord

开始录制短视频,SDK内部会自动生成视频路经,在TXVideoRecordListener里面返回

警告
这个接口SDK会自动管理生成的视频和封面,在下次调用startRecord的时候,SDK会自动删除上一次生成的视频和封面
返回
返回值 涵义
-1 正在录制短视频
-2 videoRecorder初始化失败
-3 摄像头没有打开
-4 麦克风没有打开
-5 licence 验证失败,您可以通过 getLicenceInfo 接口查询licence信息,
-6 videoPath 为nil
-7 coverPath 为nil

◆ startRecord:coverPath:()

- (int) startRecord: (NSString *)  videoPath
coverPath: (NSString *)  coverPath 

开始录制短视频

参数
videoPath视频文件输出路径
coverPath封面文件输出路径
警告
这个接口客户需要自己管理生成的视频和封面,在不需要视频和封面的时候自行删除
返回
返回值 涵义
-1 正在录制短视频
-2 videoRecorder初始化失败
-3 摄像头没有打开
-4 麦克风没有打开
-5 licence 验证失败,您可以通过 getLicenceInfo 接口查询licence信息,
-6 videoPath 为nil
-7 coverPath 为nil

◆ startRecord:videoPartsFolder:coverPath:()

- (int) startRecord: (NSString *)  videoPath
videoPartsFolder: (NSString *)  videoPartsFolder
coverPath: (NSString *)  coverPath 

开始录制短视频

参数
videoPath视频文件输出路径
videoPartsFolder分片视频存储目录
coverPath封面文件输出路径
警告
这个接口客户需要自己管理生成的视频和封面,在不需要视频和封面的时候自行删除
返回
返回值 涵义
-1 正在录制短视频
-2 videoRecorder初始化失败
-3 摄像头没有打开
-4 licence 验证失败,您可以通过 getLicenceInfo 接口查询licence信息,
-6 videoPath 为nil
-7 coverPath 为nil

◆ stopBGM()

- (BOOL) stopBGM

停止播放背景音乐 [精简版不支持]

◆ stopCameraPreview()

- (void) stopCameraPreview

结束画面预览

◆ stopRecord()

- (int) stopRecord

结束录制短视频,SDK会合成所有视频分片,生成最终视频

返回
0 成功, -1 不存在录制任务, -2 videoRecorder未初始化
警告
生成最终视频后,当您不再使用录制过程中的生成的视频分片,请主动调用TXUGCPartsManager -> deleteAllParts 删除,否则视频分片会一直存在本地,如果程序没有重启,下次录制SDK也会默认加载当前视频分片

◆ switchCamera:()

- (BOOL) switchCamera: (BOOL)  isFront

切换前后摄像头,startCamera 之后调用有效

参数
isFrontYES 切换到前置摄像头, NO 切换到后置摄像头
返回
YES 切换成功, NO 切换失败。

◆ toggleTorch:()

- (BOOL) toggleTorch: (BOOL)  enable

打开闪关灯,startCamera 之后调用有效

参数
enableYES, 打开 NO, 关闭.
返回
YES 打开成功, NO 打开失败。

属性说明

◆ partsManager

- (TXUGCPartsManager*) partsManager
readnonatomicstrong

多段录制的管理

参见
TXUGCPartsManager

◆ recordDelegate

- (id<TXUGCRecordListener>) recordDelegate
readwritenonatomicweak

视频录制的委托对象,可以获取录制进度等

参见
TXUGCRecordListener

◆ videoProcessDelegate

- (id<TXVideoCustomProcessDelegate>) videoProcessDelegate
readwritenonatomicweak

视频画面处理的委托对象,可以获取视频画面的OpenGL纹理ID

参见
TXVideoCustomProcessListener