全部产品
存储与CDN 数据库 安全 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网
视频点播

基础版

更新时间:2017-10-25 11:43:53

一、版本要求

iOS支持iOS8.0以上

二、开发环境配置

SDK开发环境为macOS Sierra 10.12.2 XCode8.0及以上

三、使用说明

  • 导入SDK

    先下载SDK,详见SDK下载页面
    直接引入SDK的framework,名称为 AliyunVideoSDK
  1. 开发者打开工程,选中目标target,依次选择”Build Phases”->”Link Binary With Libraries”,点击”+”号,点击“Add Other…”,导入AliyunVideoSDK.framework
  2. 开发者打开工程,选中目标target,依次选择”General”->”Embededed Binaries”,点击”+”号,点击“Add Other…”,导入QUCore-ThirdParty.framework

  3. 同时,还需依赖libz.tbdlibc++.tbdlibiconv.tbdlibresolv.tbdImageIO.frameworkCoreMedia.frameworkCoreVideo.frameworkSystemConfiguration.frameworkPhotos.frameworkOpenAL.frameworkVideoToolbox.framework请一并加上。截图如下:依赖库示例图.png

  4. 配置 Build Setting -- Build Options -- Enable Bitcode 选项为NO

  5. 配置 Build Setting -- Linking -- Other Linker Flags 添加 -ObjC选项
  • 添加用户权限

打开工程的 info.Plist 文件,添加如下字段:

  1. `Privacy - Camera Usage Description`
  2. `Privacy - Microphone Usage Description`
  3. `Privacy - Photo Library Usage Description`

按需添加字段描述。

  • UI配置&整体配置

SDK的基础类为单例 AliyunVideoBase

  • 4.1.1UI参数配置

UI配置类为 AliyunVideoUIConfig ,如果需要对UI界面的颜色和Button的隐藏等进行调整,只需要实例化一个AliyunVideoUIConfig类,并对如下属性进行赋值,各个属性参数如下

  1. /* 背景颜色 */
  2. @property (nonatomic, strong) UIColor *backgroundColor;
  3. /* 录制进度条 已录制颜色 */
  4. @property (nonatomic, strong) UIColor *timelineTintColor;
  5. /* 录制进度条 背景颜色 */
  6. @property (nonatomic, strong) UIColor *timelineBackgroundCollor;
  7. /* 录制进度条 视频删除部分选中颜色 */
  8. @property (nonatomic, strong) UIColor *timelineDeleteColor;
  9. /* 录制时间提示框 字体颜色 */
  10. @property (nonatomic, strong) UIColor *durationLabelTextColor;
  11. /* 裁剪页裁剪条下边框颜色 */
  12. @property (nonatomic, strong) UIColor *cutBottomLineColor;
  13. /* 裁剪页裁剪条上边框颜色 */
  14. @property (nonatomic, strong) UIColor *cutTopLineColor;
  15. /* 隐藏已录制时间提示框 */
  16. @property (nonatomic, assign) BOOL hiddenDurationLabel;
  17. /* 隐藏美颜按钮 */
  18. @property (nonatomic, assign) BOOL hiddenBeautyButton;
  19. /* 隐藏录制按钮 */
  20. @property (nonatomic, assign) BOOL hiddenCameraButton;
  21. /* 隐藏闪光灯按钮 */
  22. @property (nonatomic, assign) BOOL hiddenFlashButton;
  23. /* 隐藏相册导入按钮 */
  24. @property (nonatomic, assign) BOOL hiddenImportButton;
  25. /* 隐藏删除视频片段按钮 */
  26. @property (nonatomic, assign) BOOL hiddenDeleteButton;
  27. /* 隐藏录制完成按钮 */
  28. @property (nonatomic, assign) BOOL hiddenFinishButton;
  29. /* 是否录制单段视频 */
  30. @property (nonatomic, assign) BOOL recordOnePart;
  31. /* 相册界面是否显示跳转相机按钮 */
  32. @property (nonatomic, assign) BOOL showCameraButton;
  33. /* 录制模式 */
  34. @property (nonatomic, assign) AliyunVideoRecordType recordType;
  35. /* 滤镜名称数组 注:请对应到滤镜bundle的各个滤镜文件名 */
  36. @property (nonatomic, strong) NSArray<NSString *> *filterArray;
  37. /* 录制切换为无滤镜选项时提示文字 */
  38. @property (nonatomic, strong) NSString *noneFilterText;
  39. /* 图片资源存放的BundleName */
  40. @property (nonatomic, strong) NSString *imageBundleName;
  41. /* 滤镜资源存放的BundleName */
  42. @property (nonatomic, strong) NSString *filterBundleName;

