tencent cloud

短视频 SDK

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

Android

PDF
聚焦模式
字号
最后更新时间: 2025-04-01 17:14:08
视频录制包括视频变速录制、美颜、滤镜、声音特效、背景音乐设置等功能。

相关类介绍

功能
TXUGCRecord
实现视频的录制功能
TXUGCPartsManager
视频片段管理类,用于视频的多段录制,回删等
ITXVideoRecordListener
录制回调
TXRecordCommon
基本参数定义,包括了视频录制回调及发布回调接口

基本使用流程

视频录制的基本使用流程如下:
1. 配置录制参数。
2. 启动画面预览。
3. 设置录制效果。
4. 完成录制。
开启预览/录制基本代码示例(此处只示例核心代码展示基础用法,完整代码请您完善):
TXUGCRecord mTXUGCRecord = TXUGCRecord.getInstance(context);

// 创建一个用户相机预览的 TXCloudVideoView
mVideoView = (TXCloudVideoView) findViewById(R.id.video_view);

// 1、配置录制参数,已推荐配置 TXUGCSimpleConfig 为例
TXRecordCommon.TXUGCSimpleConfig param = new TXRecordCommon.TXUGCSimpleConfig();
param.videoQuality = TXRecordCommon.VIDEO_QUALITY_MEDIUM;

// 2、启动画面预览
mTXUGCRecord.startCameraSimplePreview(param, mVideoView);

// 3、设置录制效果,这里以添加美颜为列
mTXUGCRecord.getBeautyManager().setBeautyStyle(TXBeautyManager.TXBeautyStyleSmooth);
mTXUGCRecord.getBeautyManager().setBeautyLevel(5);

// 4、设置录制事件回调
mTXUGCRecord.setVideoRecordListener(new ITXVideoRecordListener() {
@Override
public void onRecordEvent(int i, Bundle bundle) {}

@Override
public void onRecordProgress(long l) {}

@Override
public void onRecordComplete(TXRecordResult txRecordResult) {}
});

// 启动录制
int result = mTXUGCRecord.startRecord();

// 结束录制
mTXUGCRecord.stopRecord();

画面预览

TXUGCRecord 负责视频的录制功能,我们的第一个工作是先把预览功能实现。startCameraSimplePreview函数用于启动预览,如果您想自己设置更多的录制参数也可以使用 startCameraCustomPreview。由于启动预览要打开摄像头和麦克风,所以在录制前需要申请摄像头和麦克风的访问权限。

1. 启动预览

// 获取录制单列
TXUGCRecord mTXUGCRecord = TXUGCRecord.getInstance(this.getApplicationContext());

// 配置简单录制参数
TXRecordCommon.TXUGCSimpleConfig param = new TXRecordCommon.TXUGCSimpleConfig();
param.videoQuality = TXRecordCommon.VIDEO_QUALITY_HIGH; // 720p
param.isFront = true; // 是否使用前置摄像头
param.minDuration = 5000; // 视频录制的最小时长 ms
param.maxDuration = 60000; // 视频录制的最大时长 ms
param.touchFocus = false; // false 为自动聚焦;true 为手动聚焦

// 视频预览view
mVideoView = (TXCloudVideoView) findViewById(R.id.video_view);

// 开启预览
mTXUGCRecord.startCameraSimplePreview(param,mVideoView);

// 结束画面预览
mTXUGCRecord.stopCameraPreview();

2. 调整预览参数

启动预览后,可以调用如下接口调整录制行为。
// 切换视频录制分辨率到540p
mTXUGCRecord.setVideoResolution(TXRecordCommon.VIDEO_RESOLUTION_540_960);

// 切换视频录制码率到6500Kbps
mTXUGCRecord.setVideoBitrate(6500);

// 获取摄像头支持的最大焦距
mTXUGCRecord.getMaxZoom();

// 设置焦距为3, 焦距取值范围 0 ~ getMaxZoom();
mTXUGCRecord.setZoom(3);

// 切换到后置摄像头 true 切换到前置摄像头;false 切换到后置摄像头
mTXUGCRecord.switchCamera(false);

// 打开闪光灯 true 为打开, false 为关闭.
mTXUGCRecord.toggleTorch(false);

// param.touchFocus 为 true 时为手动聚焦,可以通过下面接口设置聚焦位置
mTXUGCRecord.setFocusPosition(eventX, eventY);

// 设置自定义图像处理回调
mTXUGCRecord.setVideoProcessListener(this);

拍照

在相机开启预览后,即可使用拍照的功能。
// 拍照,调用该接口之前需要先启动录制预览,即需要先调用startCameraSimplePreview 或者 startCameraCustomPreview
mTXUGCRecord.snapshot(new TXRecordCommon.ITXSnapshotListener() {
@Override
public void onSnapshot(Bitmap bmp) {
// 保存或者显示截图
}
});

录制过程控制

录制的开始、暂停与恢复。
// 开始录制,
// 该函数未指定录制文件的路径,录制文件地址在录制结束回调中获取
mTXUGCRecord.startRecord();

// 开始录制,可以指定输出视频文件地址和封面地址
mTXUGCRecord.startRecord(videoFilePath, coverPath);

