集成SDK

本文提供快速集成iOS播放器SDK的指引。

环境要求

  • 系统版本:支持iOS 8.0及以上版本。

  • 开发工具:建议使用Xcode,本文操作步骤基于Xcode开发。下载地址:‎Xcode

前提条件

  • 已注册并获取包含播放器授权的License文件AliVideoCert-********.crt。具体操作,请参见获取License

  • 本地集成SDK时,需要先下载iOS播放器SDK包,推荐下载最新版本。

注意事项

  • 在进行打包时,dSYM文件用于crash符号表解析。

  • 使用iOS播放器SDK时,AlivcFFmpegAliyunPlayer都是必需的,缺一不可。播放器头文件位于AliyunPlayer。

  • 如需同时集成播放器SDK和短视频SDK,则需要关注短视频SDK、播放器SDKAlivcFFmpeg的版本依赖关系,否则会导致短视频或播放器的功能使用失败,详细信息,请参见AlivcFFmpeg版本依赖

  • iOS播放器SDK在模拟器上调试不能保证所有功能的正常运行,建议iOS播放器SDK集成完成后使用真机进行运行调试。

  • iOS播放器SDK提供的安装包中包含了模拟器,模拟器可用于代码调试,发布时,不能包含模拟器,否则会提交AppStore失败。

视频教程

步骤一:SDK集成

CocoaPods集成

  1. 安装 CocoaPods (依赖于Ruby 环境)。

    // 在终端输入
    sudo gem install cocoapods
  2. 验证CocoaPods。

    安装完成后,您可以通过在终端中运行pod --version来验证 CocoaPods 是否正确安装。

    xxx@ ~ % pod --version
    1.16.2
  3. 创建 Podfile 文件。

    在终端中,进入到您的项目目录。执行 Podfile 创建命令 pod init

    // 进入您的项目目录
    xxx@ ~ %  cd /path/yourProject
    // 生成
    xxx@ yourProject % pod init
  4. 编辑Podfile文件,添加播放器SDK依赖。

    说明
    • 如需同时集成播放器SDK和短视频SDK,将下面代码中的AliPlayerSDK_iOS替换成AliPlayerPartSDK_iOSAliPlayerPartSDK_iOS不包含ffmpeg,可以避免与短视频SDK中的ffmpeg冲突。

    • 请确保引入的播放器SDK版本号填写正确,否则将报错并引入失败。播放器SDK的版本可以从iOS SDK发布历史查看。

    source 'https://github.com/CocoaPods/Specs.git'
    platform:ios, '8.0'
    
    target 'yourProject' do
        # 播放器SDK 建议使用最新版本
        pod 'AliPlayerSDK_iOS'
    end
  5. (可选)添加指定版本的播放器SDK依赖。

    source 'https://github.com/CocoaPods/Specs.git'
    platform:ios, '8.0'
    
    player_sdk_version = '7.5.0'
    
    target 'yourProject' do
        # 播放器SDK 建议使用最新版本
        pod 'AliPlayerSDK_iOS' , player_sdk_version
    end
  6. 安装依赖。

    执行安装命令,将播放器SDK依赖到本地库。

    pod install

    示例结果如下,证明安装成功。

    xxx@ yourProject % pod install
    Analyzing dependencies
    Downloading dependencies
    Installing AliPlayerSDK_iOS (7.5.0)
    Generating Pods project
    Integrating client project
    Pod installation complete! There is 1 dependency from the Podfile and 1 total pod installed.

    执行如下命令,更新播放器SDK。

    pod update AliPlayerSDK_iOS

本地集成

说明

如需同时集成播放器SDK和短视频SDK,则只需要引入一个AlivcFFmpeg即可,并请保证引入的AlivcFFmpeg版本正确。

  1. 下载 iOS播放器SDK

  2. 将播放器对应的 FrameWork 添加到Frameworks,Libraries,and Embedded Content中,并将Embed设置为Embed & Sign

    • alivcffmpeg.framework:播放器底层。

    • AliyunMediaDownloader.framework:用于离线下载。

    • AliyunPlayer.framework:播放器。

      本地集成

  3. 单击Build Settings页签。

  4. 单击Search Paths区域下的Framework Search Paths,修改为本地framework所在的目录。

超低延时直播集成(cocoapods集成)(可选)

如果您需要集成RTS超低延时直播组件,详情请参见iOS端实现RTS拉流

步骤二:License配置

重要