对应表

属性 类型 释义
backgroundColor UIColor 背景颜色
timelineTintColor UIColor 录制进度条 已录制颜色
timelineBackgroundCollor UIColor 录制进度条 背景颜色
timelineDeleteColor UIColor 录制进度条 视频删除部分选中颜色
durationLabelTextColor UIColor 录制时间提示框 字体颜色
hiddenDurationLabel BOOL 隐藏已录制时间提示框
cutBottomLineColor UIColor 裁剪页裁剪条下边框颜色
cutTopLineColor UIColor 裁剪页裁剪条上边框颜色
hiddenCameraButton BOOL 隐藏美颜按钮
hiddenFlashButton BOOL 隐藏录制按钮
hiddenImportButton BOOL 隐藏闪光灯按钮
hiddenDeleteButton BOOL 隐藏相册导入按钮
hiddenFinishButton BOOL 隐藏删除视频片段按钮
recordOnePart BOOL 是否录制单段视频
showCameraButton BOOL 相册界面是否显示跳转相机按钮
AliyunVideoRecordType AliyunVideoRecordType 录制模式
filterArray NSArray 滤镜名称数组
noneFilterText NSString 录制切换为无滤镜选项时提示文字
imageBundleName NSString 图片资源存放的BundleName
filterBundleName NSString 滤镜资源存放的BundleName

注:filterArray中存放的滤镜名称必须与filterBundle中的文件名称对应。

  • UI配置注册

    完成第一步设置好AliyunVideoUIConfig后需要调用AliyunVideoBase下述接口进行UI配置的注册

  1. /**
  2. 设置UI配置参数
  3. @param videoUIConfig UI配置
  4. */
  5. - (void)registerWithQUIConfig:(AliyunVideoUIConfig *)videoUIConfig;

示例:

  1. AliyunVideoUIConfig *config = [[AliyunVideoUIConfig alloc] init];
  2. config.timelineDeleteColor = [UIColor redColor];
  3. config.hiddenFlashButton = NO;
  4. config.imageBundleName = @"image";
  5. [[AliyunVideoBase shared] registerWithQUIConfig:config];
  • UI图片配置

    如果开发者需要对SDK内部界面的UIButton等控件的图片进行修改,只需要将 上述AliyunVideoUIConfigimageBundleName设置为开发者制作的Bundle即可。需要注意的是bundle中各个image的名称需要与Demo中给出的image.bundle中的名称一一对应

    滤镜替换的原理相同,对应设置 AliyunVideoUIConfigfilterBundleName即可。

  • 录制

  • 初始化参数

    使用录制功能,需要初始化AliyunVideoRecordParam对象(录制视频参数配置类)

  1. /* 摄像头方向 */
  2. @property (nonatomic, assign) AliyunCameraPosition position;
  3. /* 闪光灯模式 */
  4. @property (nonatomic, assign) AliyunCameraTorchMode torchMode;
  5. /* 美颜状态 */
  6. @property (nonatomic, assign) BOOL beautifyStatus;
  7. /* 设置美颜度 [0,100] */
  8. @property (nonatomic, assign) int beautifyValue;
  9. /* 输出路径 */
  10. @property (nonatomic, strong) NSString *outputPath;
  11. /* 视频分辨率 */
  12. @property (nonatomic, assign) AliyunVideoSize size;
  13. /* 视频比例 */
  14. @property (nonatomic, assign) AliyunVideoRatio ratio;
  15. /* 最小时长 */
  16. @property (nonatomic, assign) CGFloat minDuration;
  17. /* 最大时长 */
  18. @property (nonatomic, assign) CGFloat maxDuration;
  19. /* 视频质量 */
  20. @property (nonatomic, assign) AliyunVideoQuality videoQuality;
  21. /* 编码方式 */
  22. @property (nonatomic, assign) AliyunVideoEncodeMode encodeMode;
  23. /* 帧率 */
  24. @property (nonatomic, assign) int fps;
  25. /* 关键帧间隔 */
  26. @property (nonatomic, assign) int gop;
  27. /** 裁剪码率 */
  28. @property (nonatomic, assign) int bitrate;

