集成iOS端短视频SDK

本文为您介绍如何集成iOS端短视频SDK,包括pod方式集成和手动方式集成的操作详情。

前提条件

开发前的环境要求如下表所示。

类别

说明

系统版本

支持iOS 9.0及以上版本。

macOS High Sierra版本

支持macOS High Sierra 10.13及以上版本。

Xcode版本

支持Xcode 9.0及以上版本,下载Xcode

背景信息

短视频SDK分为专业版,标准版和基础版,三个版本使用的库名分别为专业版/标准版(AliyunVideoSDKPro.framework)和基础版(AliyunVideoSDKBasic.framework)。

  • 基础版只包含录制与裁剪模块。

  • 专业版和标准版包含全功能模块,标准版的高级接口需要单独授权才能调用。

pod方式集成(推荐)

  1. 在Podfile文件中添加依赖,各版本依赖如下表所示

    重要
    • 如果使用短视频SDK 3.24.0及以上版本,请务必使用FFmpeg 4.3.0及以上版本。

    • 请确保网络环境可以访问更新pod仓库,并在pod install安装完成后检查framework版本号是否和官网最新版一致。

    • 使用最少依赖集成方式集成短视频SDK时,如果需要上传媒资文件到视频点播,请集成上传SDK上传,具体内容请参见集成iOS SDK

    版本

    Podfile文件对应依赖

    专业版

    • 默认集成(默认集成方式,包含主库、资源包和上传SDK)

      # 默认的集成方式,除短视频SDK外,还会集成资源包和上传SDK。
      pod 'AliyunVideoSDKPro', '~> 6.0.0'
    • 最少依赖集成(仅集成短视频SDK,不会集成资源包和上传SDK)

      # 仅集成短视频SDK,不会集成资源包和上传SDK
      pod 'AliyunVideoSDKPro/min', '~> 6.0.0'
      说明

      如需使用拍摄模块的人脸贴纸功能,则必须引入资源包(AliyunVideoSDKPro.bundle),引入方式请参见设置资源包引入路径

    标准版

    • 默认集成(默认集成方式,包含主库、资源包和上传SDK)

      # 默认的集成方式,除短视频SDK外,还会集成上传SDK。
      pod 'AliyunVideoSDKStd', '~> 6.0.0'
    • 最少依赖集成(不包含资源包和上传SDK)

      # 仅集成短视频SDK,不会集成上传SDK
      pod 'AliyunVideoSDKStd/min', '~> 6.0.0'

    基础版

    # 仅集成短视频SDK,不会集成上传SDK
    pod 'AliyunVideoSDKBasic', '~> 6.0.0'
  2. 更新pod repo。

    pod repo update
  3. 安装pod。

    pod install

手动方式集成(不推荐)

库和资源依赖说明

说明

手动方式集成不提供上传库,如果需要上传媒资文件到视频点播,请集成上传SDK上传,具体内容请参见上传SDK

  • 专业版

    需要手动下载集成相应版本的以下库和bundle资源包。

    库名

    描述

    下载地址

    AliyunVideoSDKPro.framework

    动态库

    V6.0.0专业版

    AETemplateEngune.framework

    动态库(非必须)

    AliyunVideoSDKPro.bundle

    资源包(非必须)

    说明当需要使用拍摄模块的人脸贴纸功能时,则必须引入该资源包。

    alivcffmpeg

    动态库

    GitHub下载地址

  • 标准版

    需要手动下载集成相应版本的以下库。

    库名

    描述

    下载地址

    AliyunVideoSDKPro.framework

    动态库

    V6.0.0标准版

    alivcffmpeg

    动态库

    GitHub下载地址

  • 基础版

    需要手动下载集成相应版本的以下库。

    库名

    描述

    下载地址

    AliyunVideoSDKBasic.framework

    动态库

    V6.0.0基础版

    alivcffmpeg

    动态库

    GitHub下载地址

操作步骤

说明
  • 手动方式集成较为繁琐,并且提交到App Store时需要剥离模拟器版本(x86架构)的动态库,否则会被拒绝。因此推荐使用pod方式集成。剥离模拟器动态库的方式有如下两种:

    • 使用命令行工具lipo剥离模拟器架构的framework。

    • 通过pod方式集成,pod会在打包时自动剥离掉模拟器架构的framework。

  • 编译报错时,请修改Build Settings > Apple Clang - Language > Compile Sources As,修改为Objective-C++

  1. 添加动态库。

    单击General,选择Frameworks, Libraries, and Embedded Content。单击,然后单击Add Other…,导入上述动态库(例如AliyunVideoSDKPro.framework、alivcffmpeg.framework)。导入之后请选择Embed &Sign

  2. 添加其他库依赖。

    单击General,选择Frameworks, Libraries, and Embedded Content。单击,分别添加MobileCoreServices.framework、SystemConfiguration.framework和libresolv.tbd依赖。

  3. 可选:将AliyunVideoSDKPro.bundle依赖导入到工程。

    单击Build Phases,选择Copy Bundle Resources,单击,然后单击Add Other…,导入AliyunVideoSDKPro.bundle。

配置项目

