全部产品
视频点播

标准版

更新时间:2017-07-21 19:00:40   分享:   

一、版本要求

iOS支持iOS8.0以上

二、开发环境配置

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

三、使用说明

  • 导入SDK

    先下载SDK,详见SDK下载页面
    直接引入SDK的framework,名称为 AliyunVideoSDKPro
  1. 开发者打开工程,选中目标target,依次选择”Build Phases”->”Link Binary With Libraries”,点击”+”号,点击“Add Other…”,导入AliyunVideoSDKPro.frameworkAliyunOSSiOS.frameworkVODUpload.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`

按需添加字段描述。

  • 录制

  • 录制模块功能接口调用顺序图:iOS录制接口

  • 初始化参数

    使用录制功能,需要初始化AliyunIRecorder对象,初始化方法如下:

    1. - (instancetype)initWithDelegate:(id)delegate videoSize:(CGSize)videoSize;

    参数说明,delegate传入代理对象,用于录制的回调信息,videoSize为设置的视频分辨率。

    AliyunIRecorder对象提供了preview属性,为用于播放视频的预览view,必需进行设置,即

    1. _recorder.preview = yourView;
  • 录制视频管理

    我们提供了视频录制片段的管理类—AliyunClipManager,该类可以对拍摄的视频进行设置,为AliyunIRecorder的属性,通过:

    1. _recorder.clipManager;

    获取。

    该类提供如下方法:

  1. @property (nonatomic, assign) CGFloat maxDuration; //视频最大时长 默认8
  2. @property (nonatomic, assign) CGFloat minDuration; //视频最小时长 默认0.5
  3. @property (nonatomic, assign, readonly) CGFloat duration;//视频总时长
  4. @property (nonatomic, assign, readonly) NSInteger partCount;//视频段数
  5. - (void)deleteAllPart;//删除所有视频片段
  6. - (void)deletePart;//删除最后一个视频片段
  7. - (void)deletePart:(NSInteger)index; //删除某一个视频段
  • 开始预览&结束预览

    开始预览如下方法:

    1. - (void)startPreviewWithPositon:(AliyunIRecorderCameraPosition)cameraPosition;
    2. - (void)startPreview;

    建议在ViewController- (void)viewWillAppear:(BOOL)animated时调用。

    结束预览如下方法:

    1. - (void)stopPreview;

    建议在ViewController- (void)viewDidDisappear:(BOOL)animated时调用。

  • 开始录制&结束录制&完成录制

    在录制之前,确保已设置录制文件的输出路径,通过AliyunIRecorderoutputPath属性进行设置。

    开始录制接口:

    1. - (void)startRecording;

    结束录制接口:

    1. - (void)stopRecording;

    完成录制接口:

    1. - (void)finishRecording;

    注:结束录制和完成录制的区别在于完成录制相当于录制流程的结束。这种场景可以出现在多段视频录制场景中,例如用户按下录制按钮,则开始录制,松开按钮,则结束录制,若不想再继续录制而想进入下一页,则调用完成录制。

  • 释放资源

    ViewController销毁时,我们也需要释放录制资源,在dealloc中调用:

    1. - (void)destroyRecorder;
  • 回调接口

    录制功能提供了一些回调函数:

    1. @required
    2. - (void)recorderDeviceAuthorization:(AliyunIRecorderDeviceAuthor)status;

    该接口开发必须调用,用来回调系统级别的权限,检测是否具有拍摄权限等。

    以下为非必需调用接口:

    1. - (void)recorderOutputVideoRawSampleBuffer:(CMSampleBufferRef)sampleBuffer;

    该接口回调视频的原始数据,开放这个接口的目的是让开发者可以使用摄像头数据来完成开发者自己的业务,如人脸识别。

    1. - (void)recorderVideoDuration:(CGFloat)duration;

    录制实时时长

    1. - (NSInteger)recorderOutputVideoTextureName:(NSInteger)textureName textureSize:(CGSize)textureSie;

    需要对视频纹理做渲染等二次加工时使用该回调。摄像头返回的原始视频纹理,摄像头数据格式为BGRA、YUV时都需实现

    1. - (NSInteger)recorderOutputVideoUVTextureName:(NSInteger)textureName;

    需要对视频纹理做渲染等二次加工时使用该回调。摄像头返回的原始视频纹理,摄像头数据格式仅为YUV时须实现,反之不实现

    1. - (void)recorderDidStopWithMaxDuration;

    录制到最大时长时的回调

    1. - (void)recorderDidStopRecording;

    停止录制回调

    1. - (void)recorderDidFinishRecording;

    录制结束的回调。

    1. - (void)recoderError:(NSError *)error;

    录制异常。

  • 其他

    • 设置效果

      录制过程中可以添加效果,这些效果目前包含滤镜,水印,人脸动图三种类型。效果的基类是AliyunEffect类。三种类型具体对应如下类:

      1. `AliyunEffectFilter`--滤镜
      2. `AliyunEffectPaster`--贴图
      3. `AliyunEffectImage` --静态图片(水印)

      添加效果的接口:

      1. - (void)addEffect:(AliyunEffect *)effect;

      移除效果的接口:

      1. - (void)deleteEffect:(AliyunEffect *)effect;

      录制配乐与调速接口:

      1. AliyunEffectMusic *effectMusic = [[AliyunEffectMusic alloc] initWithFile:`设置音乐路径`];
      2. effectMusic.startTime = 5; // 配乐开始时间点,从5秒开始
      3. effectMusic.duration = 15; // 配乐持续时长,持续15秒
      4. [_recorder applyMusic:effectMusic];
      5. [_recorder setRate:2]; // 两倍速

      配乐建议使用AAC编码格式。如果是MP3格式的音乐,会增加处理时间

      音乐设置需要在录制前,开始录制后禁止调用配乐接口

      录制速率大小在0.5~2之间,超过此区间无效

    • 其他接口

      1. 切换摄像头

        -(AliyunIRecorderCameraPosition)switchCameraPosition;

      2. 照片模式下,循环切换闪光灯

        (AliyunIRecorderFlashMode)switchFlashMode;

      3. 照片模式下,切换为指定闪光灯模式

        -(BOOL)switchFlashWithMode:(AliyunIRecorderFlashMode)flashMode;

      4. 视频模式下,循环切换手电筒模式

        (AliyunIRecorderTorchMode)switchTorchMode;

      5. 视频模式下,切换为指定手电筒模式

        -(BOOL)switchTorchWithMode:(AliyunIRecorderTorchMode)torchMode;

      6. 设置美颜开关

        -(void)setBeautifyStatus:(BOOL)beautifyStatus;

      7. 设置美颜度

        -(void)setBeautifyValue:(int)beautifyValue;

      8. 追踪识别的人脸点

        -(void)faceTrack:(NSArray<AliyunFacePoint *> *)facePoints;

      9. 设置摄像头采集数据格式

        1. /**
        2. 提供三种格式:
        3. kCVPixelFormatType_420YpCbCr8BiPlanarFullRange,
        4. kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange,
        5. kCVPixelFormatType_32BGRA,
        6. 默认kCVPixelFormatType_420YpCbCr8BiPlanarFullRange格式
        7. */
        8. @property (nonatomic, assign) AliyunIRecorderVideoOutputPixelFormatType outputType;
        1. 获取framework版本号

          + (NSString *)version;

  • 导入裁剪

  • 裁剪模块功能接口调用顺序图:iOS裁剪流程

  • 初始化参数

    使用裁剪功能,需要初始化AliyunCrop对象,初始化方法如下:

    1. - (instancetype)initWithDelegate:(id<AliyunCropDelegate>)delegate;

    各实例变量说明:

    1. float startTime 截取时间起点 (单位:秒)
    2. float endTime 截取时间终点 (单位:秒)
    3. float fadeDuration 视频片段过渡动画时间 (单位:秒)
    4. int cropMode 0 填充黑边 1 裁剪画面
    5. NSString *videoPath 视频资源路径
    6. NSString *outputPath 裁剪完成后的文件存放路径
    7. CGSize outputSize 裁剪后的视频尺寸
    8. int fps 帧率
    9. int gop 关键帧间隔
    10. AliyunVideoQuality videoQuality 视频质量
    11. CGRect rect 保留的视频尺寸 (cropMode 0 无效)
  • 开始裁剪

    1. - (int)startCrop;
    2. 返回值为0时表示配置正确
  • 取消裁剪

    1. - (void)cancelCutVideo;
  • 版本号

    1. + (NSString *)version;
  • 其他接口
  1. /**
  2. 删除文件
  3. */
  4. - (BOOL)deleteFile:(int) index;
  5. /**
  6. 清除上传列表
  7. */
  8. - (BOOL)clearFiles;
  9. /**
  10. 获取上传文件列表
  11. */
  12. - (NSMutableArray<UploadFileInfo *> *)listFiles;
  13. /**
  14. 取消单个文件上传,文件保留在上传列表中
  15. */
  16. - (BOOL)cancelFile:(int)index;
  17. /**
  18. 恢复已取消的上传文件
  19. */
  20. - (BOOL)resumeFile:(int)index;
  21. /**
  22. 停止上传
  23. */
  24. - (BOOL)stop;
  25. /**
  26. 暂停上传
  27. */
  28. - (BOOL)pause;
  29. /**
  30. 恢复上传
  31. */
  32. - (BOOL)resume;
  33. /**
  34. 使用Token恢复上传
  35. */
  36. - (BOOL)resumeWithAuth:(NSString *)uploadAuth;
  37. /**
  38. 使用Token恢复上传
  39. */
  40. - (BOOL)resumeWithToken:(NSString *)accessKeyId
  41. accessKeySecret:(NSString *)accessKeySecret
  42. secretToken:(NSString *)secretToken
  43. expireTime:(NSString *)expireTime;
  44. /**
  45. 设置上传凭证
  46. */
  47. - (BOOL)setUploadAuthAndAddress:(UploadFileInfo *)uploadFileInfo
  48. uploadAuth:(NSString *)uploadAuth
  49. uploadAddress:(NSString *)uploadAddress;

四、上传

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

本文导读目录
本文导读目录
以上内容是否对您有帮助?