对应表

属性 类型 释义
position AliyunCameraPosition 摄像头方向
torchMode AliyunCameraTorchMode 闪光灯模式
beautifyStatus BOOL 美颜状态
beautifyValue int 美颜值
outputPath NSString 输出路径
size AliyunVideoSize 视频分辨率
ratio AliyunVideoRatio 视频比例
minDuration CGFloat 最小时长
maxDuration CGFloat 最大时长
videoQuality AliyunVideoQuality 视频质量
encodeMode AliyunVideoEncodeMode 编码方式
fps int 帧率
gop int 关键帧间隔

可以通过调用初始化方法进行初始化

  1. /**
  2. 创建AliyunVideoRecordParam
  3. */
  4. + (instancetype)recordConfigWithVideoRatio:(AliyunVideoRatio)ratio
  5. videoSize:(AliyunVideoSize)size;
  6. /**
  7. 创建AliyunVideoRecordParam
  8. */
  9. + (instancetype)recordConfigWithVideoRatio:(AliyunVideoRatio)ratio
  10. videoSize:(AliyunVideoSize)size
  11. position:(AliyunCameraPosition)position
  12. trochMode:(AliyunCameraTorchMode)torchMode
  13. beautifyStatus:(BOOL)beautifyStatus
  14. beautifyValue:(int)beautifyValue
  15. outputPath:(NSString *)outputPath
  16. minDuration:(CGFloat)minDuration
  17. maxDuration:(CGFloat)maxDuration
  18. videoQuality:(AliyunVideoQuality)videoQuality
  19. encodeMode:(AliyunVideoEncodeMode)encodeMode
  20. fps:(int)fps
  21. gop:(int)gop;
  • 录制界面创建

完成第一步设置好AliyunVideoRecordParam后需要调用AliyunVideoBase下述接口创建录制Controller

  1. /**
  2. 创建一个录制界面
  3. @param recordParam 录制视频参数
  4. @return 录制界面
  5. */
  6. - (UIViewController *)createRecordViewControllerWithRecordParam:(AliyunVideoRecordParam *)recordParam;

示例:

  1. UIViewController *recordViewController = [[AliyunVideoBase shared] createRecordViewControllerWithRecordParam:self.quVideo];
  2. [AliyunVideoBase shared].delegate = self;
  3. [self.navigationController pushViewController:recordViewController animated:YES];

注:由于SDK内部使用的push跳转,所以外部在present调起录制界面时,需要加一层UINavigationViewController在进行present。裁剪页面同理

  • 录制界面回调

    设置AliyunVideoBasedelegate即可接收 录制完成 退出录制 退出录制等回调

  1. /**
  2. 录制完成回调
  3. @param base AliyunVideoBase
  4. @param recordVC 录制界面VC
  5. @param videoPath 视频保存路径
  6. */
  7. - (void)videoBase:(AliyunVideoBase *)base recordCompeleteWithRecordViewController:(UIViewController *)recordVC videoPath:(NSString *)videoPath;
  8. /**
  9. 退出录制
  10. */
  11. - (void)videoBaseRecordVideoExit;
  12. /**
  13. 录制页跳转相册页
  14. @param recordVC 当前录制页VC
  15. @return 跳转相册页的视频配置,若返回空则沿用录制页的视频配置
  16. */
  17. - (AliyunVideoCropParam *)videoBaseRecordViewShowLibrary:(UIViewController *)recordVC;
  • 导入裁剪

  • 初始化参数

