腾讯云短视频SDKiOS_音视频解决方案_同尘科技

短视频SDK 2年前 (2023-09-18) 浏览 120

功能概览

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

使用类介绍

腾讯云 UGC SDK 提供了相关接口用来实现短视频的录制,其详细定义如下:

接口文件 功能
TXUGCRecord.h 小视频录制功能
TXUGCRecordListener.h 小视频录制回调
TXUGCRecordEventDef.h 小视频录制事件回调
TXUGCRecordTypeDef.h 基本参数定义
TXUGCPartsManager.h 视频片段管理类,用于视频的多段录制,回删等

使用说明

视频录制的基本使用流程如下:1. 配置录制参数。2. 启动画面预览。3. 设置录制效果。4. 完成录制。示例

@interface VideoRecordViewController  {   UIView *_videoRecordView;}
@implementation VideoRecordViewController- (void)viewDidLoad { [super 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. 设置录制效果,这里以添加水印为例 UIImage *watermarke = [UIImage imageNamed:@"watermarke"]; [[TXUGCRecord shareInstance] setWaterMark:watermarke normalizationFrame:CGRectMake(0.01, 0.01, 0.1, 0)];}
// 4. 开始录制- (IBAction)onStartRecord:(id)sender { [TXUGCRecord shareInstance].recordDelegate = self; int result = [[TXUGCRecord shareInstance] startRecord]; if(0 != result) { if(-3 == result) [self alert:@"启动录制失败" msg:@"请检查摄像头权限是否打开"]; else if(-4 == result) [self alert:@"启动录制失败" msg:@"请检查麦克风权限是否打开"]; else if(-5 == result) [self alert:@"启动录制失败" msg:@"licence 验证失败"]; } else { // 启动成功 }}
// 结束录制- (IBAction)onStopRecord:(id)sender { [[TXUGCRecord shareInstance] stopRecord];}
// 录制完成回调-(void) onRecordComplete:(TXUGCRecordResult*)result{ if (result.retCode == UGC_RECORD_RESULT_OK) { // 录制成功, 视频文件在result.videoPath中 } else { // 错误处理,错误码定义请参见 TXUGCRecordTypeDef.h 中 TXUGCRecordResultCode 的定义 }}
-(void)alert:(NSString *)title msg:(NSString *)msg{ UIAlertView *alert = [[UIAlertView alloc] initWithTitle:title message:msg delegate:self cancelButtonTitle:@"确定" otherButtonTitles:nil, nil]; [alert show];}@end

画面预览

TXUGCRecord(位于TXUGCRecord.h)负责小视频的录制功能,我们的第一个工作是先把预览功能实现。startCameraSimplePreview函数用于启动预览。由于启动预览要打开摄像头和麦克风,所以这里可能会有权限申请的提示窗。

1. 启动预览

TXUGCRecord *record = [TXUGCRecord sharedInstance];record.recordDelegate = self; //设置录制回调, 回调方法见 TXUGCRecordListener
//配置相机及启动预览TXUGCSimpleConfig * param = [[TXUGCSimpleConfig alloc] init];//param.videoQuality = TXRecordCommon.VIDEO_QUALITY_LOW; // 360p//param.videoQuality = TXRecordCommon.VIDEO_QUALITY_MEDIUM; // 540pparam.videoQuality = TXRecordCommon.VIDEO_QUALITY_HIGH; // 720pparam.frontCamera = YES; //使用前置摄像头param.minDuration = 5; //视频录制的最小时长5sparam.maxDuration = 60; //视频录制的最大时长60sparam.enableBFrame = YES; // 开启B帧,相同码率下能获得更好的画面质量
//在self.previewView中显示照相机预览画面[recorder startCameraSimple:param preview:self.previewView];
//结束画面预览[[TXUGCRecord shareInstance] stopCameraPreview];

2. 调整预览参数

如果在相机启动后,可以通过以下方法修改:

// 切换视频录制分辨率到540p[recorder setVideoResolution: VIDEO_RESOLUTION_540_960];
// 切换视频录制码率到6500Kbps[recorder setVideoBitrate: 6500];
// 设置焦距为3, 当为1的时候为最远视角(正常镜头),当为5的时候为最近视角(放大镜头)[recorder setZoom: 3];
// 切换到后置摄像头 YES 切换到前置摄像头 NO 切换到后置摄像头[recorder switchCamera: NO];
// 打开闪光灯 YES为打开, NO为关闭.[recorder toggleTorch: YES];
// 设置自定义图像处理回调recorder.videoProcessDelegate = delegate;

录制过程控制

录制的开始、暂停与恢复

// 开始录制[recorder startRecord];
// 开始录制,可以指定输出视频文件地址和封面地址[recorder startRecord:videoFilePath coverPath:coverPath];
// 开始录制,可以指定输出视频文件地址、视频分片存储地址和封面地址[recorder startRecord:videoFilePath videoPartsFolder:videoPartFolder coverPath:coverPath];
// 暂停录制[recorder pauseRecord];
// 继续录制[recorder resumeRecord];
// 结束录制[recorder 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. 画面设置

// 设置横竖屏录制[recorder setHomeOrientation:VIDOE_HOME_ORIENTATION_RIGHT];
// 设置视频预览方向// rotation : 取值为 0 , 90, 180, 270(其他值无效) 表示视频预览向右旋转的角度// 注意:需要在startRecord 之前设置,录制过程中设置无效[recorder setRenderRotation:rotation];
// 设置录制的宽高比// VIDEO_ASPECT_RATIO_9_16 宽高比为9:16// VIDEO_ASPECT_RATIO_3_4 宽高比为3:4// VIDEO_ASPECT_RATIO_1_1 宽高比为1:1// 注意:需要在startRecord 之前设置,录制过程中设置无效[recorder 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,       极快速[recorder setRecordSpeed:VIDEO_RECORD_SPEED_NOMAL];

3. 声音设置

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

拍照

// 截图/拍照,startCameraSimplePreview 或者 startCameraCustomPreview 之后调用有效[recorder snapshot:^(UIImage *image) {    // image 为截图结果}];

设置效果

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

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)[recorder setWaterMark:waterMarkImage normalizationFrame:frame)

