本文提供快速集成iOS播放器SDK的指引。
环境要求
系统版本:支持iOS 8.0及以上版本。
开发工具:建议使用Xcode,本文操作步骤基于Xcode开发。下载地址:Xcode。
前提条件
注意事项
在进行打包时,dSYM文件用于crash符号表解析。
使用iOS播放器SDK时,AlivcFFmpeg和AliyunPlayer都是必需的,缺一不可。播放器头文件位于AliyunPlayer。
如需同时集成播放器SDK和短视频SDK,则需要关注短视频SDK、播放器SDK及AlivcFFmpeg的版本依赖关系,否则会导致短视频或播放器的功能使用失败,详细信息,请参见AlivcFFmpeg版本依赖。
iOS播放器SDK在模拟器上调试不能保证所有功能的正常运行,建议iOS播放器SDK集成完成后使用真机进行运行调试。
iOS播放器SDK提供的安装包中包含了模拟器,模拟器可用于代码调试,发布时,不能包含模拟器,否则会提交AppStore失败。
SDK集成(cocoapods集成)(推荐)
采用pod语句集成播放器SDK,示例代码如下:
说明如需同时集成播放器SDK和短视频SDK,将下面代码中的
AliPlayerSDK_iOS
替换成AliPlayerPartSDK_iOS
,AliPlayerPartSDK_iOS
不包含ffmpeg,可以避免与短视频SDK中的ffmpeg冲突。ruby platform:ios, '8.0' target 'yourProject' do # 播放器SDK 建议使用最新版本,详情请参考: https://help.aliyun.com/zh/vod/developer-reference/sdk-overview-and-download?spm=a2c4g.11186623.0.0.63cde7ea3nNYgA#section-v53-2oj-xfd pod 'AliPlayerSDK_iOS' end
可选:如果需要支持artc协议或播放超低延时直播(RTS)流,请添加以下pod依赖,示例代码如下:
说明请确保引入的播放器SDK版本号填写正确,否则将报错并引入失败。
ruby platform:ios, '8.0' target 'yourProject' do # 播放器SDK 建议使用最新版本,详情请参考: https://help.aliyun.com/zh/vod/developer-reference/sdk-overview-and-download?spm=a2c4g.11186623.0.0.63cde7ea3nNYgA#section-v53-2oj-xfd pod 'AliPlayerSDK_iOS' # 超低延迟直播 建议使用最新版本 详情请参考: https://help.aliyun.com/zh/live/user-guide/pull-streams-over-rts-on-ios?spm=a2c4g.11186623.help-menu-29949.d_2_11_0_6_1.5edb659e1iPsz6 pod 'AliPlayerSDK_iOS_ARTC', '6.19.0' pod 'RtsSDK', '2.6.3' # 此处版本仅供参考,获取最新RTS SDK的版本请参见超低延时直播SDK下载。 end
SDK集成(本地集成)
如需同时集成播放器SDK和短视频SDK,则只需要引入一个AlivcFFmpeg即可,并请保证引入的AlivcFFmpeg版本正确。
在Xcode工程中,单击General页签。
将SDK的framework添加到Frameworks,Libraries,and Embedded Content中,并将Embed设置为Embed & Sign。
单击Build Settings页签。
单击Search Paths区域下的Framework Search Paths,修改为本地framework所在的目录。
iOS端接入License
配置License。
在Xcode工程里,将获取到的证书文件
AliVideoCert-********.crt
拷贝到Xcode的项目中,建议放到AppSupportFiles目录下,也可以放到沙箱或者其他路径。并在Target Membership中选中当前项目。打开Info.plist,分别修改AlivcLicenseKey、AlivcLicenseFile(全球环境)或AlivcLicenseKey_SEA、AlivcLicenseFile_SEA(国际站环境)为申请License时获取的License Key和License文件路径。
重要针对国际站用户,若需使用播放器SDK,且播放器SDK为6.14.0及以上版本,请务必配置国际站环境License;若不使用播放器SDK,可以仅配置全球环境License。
您可以同时接入2套License(1套全球环境License,1套国际站环境License),后续在每次App启动后,通过配置播放器的服务环境,来指定播放器的运行环境。播放器运行过程中,不支持切换环境。
//全球环境License配置(默认配置) <key>AlivcLicenseFile</key> <string>XXX</string> <key>AlivcLicenseKey</key> <string>foIVziMaUHaRqgDyhf6b6eb8fcf014af39535d0720a32****</string> // 国际站环境License配置,手动在末尾添加_SEA <key>AlivcLicenseFile_SEA</key> <string>XXX</string> <key>AlivcLicenseKey_SEA</key> <string>f6b6efoIVziMaUHaRqgDyhb8fcf014af39535d0a32072****</string>
配置播放器SDK的服务环境(使用国际站环境必配)。
播放器SDK自6.14.0版本开始支持选择服务环境,6.14.0及以上版本的播放器SDK默认为全球环境配置。如需使用国际站环境(目前国际站用户仅支持使用国际站环境),则须在每次App启动后,按照下述方法将播放器SDK配置更新为国际站环境,否则播放器SDK的License会鉴权失败;其他版本及SDK的使用场景下,可忽略此步骤。
// 使用国际站环境时,请确保在调用任何播放器API之前,已调用下述接口更新默认配置为国际站环境,以确保后续所有业务都是在国际站环境下运行 // 通过AlivcBase统一接口,设置国际站环境,运行期间不支持修改 AlivcBase.EnvironmentManager.globalEnvironment = ENV_SEA;
项目结构说明
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 | 视频插帧,非必需。 |
常见集成问题
您的代码或引用的第三方代码,在集成时报与AlivcFFmpeg或AlivcConan的symbol有冲突
解决方案如下:
报与AlivcConan的symbol有冲突:因为AlivcConan从5.3.0版本开始不再需要依赖,您可以将AlivcConan从Linked Frameworks and Libraries里删除,app link可以不依赖AlivcConan。
报与AlivcFFmpeg的symbol有冲突:您需要删除多余的AlivcFFmpeg,仅保留一个AlivcFFmpeg即可。由于AlivcFFmpeg是对ffmpeg的拓展和定制,是阿里云播放器SDK实现的关键,因此,建议您删除第三方的AlivcFFmpeg,保留阿里云iOS播放器SDK的AlivcFFmpeg引用,但由此可能造成第三方播放器无法正常使用等的问题请您知悉。
sandBox 报错
问题如下:
解决方案如下:
将 UserSetting 中的 User Script SandBoxing 设置为 NO。
更多关于播放器使用过程中出现的问题及解决方案,请参见播放器问题。