本文介绍iOS端集成微短剧项目的操作步骤。
源码说明
源码下载
下载地址请参见AUI Kits微短剧场景(iOS端)。
源码结构
├── iOS // iOS平台根目录
│ ├── AUIShortEpisode.podspec // pod描述文件
│ ├── Source // AUI源代码文件
│ ├── API // 不含UI的源码文件
│ ├── Resources // 资源文件
│ ├── Example // Demo代码
│ ├── README.md // Readme
│ ├── AUIBaseKits // 基础UI组件
环境要求
类别 | 要求 | ||||||
开发环境 | Xcode 14.0 及以上版本,推荐使用最新正式版本。 | ||||||
系统版本 | iOS 10.0及以上版本的真机。 | ||||||
CocoaPods | CocoaPods 1.9.3 及以上版本。 |
前提条件
您已获取音视频终端SDK的播放器的License授权和License Key。在选择SDK应用场景时选择音视频播放,获取的详细步骤请参见申请License。
跑通Demo
下载Demo源码,进入
Example
目录。打开
Podfile
文件,将播放器SDK的依赖版本更新为最新版本。版本号请参见iOS播放器SDK。进入Example目录,执行
pod install --repo-update
,自动安装所需的SDK依赖。打开工程文件
AUIShortEpisodeExample.xcworkspace
,在Signing & Capabilities中修改Team和Bundle Identifier。Team是用户添加的开发者Apple ID。
Bundle Identifier也就是包id。
将前提条件中获取的License文件放到
Example/
目录下,并修改文件名为license.crt
。并打开Example/Info.plist
,在字段AlivcLicenseKey的值中填写在前提条件中获取的LicenseKey。在真机上编译并运行Demo。
集成源码
您可通过以下几个步骤快速集成AUIShortEpisode到您的APP中,让您的APP具备短剧功能。
导入AUIShortEpisode。
从仓库下载源代码后,将iOS文件夹复制到您的APP代码目录下,并将其重命名为AUIShortEpisode。请确保这个目录与您的Podfile位于同一层级。此时,您可以安全地删除Example目录。
修改您项目工程的Podfile文件。按照您的具体需求,引入所需的SDK和UI组件:
AliPlayerSDK_iOS:阿里视频云播放器SDK,请使用最新版本,版本号请参见iOS播放器SDK。
如果已经同时使用了阿里视频云的其他SDK(例如短视频SDK、直播推流SDK),则可以替换为音视频终端SDK:AliVCSDK_UGC(播放器+短视频)、AliVCSDK_InteractiveLive(播放器+直播)、AliVCSDK_Standard(全量包),详情请参见iOS端。
AUIFoundation:基础UI组件。
AUIShortEpisode:短剧场景UI组件源码。
#需要iOS10.0及以上才能支持 platform :ios, '10.0' target '您的App target' do # 根据自己的业务场景,集成合适SDK,支持:AliPlayerSDK_iOS、AliVCSDK_UGC、AliVCSDK_InteractiveLive、AliVCSDK_Standard等,请使用最新的版本,可以从官网进行查询 pod 'AliPlayerSDK_iOS', '~> x.x.x' # 基础UI组件 pod 'AUIFoundation', :path => "./AUIShortEpisode/AUIBaseKits/AUIFoundation/" # 短剧UI组件源码 pod 'AUIShortEpisode/AUI', :path => "./AUIShortEpisode/" # 短剧依赖的SDK,需要与集成的SDK对应,支持:AliPlayerSDK_iOS、AliVCSDK_UGC、AliVCSDK_InteractiveLive、AliVCSDK_Standard等 pod 'AUIShortEpisode/AliPlayerSDK_iOS', :path => "./AUIShortEpisode/" end
执行
pod install --repo-update
,完成源码集成。
功能开发
设置微短剧入口页面。
在当前页面中打开短剧主界面
AUIShortEpisodeViewController
。#import "AUIShortEpisodeViewController.h" AUIShortEpisodeViewController *vc = [[AUIShortEpisodeViewController alloc] init]; [self.navigationController pushViewController:vc animated:YES];
加载剧集数据。
本组件默认使用了内置的剧集数据进行演示,在您集成组件后需要修改此部分的逻辑,对接到您的服务端,通过服务端提供的接口来获取剧集数据。设置方法如下:
在源码中找到
AUIShortEpisodeDataManager
类,进入fetchData:completed:
方法,修改为通过您的服务端接口获取剧集数据。// AUIShortEpisodeData.m @implementation AUIShortEpisodeDataManager + (void)fetchData:(NSString *)eid completed:(void (^)(AUIShortEpisodeData *, NSError *))completed { // TODO: 请求服务端返回短剧数据,需要您的服务端提供接口,并在这里请求接口 // TODO:接口成功返回的数据还需转换为AUIShortEpisodeData,最终通过completed参数回调给业务 }
从服务端获取到的数据,需要根据数据协议转换为剧集模型。剧集模型字段说明如下:
短剧剧集:AUIShortEpisodeData
字段
含义
id
短剧剧集唯一ID。
title
短剧剧集名称。
list
短剧剧集视频列表。
单集视频:AUIVideoInfo
字段
含义
videoId
视频ID,是视频的唯一标识。
url
播放源URL。
duration
时长。
coverUrl
封面。
author
作者。
title
标题。
videoPlayCount
播放次数。
isLiked
是否被点赞。
likeCount
点赞数。
commentCount
评论数。
shareCount
分享数。
开发视频互动功能。
源码中,点赞、评论、分享仅在视频上透出入口,点击后具体的操作需要由您自行实现,可以通过
AUIShortEpisodeViewController
类进行对接和设置。// AUIShortEpisodeViewController.m cell.onLikeBtnClickBlock = ^(AUIShortEpisodePlayCell * _Nonnull cell, AVBaseButton *likeBtn) { likeBtn.selected = !likeBtn.selected; cell.videoInfo.isLiked = likeBtn.selected; cell.videoInfo.likeCount = likeBtn.selected ? (cell.videoInfo.likeCount + 1) : (cell.videoInfo.likeCount - 1); [cell refreshUI]; // TODO: 发送点赞请求给服务端,需要自己实现 }; cell.onCommentBtnClickBlock = ^(AUIShortEpisodePlayCell * _Nonnull cell, AVBaseButton *commentBtn) { // TODO: 打开评论页面,需要自己实现 }; cell.onShareBtnClickBlock = ^(AUIShortEpisodePlayCell * _Nonnull cell, AVBaseButton *shareBtn) { // TODO: 打开分享页面,需要自己实现 };
核心功能介绍
本组件功能通过阿里云播放器SDK的AliListPlayer实现。它利用本地缓存、智能预加载和智能预渲染等核心能力,显著降低了播放延迟并提高了播放稳定性,从而提升用户观看体验。
本地缓存
本地缓存可以提高微短剧视频播放的加载速度和稳定性,使用户在网络不稳定或者断网的情况下依然能够流畅观看视频,提升用户的观看体验。具体配置方法,请参见本地缓存。
智能预加载
智能预加载可以提前加载视频数据,使视频播放更加流畅,减少加载等待时间,提升用户的观看体验。具体配置方法,请参见预加载。
智能预渲染
智能预渲染可以减少视频播放的启动延迟,让用户更快地看到画面,提升视频播放的加载速度和观看体验。具体配置方法,请参见智能预渲染。
HTTPDNS
HTTPDNS可以提供更快速和稳定的DNS解析服务,通过替换传统DNS解析,可以减少DNS解析时间,提高视频播放的加载速度和稳定性,从而提升用户的观看体验。更多信息,请参见HTTPDNS。
视频加密
微短剧场景的视频通常为1~3分钟的MP4格式视频,音视频终端SDK和播放器SDK从6.8.0版本开始支持MP4私有加密播放能力,为微短剧场景的视频提供安全保障支撑。更多信息,请参见阿里云视频加密(私有加密)。
经私有加密的MP4格式视频,需满足以下条件,才可正常播放:
经私有加密的MP4视频传给播放器播放时,业务侧(App侧)需要为视频URL追加
etavirp_nuyila=1
,例如:原视频URL为https://example.aliyundoc.com/test.mp4
,则需要传给播放器播放的视频URL为https://example.aliyundoc.com/test.mp4?etavirp_nuyila=1
。App的License对应的uid与产生私有加密MP4的uid是一致的。
如何校验私有加密视频是否正确,以私有加密的视频URL为例说明如下:
meta信息里面应带有
AliyunPrivateKeyUri
的tag。ffplay不能直接播放。