短视频 SDK Android(拍照和录制)

这篇说说腾讯云视频录制功能,涵盖录制参数配置、画面预览、拍照、录制过程控制及属性设置(如速度、声音、水印、滤镜、美颜),并附有核心代码示例。 录制流程:配置参数→启动预览→设置效果→完成录制,核心类为TXUGCRecord。 属性设置:支持画面方向、录制速度、麦克风音量、水印、滤镜及美颜(级别0-9)。

相关产品
短视频 SDK 产品页,含版本规格、价格与购买入口。

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

一、相关类介绍

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

二、基本使用流程

视频录制的基本使用流程如下:

1. 配置录制参数。

2. 启动画面预览。

3. 设置录制效果。

4. 完成录制。

开启预览/录制基本代码示例(此处只示例核心代码展示基础用法,完整代码请你完善):

TXUGCRecord mTXUGCRecord = TXUGCRecord.getInstance(context);// 创建一个用户相机预览的 TXCloudVideoViewmVideoView = (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; // 720pparam.isFront = true; // 是否使用前置摄像头param.minDuration = 5000; // 视频录制的最小时长 msparam.maxDuration = 60000; // 视频录制的最大时长 msparam.touchFocus = false; // false 为自动聚焦;true 为手动聚焦// 视频预览viewmVideoView = (TXCloudVideoView) findViewById(R.id.video_view);// 开启预览mTXUGCRecord.startCameraSimplePreview(param,mVideoView);// 结束画面预览mTXUGCRecord.stopCameraPreview();

五、2. 调整预览参数

启动预览后,可以调用如下接口调整录制行为。

// 切换视频录制分辨率到540pmTXUGCRecord.setVideoResolution(TXRecordCommon.VIDEO_RESOLUTION_540_960);// 切换视频录制码率到6500KbpsmTXUGCRecord.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 或者 startCameraCustomPreviewmTXUGCRecord.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 表示录制时长,单位:毫秒。

@optionalvoid onRecordProgress(long milliSecond);

·onRecordComplete反馈录制的结果,TXRecordResult 的 retCode 和 descMsg 字段分别表示错误码和错误描述信息,videoPath 表示录制完成的小视频文件路径,coverImage 为自动截取的小视频第一帧画面,便于在视频发布阶段使用。

@optionalvoid onRecordComplete(TXRecordResult result);

·onRecordEvent录制事件回调,包含事件id和事件相关的参数 (key,value) 格式。

@optionalvoid 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.5mTXUGCRecord.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-9mTXBeautyManager.setBeautyLevel(5);// 设置美白级别 0-9mTXBeautyManager.setWhitenessLevel(5);// 设置红润级别 0-9mTXBeautyManager.setRuddyLevel(5);

十五、高级功能

·多段录制

·录制草稿箱

·添加背景音乐

·变声和混响

·定制视频数据

赞 (0)
上一篇 4天前
下一篇 4天前