// 开始录制,可以指定输出视频文件地址、视频分片存储地址、封面地址
mTXUGCRecord.startRecord(videoFilePath, videoPartFolder, coverPath);

// 暂停录制
mTXUGCRecord.pauseRecord();

// 继续录制
mTXUGCRecord.resumeRecord();

// 结束录制
mTXUGCRecord.stopRecord();
录制的过程和结果是通过 TXRecordCommon.ITXVideoRecordListener(位于 TXRecordCommon.java 中定义)接口反馈:
onRecordProgress用于反馈录制的进度,参数 millisecond 表示录制时长,单位:毫秒。
@optional
void onRecordProgress(long milliSecond);
onRecordComplete反馈录制的结果,TXRecordResult 的 retCode 和 descMsg 字段分别表示错误码和错误描述信息,videoPath 表示录制完成的小视频文件路径,coverImage 为自动截取的小视频第一帧画面,便于在视频发布阶段使用。
@optional
void onRecordComplete(TXRecordResult result);
onRecordEvent录制事件回调,包含事件id和事件相关的参数 (key,value) 格式。
@optional
void onRecordEvent(final int event, final Bundle param);

录制属性设置

1. 画面设置

// 设置视频预览方向
// rotation : 取值为 0 , 90, 180, 270(其他值无效) 表示视频预览向右旋转的角度
// 注意:需要在startRecord 之前设置,录制过程中设置无效
mTXUGCRecord.setRenderRotation(TXLiveConstants.RENDER_ROTATION_PORTRAIT);

// 设置录制的宽高比
// VIDEO_ASPECT_RATIO_9_16 宽高比为9:16
// VIDEO_ASPECT_RATIO_3_4 宽高比为3:4
// VIDEO_ASPECT_RATIO_1_1 宽高比为1:1
// 注意:需要在startRecord 之前设置,录制过程中设置无效
mTXUGCRecord.setAspectRatio(TXRecordCommon.VIDEO_ASPECT_RATIO_9_16);

2. 速度设置

// 设置视频录制速率
// TXRecordCommon.RECORD_SPEED_SLOWEST(极慢速)
// TXRecordCommon.RECORD_SPEED_SLOW(慢速)
// TXRecordCommon.RECORD_SPEED_NORMAL(标准)
// TXRecordCommon.RECORD_SPEED_FAST(快速)
// TXRecordCommon.RECORD_SPEED_FASTEST(极快速)
mTXUGCRecord.setRecordSpeed(TXRecordCommon.VIDEO_RECORD_SPEED_NORMAL);

3. 声音设置

// 设置麦克风的音量大小,播放背景音混音时使用,用来控制麦克风音量大小
// 音量大小,1为正常音量,建议值为0-2,如果需要调大音量可以设置更大的值.
mTXUGCRecord.setMicVolume(volume);
// 设置录制是否静音 参数 isMute 代表是否静音,默认不静音
mTXUGCRecord.setMute(isMute);

设置效果

在视频录制的过程中,您可以给录制视频的画面设置各种特效。

1. 水印效果

// 设置全局水印
// TXRect-水印相对于视频图像的归一化值,sdk 内部会根据水印宽高比自动计算 height
// 例如视频图像大小为(540,960) TXRect 三个参数设置为0.1,0.1,0.1
// 水印的实际像素坐标为(540 * 0.1,960 * 0.1,540 * 0.1 ,
// 540 * 0.1 * watermarkBitmap.height / watermarkBitmap.width)
mTXUGCRecord.setWatermark(watermarkBitmap, txRect)

2. 滤镜效果

// 设置颜色滤镜:浪漫、清新、唯美、粉嫩、怀旧...
// filterBitmap : 指定滤镜用的颜色查找表。注意:一定要用 png 格式。
mTXUGCRecord.setFilter(filterBitmap);

// 用于设置滤镜的效果程度,从0到1,越大滤镜效果越明显,默认取值0.5
mTXUGCRecord.setSpecialRatio(0.5);

// 设置组合滤镜特效
// mLeftBitmap 左侧滤镜
// leftIntensity 左侧滤镜程度
// mRightBitmap 右侧滤镜
// rightIntensity 右侧滤镜程度
// leftRadio 左侧图片占的比例大小
// 可以此接口实现滑动切换滤镜的效果,详见 demo。
mTXUGCRecord.setFilter(mLeftBitmap, leftIntensity, mRightBitmap, rightIntensity, leftRatio);

3. 美颜效果

// 获取美颜设置接口
TXBeautyManager mTXBeautyManager = mTXCameraRecord.getBeautyManager();
// 设置美颜风格 (TXBeautyStyleSmooth:光滑;TXBeautyStyleNature:自然;TXBeautyStylePitu:优图。)
mTXBeautyManager.setBeautyStyle(TXBeautyManager.TXBeautyStyleSmooth);
// 设置美颜级别 0-9
mTXBeautyManager.setBeautyLevel(5);
// 设置美白级别 0-9
mTXBeautyManager.setWhitenessLevel(5);
// 设置红润级别 0-9
mTXBeautyManager.setRuddyLevel(5);

高级功能

帮助和支持

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

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

文档反馈