使用裁剪功能,需要初始化AliyunVideoRecordParam对象(录制视频参数配置类)

  1. /* 输出路径 */
  2. @property (nonatomic, strong) NSString *outputPath;
  3. /* 输出视频分辨率 */
  4. @property (nonatomic, assign) AliyunVideoSize size;
  5. /* 输出视频比例 */
  6. @property (nonatomic, assign) AliyunVideoRatio ratio;
  7. /* 过滤相册视频最小时长 */
  8. @property (nonatomic, assign) CGFloat minDuration;
  9. /* 过滤相册视频最大时长 */
  10. @property (nonatomic, assign) CGFloat maxDuration;
  11. /* 裁剪模式 */
  12. @property (nonatomic, assign) AliyunVideoCutMode cutMode;
  13. /* 视频质量 */
  14. @property (nonatomic, assign) AliyunVideoQuality videoQuality;
  15. /* 编码方式 */
  16. @property (nonatomic, assign) AliyunVideoEncodeMode encodeMode;
  17. /* 帧率 */
  18. @property (nonatomic, assign) int fps;
  19. /* 关键帧间隔 */
  20. @property (nonatomic, assign) int gop;
  21. /* 视频asset */
  22. @property (nonatomic, strong) AVAsset *avAsset;
  23. /* 是否仅仅展示视频 */
  24. @property (nonatomic, assign) BOOL videoOnly;
  25. /* 填充的背景颜色 */
  26. @property (nonatomic, strong) UIColor *fillBackgroundColor;
  27. /* 是否使用gpu裁剪 */
  28. @property (nonatomic, assign) BOOL gpuCrop;
  29. /* 裁剪码率 */
  30. @property (nonatomic, assign) int bitrate;

对应表

属性 类型 释义
outputPath NSString 输出路径
size AliyunVideoSize 视频分辨率
ratio AliyunVideoRatio 视频比例
minDuration CGFloat 过滤相册视频最小时长
maxDuration CGFloat 过滤相册最大时长
cutMode AliyunVideoCutMode 裁剪模式
videoQuality AliyunVideoQuality 视频质量
encodeMode AliyunVideoEncodeMode 编码方式
fps int 帧率
gop int 关键帧间隔
bitrate int 码率

可以通过调用初始化方法进行初始化

  1. /**
  2. 创建AliyunVideoCropParam
  3. */
  4. + (instancetype)recordConfigWithVideoRatio:(AliyunVideoRatio)ratio
  5. videoSize:(AliyunVideoSize)size;
  6. /**
  7. 创建AliyunVideoCropParam
  8. */
  9. + (instancetype)recordConfigWithVideoRatio:(AliyunVideoRatio)ratio
  10. videoSize:(AliyunVideoSize)size
  11. outputPath:(NSString *)outputPath
  12. minDuration:(CGFloat)minDuration
  13. maxDuration:(CGFloat)maxDuration
  14. cutMode:(AliyunVideoCutMode)cutMode
  15. videoQuality:(AliyunVideoQuality)videoQuality
  16. encodeMode:(AliyunVideoEncodeMode)encodeMode
  17. fps:(int)fps
  18. gop:(int)gop;
  • 导入裁剪界面创建

完成第一步设置好AliyunVideoCropParam后需要调用AliyunVideoBase下述接口创建导入裁剪Controller

  1. /**
  2. 创建一个相册导入界面
  3. @param cropParam 裁剪视频参数
  4. @return 相册导入界面
  5. */
  6. - (UIViewController *)createPhotoViewControllerCropParam:(AliyunVideoCropParam *)cropParam;

示例:

  1. UIViewController *photoViewController = [[AliyunVideoBase shared] createPhotoViewControllerCropParam:self.mediaInfo];
  2. [AliyunVideoBase shared].delegate = self;
  3. [self.navigationController pushViewController:photoViewController animated:YES];
  • 录制界面回调

设置AliyunVideoBasedelegate即可接收 裁剪完成 退出相册页 相册页面跳转录制页 等回调

  1. /**
  2. 裁剪完成回调
  3. @param base AliyunVideoBase
  4. @param cropVC 裁剪页VC
  5. @param videoPath 视频保存路径
  6. */
  7. - (void)videoBase:(AliyunVideoBase *)base cutCompeleteWithCropViewController:(UIViewController *)cropVC videoPath:(NSString *)videoPath;
  8. /**
  9. 退出相册页
  10. */
  11. - (void)videoBasePhotoExit;
  12. /**
  13. 相册页面跳转录制页
  14. @param photoVC 当前相册VC
  15. @return 跳转视频页的视频配置,若返回空则沿用相册裁剪页的视频配置
  16. */
  17. - (AliyunVideoRecordParam *)videoBasePhotoViewShowRecord:(UIViewController *)photoVC;

四、上传

SDK生成的mp4文件,可接入阿里云上传SDK上传文件,可跳转至阿里云上传SDK下载。点击iOS上传SDK获取使用文档。

本文导读目录