功能概览
视频录制包括视频变速录制、美颜、滤镜、声音特效、背景音乐设置等功能。
使用类介绍
腾讯云 UGC SDK 提供了相关接口用来实现短视频的录制,其详细定义如下:
接口文件 | 功能 |
TXUGCRecord.h | 小视频录制功能 |
TXUGCRecordListener.h | 小视频录制回调 |
TXUGCRecordEventDef.h | 小视频录制事件回调 |
TXUGCRecordTypeDef.h | 基本参数定义 |
TXUGCPartsManager.h | 视频片段管理类,用于视频的多段录制,回删等 |
基本使用流程
1. 配置录制参数。
2. 启动画面预览。
3. 设置录制效果。
4. 完成录制。
开启预览/录制基本代码示例(此处只示例核心代码展示基础用法,完整代码请您完善):
- (void)viewDidLoad {// 创建一个视图用于显示相机预览图片_videoRecordView = [[UIView alloc] initWithFrame:self.view.bounds];[self.view addSubview:_videoRecordView];// 1. 配置录制参数TXUGCSimpleConfig * param = [[TXUGCSimpleConfig alloc] init];param.videoQuality = VIDEO_QUALITY_MEDIUM;// 2. 启动预览, 设置参数与在哪个View上进行预览[[TXUGCRecord shareInstance] startCameraSimple:param preview:_videoRecordView];// 3. 设置录制效果,这里以添加美颜为例TXBeautyManager *manager = [[TXUGCRecord shareInstance] getBeautyManager];[manager setBeautyStyle:TXBeautyStyleSmooth];[manager setBeautyLevel:5];// 设置视频录制的委托对象,可以获取录制进度录制完成通知等[TXUGCRecord shareInstance].recordDelegate = self;// 开始录制[[TXUGCRecord shareInstance] startRecord];。。。。。。[[TXUGCRecord shareInstance] stopRecord];}// 录制完成回调-(void) onRecordComplete:(TXUGCRecordResult*)result{if (result.retCode == UGC_RECORD_RESULT_OK) {// 录制成功, 视频文件在result.videoPath中} else {// 错误处理,错误码定义请参见 TXUGCRecordTypeDef.h 中 TXUGCRecordResultCode 的定义}}@end
画面预览
TXUGCRecord 负责视频的录制功能,我们的第一个工作是先把预览功能实现。
startCameraSimplePreview函数用于启动预览,如果您想自己设置更多的录制参数也可以使用 startCameraCustomPreview。由于启动预览要打开摄像头和麦克风,所以在录制前需要申请摄像头和麦克风的访问权限。1. 启动预览
[TXUGCRecord shareInstance].recordDelegate = self; //设置录制回调, 回调方法见 TXUGCRecordListener//配置相机及启动预览TXUGCSimpleConfig * param = [[TXUGCSimpleConfig alloc] init];param.videoQuality = TXRecordCommon.VIDEO_QUALITY_HIGH; // 720pparam.frontCamera = YES; //使用前置摄像头param.minDuration = 5; //视频录制的最小时长5sparam.maxDuration = 60; //视频录制的最大时长60sparam.touchFocus = NO; // NO 为自动聚焦; YES为手动聚焦//在self.previewView中显示照相机预览画面[[TXUGCRecord shareInstance] startCameraSimple:param preview:self.previewView];//结束画面预览[[TXUGCRecord shareInstance] stopCameraPreview];
2. 调整预览参数
启动预览后,可以调用如下接口调整录制行为。
// 切换视频录制分辨率到540p[[TXUGCRecord shareInstance] setVideoResolution: VIDEO_RESOLUTION_540_960];// 切换视频录制码率到6500Kbps[[TXUGCRecord shareInstance] setVideoBitrate: 6500];// 设置焦距为3, 当为1的时候为最远视角(正常镜头),当为5的时候为最近视角(放大镜头)[[TXUGCRecord shareInstance] setZoom: 3];// 切换到后置摄像头 YES 切换到前置摄像头 NO 切换到后置摄像头[[TXUGCRecord shareInstance] switchCamera: NO];// 打开闪光灯 YES为打开, NO为关闭.[[TXUGCRecord shareInstance] toggleTorch: YES];// 设置自定义图像处理回调[TXUGCRecord shareInstance].videoProcessDelegate = delegate;
拍照
在相机开启预览后,即可使用拍照的功能。
// 拍照,调用该接口之前需要先启动录制预览,即需要先调用startCameraSimplePreview 或者 startCameraCustomPreview[[TXUGCRecord shareInstance] snapshot:^(UIImage *image) {// 处理拍照返回的图片}];
录制过程控制
录制的开始、暂停与恢复。
// 开始录制,// 该函数未指定录制文件的路径,录制文件地址在录制结束回调中获取[[TXUGCRecord shareInstance] startRecord];// 开始录制,可以指定输出视频文件地址和封面地址[[TXUGCRecord shareInstance] startRecord:videoFilePath coverPath:coverPath];// 开始录制,可以指定输出视频文件地址、视频分片存储地址和封面地址[[TXUGCRecord shareInstance] startRecord:videoFilePath videoPartsFolder:videoPartFolder coverPath:coverPath];// 暂停录制[[TXUGCRecord shareInstance] pauseRecord];// 继续录制[[TXUGCRecord shareInstance] resumeRecord];// 结束录制[[TXUGCRecord shareInstance] stopRecord];
录制的过程和结果是通过
TXUGCRecordListener(位于TXUGCRecordListener.h中定义)协议进行回调:onRecordProgress用于反馈录制的进度,参数millisecond表示录制时长,单位毫秒。@optional(void)onRecordProgress:(NSInteger)milliSecond;
onRecordComplete 反馈录制的结果,TXRecordResult的retCode 和descMsg字段分别表示错误码和错误描述信息,videoPath表示录制完成的小视频文件路径,coverImage为自动截取的小视频第一帧画面,便于在视频发布阶段使用。@optional(void)onRecordComplete:(TXUGCRecordResult*)result;
onRecordEvent录制事件回调预留的接口,暂未使用。@optional(void)onRecordEvent:(NSDictionary*)evt;
录制属性设置
1. 画面设置
// 设置视频预览方向// rotation : 取值为 0 , 90, 180, 270(其他值无效) 表示视频预览向右旋转的角度// 注意:需要在startRecord 之前设置,录制过程中设置无效[[TXUGCRecord shareInstance] setRenderRotation:rotation];// 设置录制的宽高比// VIDEO_ASPECT_RATIO_9_16 宽高比为9:16// VIDEO_ASPECT_RATIO_3_4 宽高比为3:4// VIDEO_ASPECT_RATIO_1_1 宽高比为1:1// 注意:需要在startRecord 之前设置,录制过程中设置无效[[TXUGCRecord shareInstance] setAspectRatio:VIDEO_ASPECT_RATIO_9_16];
2. 速度设置
// 设置视频录制速率// VIDEO_RECORD_SPEED_SLOWEST, 极慢速// VIDEO_RECORD_SPEED_SLOW, 慢速// VIDEO_RECORD_SPEED_NOMAL, 正常速// VIDEO_RECORD_SPEED_FAST, 快速// VIDEO_RECORD_SPEED_FASTEST, 极快速[[TXUGCRecord shareInstance] setRecordSpeed:VIDEO_RECORD_SPEED_NOMAL];
3. 声音设置
// 设置麦克风的音量大小,播放背景音混音时使用,用来控制麦克风音量大小// 音量大小,1为正常音量,建议值为0-2,如果需要调大音量可以设置更大的值.[[TXUGCRecord shareInstance] setMicVolume:volume];// 设置录制是否静音 参数 isMute 代表是否静音,默认不静音[[TXUGCRecord shareInstance] setMute:isMute];
设置效果
在视频录制的过程中,您可以给录制视频的画面设置各种特效。
1. 水印效果
// 设置全局水印// normalizationFrame : 水印相对于视频图像的归一化值,sdk 内部会根据水印宽高比自动计算 height// 例如视频图像大小为(540,960) frame 设置为(0.1,0.1,0.1, 0)// 水印的实际像素坐标为// (540*0.1, 960*0.1, 540*0.1, 540*0.1*waterMarkImage.size.height / waterMarkImage.size.width)[[TXUGCRecord shareInstance] setWaterMark:waterMarkImage normalizationFrame:frame)
2. 滤镜效果
//设置风格滤镜// 设置颜色滤镜:浪漫、清新、唯美、粉嫩、怀旧...// filterImage : 指定滤镜用的颜色查找表。注意:一定要用 png 格式// demo 用到的滤镜查找表图片位于 FilterResource.bundle 中[[TXUGCRecord shareInstance] setFilter:filterImage];// 用于设置滤镜的效果程度,从0到1,越大滤镜效果越明显,默认取值0.5[[TXUGCRecord shareInstance] setSpecialRatio:ratio];// 设置组合滤镜特效// mLeftBitmap 左侧滤镜// leftIntensity 左侧滤镜强度// mRightBitmap 右侧滤镜// rightIntensity 右侧滤镜强度// leftRatio 左侧图片占的比例大小// 可以此接口实现滑动切换滤镜的效果,详见 demo。[[TXUGCRecord shareInstance] setFilter:leftFilterImgage leftIntensity:leftIntensity rightFilter:rightFilterImgage rightIntensity:rightIntensity leftRatio:leftRatio];
3. 美颜效果
// 获取美颜设置接口TXBeautyManager *manager = [[TXUGCRecord shareInstance] getBeautyManager];// 设置美颜风格(TXBeautyStyleSmooth:光滑;TXBeautyStyleNature:自然;TXBeautyStylePitu:优图。)[manager setBeautyStyle:TXBeautyStyleSmooth];// 设置美颜级别 0-9[manager setBeautyLevel:5];// 设置美白级别 0-9[manager setWhitenessLevel:5];// 设置红润级别 0-9[manager setRuddyLevel:5];