使用全球(不包含中国内地及港澳台)环境时,请确保在调用任何播放器API之前,已调用下述接口更新默认配置为国际站环境。

  1. 方式一:调用下述接口更新默认配置为国际站环境。

    // 使用全球(不包含中国内地及港澳台)环境时,请确保在调用任何播放器API之前,已调用下述接口更新默认配置为国际站环境,以确保后续所有业务都是在国际站环境下运行
    // 通过AlivcBase统一接口,设置国际站环境,运行期间不支持修改
    AlivcBase.EnvironmentManager.globalEnvironment = ENV_SEA;
  2. 方式二(推荐)V7.6.0及以上播放器版本进行配置时,可通过Info.Plist方法配置国际站环境。

    打开Info.plist文件,修改AlivcEnvSEA

    //配置当前环境为国际站环境
    <key>AlivcEnv</key>
    <string>SEA</string>

    配置示例如下:1754557498401-1d235342-3c0b-4c83-bcee-ae7656e8ff23

iOS端接入License,详情请参见iOS端接入License

重要

5.4.7.1及之后版本的iOS播放器SDK,在配置License后,需要在播放器实例初始化前主动调用初始化证书服务。代码示例如下:

[AliPrivateService initLicenseService];

步骤三:开启日志(可选)

开启日志能够帮助快速定位并排查问题,还能为性能优化和用户体验提升提供数据支持,可根据实际业务场景选择是否设置。日志获取请参考获取SDK日志

// 打开日志开关
[AliPlayer setEnableLog:YES];
// 设置日志级别,默认为LOG_LEVEL_INFO,如需排查问题,请设置为LOG_LEVEL_TRACE
[AliPlayer setLogCallbackInfo:LOG_LEVEL_INFO callbackBlock:nil];

项目结构说明

Framework

说明

alivcffmpeg.framework

播放器底层,必须。

AliyunMediaDownloader.framework

用于离线下载,非必须。

AliyunPlayer.framework

播放器,必须。

artcSource.framework

支持artc协议,非必须。

说明

如果需要支持artc协议,还需要追加RtsSDK.framework具体接入流程请参见:iOS端实现RTS拉流

aemFilter.framework

音频增强,非必需。

libPluginSR.framework

视频超分,非必需。

normalsrFilter.framework

视频超分,非必需。

mpfFilter.framework

视频超分,非必需。

srFilter.framework

视频超分,非必需。

vfiFilter.framework

视频插帧,非必需。

vvcCodecPlugin.framwork

H.266解码插件,非必需。

常见集成问题

Cocoapods 如何使用

Cocoapods 如何使用

// 分离项目和 CocoaPods 依赖 
pod deintegrate 

// 更新本地 CocoaPods 源的索引,当你需要添加新依赖项时,
// 使用场景:
// 当你添加新依赖项时,它可以确保你能获取到最新可用的版本。
// 当你遇到某个库的版本不可用时,或者你知道有新版本但没有在你的项目中显示出来,你可以使用此命令进行更新。
pod repo update

// 更新项目的 Pods。
// 使用场景:
// 当你想要更新项目中所有的 pods 到支持的最新版本时使用。
// 你可能在 Podfile 中指定了一些依赖项的版本范围,使用 pod update 会尝试满足这些范围,并更新对应的库。
pod update

// 执行与 pod install 相同的功能,但在安装之前,会强制更新本地 CocoaPods 仓库的索引
// 使用场景:
// 当您添加新库或希望使用 Podfile 中指定库的最新版本时,使用这个命令是一个好主意。尤其是在您看到报错信息,提示所需库的版本不可用时
pod install --repo-update

// 清理缓存的 Pod
// 注意事项:
// 1、清理缓存不会修改您的 Podfile.lock 或 Podfile 文件。因此,一旦您运行 pod install 或 pod update,CocoaPods 将根据现有的清单文件和锁定文件的状态重新下载需要的库。
// 2、通常,清除缓存并不是一个常规步骤,只在面对特定问题时才需要使用。正常情况下,CocoaPods 可以很好地处理其缓存。
pod cache clean --all

您的代码或引用的第三方代码,在集成时报与AlivcFFmpegsymbol有冲突

解决方案如下:

  • 报与AlivcFFmpegsymbol有冲突:您需要删除多余的AlivcFFmpeg,仅保留一个AlivcFFmpeg即可。由于AlivcFFmpeg是对ffmpeg的拓展和定制,是阿里云播放器SDK实现的关键,因此,建议您删除第三方的AlivcFFmpeg,保留阿里云iOS播放器SDKAlivcFFmpeg引用,但由此可能造成第三方播放器无法正常使用等的问题请您知悉。

sandBox 报错

  • 问题如下:

    截屏2024-12-06 16

  • 解决方案如下:

    将 UserSetting 中的 User Script SandBoxing 设置为 NO。

    1735888658101-5633103e-468d-4341-adaa-f5f52814aa36

短视频集成

如果您需要同时集成iOS端播放器SDK和短视频SDK至您的项目中,建议您使用iOS端一体化SDK进行集成。否则,可能会出现类重复的问题,从而导致编译失败。

更多关于播放器使用过程中出现的问题及解决方案,请参见播放器常见问题汇总

功能使用文档

基础功能

进阶功能