tencent cloud

短视频 SDK

动态与公告
产品动态
关于短视频 SDK “startPlay”接口名变更的公告
产品简介
产品概述
产品功能
应用场景
基本概念
购买指南
价格总览
退款说明
免费测试
License 指引
新增与续期 License
配置查看 License
Demo 体验
SDK 下载
SDK 下载
发布日志(App)
含 UI 集成方案
小视频 App
源码解读(iOS)
源码解读(Android)
不含 UI 集成方案
SDK 集成
拍照和录制
预览裁剪和拼接
上传和播放
美颜特效
高级功能和特效
API 文档
短视频编辑
短视频录制
技术支持
错误码表
功能答疑
常见问题
上传常见问题
Android 编译问题
Android 常见问题
iOS 常见问题
License 常见问题
UGSV 政策
隐私政策
数据处理和安全协议

iOS

PDF
聚焦模式
字号
最后更新时间: 2025-04-01 17:14:08

功能概览

视频录制包括视频变速录制、美颜、滤镜、声音特效、背景音乐设置等功能。

使用类介绍

腾讯云 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; // 720p
param.frontCamera = YES; //使用前置摄像头
param.minDuration = 5; //视频录制的最小时长5s
param.maxDuration = 60; //视频录制的最大时长60s
param.touchFocus = NO; // NO 为自动聚焦; YES为手动聚焦

//在self.previewView中显示照相机预览画面
[[TXUGCRecord shareInstance] startCameraSimple:param preview:self.previewView];

//结束画面预览
[[TXUGCRecord shareInstance] stopCameraPreview];

1. 调整预览参数

启动预览后,可以调用如下接口调整录制行为。
// 切换视频录制分辨率到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 反馈录制的结果,TXRecordResultretCode 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];

高级功能

帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