本文介绍iOS端集成微短剧项目的操作步骤。
源码说明
源码下载
下载地址请参见GitHub开源项目:AUI Kits微短剧场景(iOS端)
源码结构
├── AUIShortEpisode // AUI短剧组件
│ ├── Resources // 资源文件
│ ├── Source // 源代码
│ ├── AUIShortEpisode.podspec // 本地pod文件
│ ├── README.md // Readme
|—— AUIFoundation // AUI基础组件([Github地址](https://github.com/aliyunvideo/MONE_demo_opensource_iOS/tree/main/AUIBaseKits/AUIFoundation))
环境要求
类别 | 要求 | ||||||
开发环境 | Xcode 12.0及以上版本,推荐使用最新正式版本。 | ||||||
系统版本 | iOS 10.0及以上版本的真机。 | ||||||
CocoaPods | CocoaPods 1.9.3及以上版本。 |
前提条件
您已获取音视频终端SDK的播放器的License授权和License Key。获取方法,请参见申请License。
快速集成
接入已授权播放器的音视频终端SDK License。
具体操作,请参见iOS端接入License。
将AUIShortEpisode和AUIFoundation工程拷贝到您的项目工程中,与Podfile处于同一层级。
AUIShortEpisode工程地址:AUIShortEpisode
AUIFoundation工程地址:AUIFoundation
修改您项目工程的Podfile文件。
请根据您自身业务需求进行集成:
#需要iOS 10.0及以上才能支持 platform :ios, '10.0' target '你的App target' do # 根据自己的业务场景,集成合适的音视频终端SDK,支持:AliPlayerSDK_iOS、AliVCSDK_Premium、AliVCSDK_Standard、AliVCSDK_UGC等 pod 'AliPlayerSDK_iOS' # 基础UI组件 pod 'AUIFoundation/All', :path => "./AUIFoundation/" # 短剧UI组件,如果终端SDK使用的是AliVCSDK_Premium,需要AliPlayerSDK_iOS替换为AliVCSDK_Premium pod 'AUIShortEpisode/AliPlayerSDK_iOS', :path => "./AUIShortEpisode/" end
执行
pod install
进行安装。安装成功后,您可以在工程的Pods中找到AUIShortEpisode和AUIFoundation目录。
配置基础功能
设置微短剧入口页面。
在当前页面中打开短剧主界面
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解析时间,提高视频播放的加载速度和稳定性,从而提升用户的观看体验。
[AliPlayerGlobalSettings enableHttpDns:YES];
AVPConfig *config = [self.listPlayer getConfig];
config.enableHttpDns = -1;
[self.listPlayer setConfig:config];
视频加密
微短剧场景的视频通常为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不能直接播放。
- 本页导读 (1)