功能介绍
短视频SDK提供基础视频录制功能,支持添加配乐,变速录制,人脸贴纸等录制效果,核心类AliyunIRecorder。
版本差异
版本 | 功能描述 |
---|---|
专业版 | 支持所有功能。 |
标准版 | 支持基础录制和音乐功能,不支持人脸识别。 |
基础版 | 支持基础录制,不支持音乐和人脸识别。 |
相关类功能
名称 | 功能 |
---|---|
AliyunIRecorder | 录制功能核心类 |
AliyunClipManager | 录制片段管理器,获取片段信息,对视频片段进行删除操作等 |
AliyunIRecorderDelegate | 录制代理回调 |
录制流程

初始化设置
- taskPath表示文件夹路径,用来存放录制相关配置。
- preview长宽比和videoSize保持一致。
配置项 | 配置实例 |
---|---|
初始化 |
|
设置文件夹路径 |
|
设置录制视频输出路径 |
|
设置预览视图 |
|
开启预览视图
配置项 | 配置实例 |
---|---|
开始预览 |
|
停止预览
录制完成或退后台需要停止预览。 |
|
销毁对象
预览结束后销毁对象,释放录制相关资源。 |
|
录制参数设置
配置项 | 配置实例 |
---|---|
设置曝光值 |
|
设置前置摄像头采集分辨率 |
默认值:AVCaptureSessionPreset640x480,更多参数请从AVCaptureSession.h中获取。
|
设置后置摄像头采集分辨率 |
默认值:AVCaptureSessionPreset1280x720,更多参数请从AVCaptureSession.h中获取。
|
设置摄像头角度 |
|
设置手动对焦点 |
|
设置变焦倍数 |
每次调用videoZoomFactor接口,实际变焦值zoom为设定的1/100。例:设置videoZoomFactor = 10.0f,实际zoom += 0.1f。 如果您开启前置摄像头录制,那么当前设置无效。
|
设置编码方式 |
|
设置关键帧间隔 |
默认值:5,建议设置值:1-300。
|
设置录制帧率 |
默认值:25。
|
设置是否静音 |
如果您在录制过程中添加音乐,那么当前设置无效。
|
设置视频质量 |
如果设置了bitrate参数,那么当前设置无效。
|
设置输出视频码率(bps) |
|
设置采集视频格式 |
SDK提供了三种视频格式:
默认格式:kCVPixelFormatType_420YpCbCr8BiPlanarFullRange。
|
异步获取拍摄图片 |
|
切换摄像头 |
|
循环切换手电筒 |
手电筒模式有三种:分别是off,on和auto。切换顺序:off —-> on —-> auto。默认值:off。
|
切换指定手电筒模式 |
|
录制特效设置
- 美颜
配置项 配置实例 设置是否开启美颜状态 @property (nonatomic, assign) BOOL beautifyStatus;
设置美颜度 范围:[0,100]。
@property (nonatomic, assign) int beautifyValue;
- 滤镜短视频SDK的滤镜资源存放在滤镜文件夹,滤镜文件夹包含配置文件和相关资源。AliyunEffectFilter代表一个滤镜资源,可以通过初始化方法构造一个滤镜实例,参数path是滤镜资源文件夹路径。
配置项 配置实例 生成滤镜对象 - (id)initWithFile:(NSString *)path;
添加滤镜 由于滤镜无法叠加,因此每次调用applyFilter:方法都会替换滤镜。
- (int)applyFilter:(AliyunEffectFilter *)filter;
删除滤镜 - (void)deleteFilter;
- 特效滤镜特效滤镜和滤镜都使用AliyunEffectFilter,但是两者用的资源不同。demo中提供了几组特效滤镜的资源文件,如抖动、幻影、科幻、朦胧、重影。
配置项 配置实例 添加特效滤镜 - (int)applyAnimationFilter:(AliyunEffectFilter *)filter;
删除特效滤镜 - (void)deleteAnimationFilter;
- 音乐特效AliyunEffectMusic代表一个音乐资源,可以通过初始化方法构造一个音乐实例,参数path是音乐资源文件路径。
配置项 配置实例 生成音乐对象 - (id)initWithFile:(NSString *)path;
添加音乐 - (int)applyMusic:(AliyunEffectMusic *)music;
说明 只能在录制开始前调用添加音乐接口,录制过程中或录制结束后不能调用该接口。 - MV特效短视频SDK的MV资源存放在MV文件夹中,MV文件夹包含了配置文件和相关资源。下载的MV压缩包中有四种长宽比的MV文件夹,用来适配不同的输出分辨率。AliyunEffectMV代表一个MV资源,可以通过初始化方法构造一个MV实例,参数path是MV资源文件夹路径。
配置项 配置实例 生成MV对象 - (id)initWithFile:(NSString *)path;
添加一个MV - (int)applyMV:(AliyunEffectMV *)mv;
删除MV [recorder applyMV:nil]
- 贴纸/人脸识别特效贴纸的基类是AliyunEffectPaster。
配置项 配置实例 添加动图 /** @param paster 动图 */ - (int)applyPaster:(AliyunEffectPaster *)paster;
设置是否开启人脸识别 开启该功能后,当系统检测有人脸动图加入时将自动追踪。
@property (nonatomic, assign) BOOL useFaceDetect;
设置人脸个数 /** 最大设置3个,最小设置1个。如果不需要检测人脸,请使用:useFaceDetect = NO */ @property (nonatomic, assign) int faceDetectCount;
设置是否同步贴合人脸 默认值:YES。同步贴合人脸的贴合性强,但是性能差的设备可能卡顿。非同步贴合人脸的画面流畅,但是贴合性差。
建议iphoe6及以上机型设置为YES,iphoe6以下机型建议设置为NO。
@property (nonatomic, assign) BOOL faceDectectSync;
删除动图 `- (void)deletePaster:(AliyunEffectPaster *)paster;`
- 水印特效
设置水印本质指加入一张图片进行渲染。
设置动图、水印的位置/** @param rect 位置(x,y,width,height)均为比例值 @param effect 指定的效果 (目前支持水印和普通动图) */ - (void)setEffectView:(CGRect)rect effect:(AliyunEffect *)effect;
说明 rect表示位置(x,y,width,height),x,y,width和height的值都是比例值。例:播放视频view的size为(400,400),动图位置为(50,50,100,100),那么rect参数为(0.125,0.125,0.25,0.25);effect表示指定的效果(目前支持水印和普通动图)。 - 自定义渲染SDK提供了多种渲染回调,包括音频的回调(用于音频渲染业务等),视频的回调(包括数据回调或纹理回调)。
配置项 配置实例 返回原始视频数据 /** @param sampleBuffer 视频数据 */ - (void)recorderOutputVideoRawSampleBuffer:(CMSampleBufferRef)sampleBuffer;
返回原始音频数据 /** @param sampleBuffer 音频数据 */ - (void)recorderOutputAudioRawSampleBuffer:(CMSampleBufferRef)sampleBuffer;
自定义渲染1 /** @param sampleBuffer 原始数据 @return 用户自渲染后的PixelBuffer */ - (CVPixelBufferRef)customRenderedPixelBufferWithRawSampleBuffer:(CMSampleBufferRef)sampleBuffer;
自定义渲染2 开放pixelBuffer和纹理id(仅支持BGRA格式)。
/** @param pixelBuffer 摄像头数据 @param textureName 摄像头数据纹理 @return 自定义渲染后的纹理id */ - (NSInteger)recorderOutputVideoPixelBuffer:(CVPixelBufferRef)pixelBuffer textureName:(NSInteger)textureName;
自定义渲染3 /** @param srcTexture 原始视频帧纹理id @param size 原始视频帧纹理size@return 返回纹理id */ - (int)customRender:(int)srcTexture size:(CGSize)size;
自定义渲染4 /** 摄像头数据格式为BGRA、YUV时都需实现 @param textureName 原始纹理ID @return 处理后的纹理ID */ - (NSInteger)recorderOutputVideoTextureName:(NSInteger)textureName textureSize:(CGSize)textureSie;
/** 摄像头数据格式仅为YUV时须实现,反之不实现 @param textureName 原始UV分量的纹理ID @return 处理后的纹理ID */ - (NSInteger)recorderOutputVideoUVTextureName:(NSInteger)textureName;
录制视频
配置项 | 配置实例 |
---|---|
开始录制一段视频 |
SDK支持录制单段或多段,预览状态下,调用录制接口开始录制。
|
停止录制一段视频 |
|
- 调用stopRecording停止录制后,SDK内部会执行保存视频相关操作,收到AliyunIRecorderDelegate的- (void)recorderDidStopRecording回调后才能继续执行其他操作。
- startRecording和stopRecording需要成对出现,可以调用一次或多次,对应SDK内部会生成一段或多段临时视频文件。
完成录制
- (void)finishRecording;
事件处理
对于锁屏,来电,退后台等事件,需要进行特殊处理。
页面需要监听UIApplicationWillResignActiveNotification事件,当进入Inactive状态前需要调用stopRecording和stopPreview方法停止预览。还需要监听UIApplicationDidBecomeActiveNotification事件,当进入Active状态后调用startPreview方法重新开启预览。
示例
- (void)viewDidLoad {
// 初始化配置recorder
self.recorder = [[AliyunIRecorder alloc] initWithDelegate:self videoSize:CGSizeMake(720,1280)];
self.recorder.preview = self.previewView;
self.recorder.outputPath = `视频输出沙盒路径`;
self.recorder.outputType = AliyunIRecorderVideoOutputPixelFormatType420f;//人脸识别只支持YUV格式
self.recorder.taskPath = `taskPath路径`;
// 录制片段设置
self.clipManager = self.recorder.clipManager;
self.clipManager.maxDuration = 15;
self.clipManager.minDuration = 0.5;
}
- (void)recordButtonTouchesBegin {
// 点击录制button开始录制
[self.recorder startRecording];
}
- (void)recordButtonTouchesEnd {
// 点击录制button停止录制
[self.recorder stopRecording];
}
- (void)recorderDidStopRecording {
// 收到录制停止回调,调用完成录制
[self.recorder finishrecording]
}
- (void)recorderDidStopWithMaxDuration {
// 收到录制达到最大时长回调,调用完成录制
[self.recorder finishrecording]
}
- (void)recorderDidFinishRecording {
// 收到完成录制回调,视频已经保存到初始化设置的`视频输出沙盒路径`路径下
}
在文档使用中是否遇到以下问题
更多建议
匿名提交