SDK集成后,打开项目工程并修改以下配置:

  1. 配置Build Setting > Linking > Other Linker Flags,添加-ObjC。

  2. 打开工程info.Plist,添加以下权限:

    Privacy - Camera Usage Description
    Privacy - Microphone Usage Description
    Privacy - Photo Library Usage Description

配置License

获取到License后,需要按以下操作配置License文件。License的获取及详细信息请参见管理License

把下载的License文件导入到App工程中,在Info.plist文件中添加两个key,第一个key为AlivcLicenseKey,value为LicenseKey的值;第二个key为AlivcLicenseFile,value为内置证书文件(相对于mainBundle)的路径。示例如下所示:

key

value

AlivcLicenseKey

LicenseKey的值。取值示例:MoCTfuQ391Z01mNqG8f8745e23c8a457a8ff8d5faedc1****

AlivcLicenseFile

内置证书文件(相对于mainBundle)的路径。

后续步骤:初始化SDK

集成完SDK后,需要初始化SDK。

引入头文件

SDK头文件主要说明使用短视频SDK时所需要遵循的接口使用规范,使用短视频SDK前需要先引入头文件。

  • 专业版&标准版

    #import <AliyunVideoSDKPro/AliyunVideoSDKPro.h>
  • 基础版

    #import <AliyunVideoSDKBasic/AliyunVideoSDKBasic.h>

注册SDK

从3.29.0版本开始,短视频SDK升级了License服务,在App启动后必须进行注册,否则无法使用短视频SDK的功能。具体如下:

// ≥ 3.30.0版本:
NSError *error = [AliyunVideoSDKInfo registerSDK]; // 返回error为nil表示注册成功。
// 因为注册失败基本属于接入错误,所以建议直接加上Assert就可以在接入调试时显示错误和修复建议。
NSAssert2(error == nil, @"注册SDK失败!%@;%@", error.localizedDescription, error.localizedRecoverySuggestion);

// 3.29.0版本:
// 请把获取到的LicenseFile改名为license.crt,加到您的App工程里,通过以下方式获取LicenseFile路径。
NSString *licenseFilePath = [NSBundle.mainBundle pathForResource:@"license" ofType:@"crt"];
// 使用获取到的LicenseKey和LicenseFilePath注册SDK。
[AliyunVideoSDKInfo registerSDKWithLicenseKey:LicenseKey licenseFile:licenseFilePath];
重要

注册成功代表License已经注入到SDK内部,但是不代表鉴权结果成功。

您可以通过代码查询当前License状态信息。

AliyunVideoLicense *license = AliyunVideoLicenseManager.CurrentLicense;

在您使用具体功能或增值服务时,SDK内部会发生鉴权,如果鉴权失败会在对应的接口返回结果。您也可以在统一的地方监听鉴权结果。

// ≥ 3.30.0版本
AliyunVideoLicenseManager.EventDelegate = self; // 具体请参考AliyunVideoLicenseEventDelegate协议说明

您可以通过代码主动查询鉴权结果。

AliyunVideoLicenseResultCode code = [AliyunVideoLicenseManager check]; 

如果您续费了或者购买了增值服务也可以主动更新License(默认每15分钟检查更新一次)。

[AliyunVideoLicenseManager Refresh:^(AliyunVideoLicenseRefreshCode code){
 // 更新结果: code
}];

设置资源包引入路径

通过pod方式的最少依赖方式集成短视频SDK时,如果需要引入资源包AliyunVideoSDKPro.bundle,且考虑到包大小问题,不想在工程中引入,那么可以通过以下方法,实现在APP运行时自动下载资源包,下载完成后引入到短视频SDK中。

  1. 把资源包上传到您的云空间上(例如OSS中)。

  2. 在APP启动时进行资源包判定,如果资源包不存在则进行下载,将资源包下载到本地。

  3. 本地已存在资源包或资源包下载完成后,设置短视频SDK引入资源包的路径,方法如下:

    [AliyunVideoSDKInfo setSDKBundlePath:@"资源包的本地存储路径"];

日志输出

默认情况下,短视频SDK仅输出警告和出错日志(AlivcLogWarn)。用户可以设置日志输出级别以打印更多日志作为故障排查参考。

// 日志级别定义如下:
typedef NS_ENUM(NSInteger, AlivcLogLevel)
{
 AlivcLogClose = 1,
 AlivcLogVerbose,
 AlivcLogDebug,
 AlivcLogInfo,
 AlivcLogWarn,
 AlivcLogError,
 AlivcLogFatal
};
// 设置日志输出级别
[AliyunVideoSDKInfo setLogLevel:AlivcLogDebug];
 

版本信息

您可以通过以下方式打印版本信息,以确保引入的SDK版本正确或帮助排查SDK使用过程中的问题。

[AliyunVideoSDKInfo printSDKInfo];

您还可以打印所需要的信息。

NSString *version = [AliyunVideoSDKInfo version]; // 版本号
NSString *module = [AliyunVideoSDKInfo module]; // 版本类型
int moduleCode =[AliyunVideoSDKInfo versionCode]; // 版本类型代码
NSString *buildId =[AliyunVideoSDKInfo videoSDKBuildId]; // 版本打包ID
NSLog(@"\n==============\nVERSION:%@\nBUILD_ID:%@\nMODULE:%@\nMODULE_CODE:%d\n==============", version, buildId, module, moduleCode);

相关文档