2. 滤镜效果

//设置风格滤镜// 设置颜色滤镜:浪漫、清新、唯美、粉嫩、怀旧...// filterImage : 指定滤镜用的颜色查找表。注意:一定要用 png 格式// demo 用到的滤镜查找表图片位于 FilterResource.bundle 中[recorder setFilter:filterImage];
// 用于设置滤镜的效果程度,从0到1,越大滤镜效果越明显,默认取值0.5[recorder setSpecialRatio:ratio];
// 设置组合滤镜特效// mLeftBitmap 左侧滤镜// leftIntensity 左侧滤镜强度// mRightBitmap 右侧滤镜// rightIntensity 右侧滤镜强度// leftRatio 左侧图片占的比例大小// 可以此接口实现滑动切换滤镜的效果,详见 demo。[recorder setFilter:leftFilterImgage leftIntensity:leftIntensity rightFilter:rightFilterImgage rightIntensity:rightIntensity leftRatio:leftRatio];

3. 美颜效果

// 设置美颜风格、级别、美白及红润的级别// beautyStyle的定义如下:// typedef NS_ENUM(NSInteger, TXVideoBeautyStyle) {//    VIDOE_BEAUTY_STYLE_SMOOTH     = 0,    // 光滑//    VIDOE_BEAUTY_STYLE_NATURE     = 1,    // 自然// };// 级别的范围为0-9 0为关闭, 1-9值越大,效果越明显[recorder setBeautyStyle:beautyStyle beautyLevel:beautyLevel whitenessLevel:whitenessLevel ruddinessLevel:ruddinessLevel];

高级功能

多段录制录制草稿箱添加背景音乐变声和混响定制视频数据

对音视频的解决方案有疑惑?想了解解决方案收费? 联系解决方案专家

腾讯云限时活动1折起,即将结束: 马上收藏

同尘科技为腾讯云授权服务中心,购买腾讯云享受折上折,更有现金返利:同意关联,立享优惠

阿里云解决方案也看看?: 点击对比阿里云的解决方案

- 0人点赞 -

发表点评 (0条)

not found

暂无评论,你要说点什么吗?