本文档为技术文档,需要阅读者具备基本的 iOS 开发能力,且需要配置苹果的开发环境,安装有苹果官方 IDE:Xcode 10.0 以上。
2.1 兼容设备
点播 SDK 2.20.1 版本起,支持 iOS 11.0 以上 iOS 设备。点播 SDK 2.20.1 以下版本支持 iOS 8.0 以上 iOS 设备。
2.2 接入 SDK
使用 CocoaPods 将点播 SDK 和上传 SDK 集成到 Xcode 项目中。首先,在项目中新建一个 Podfile 文件,并在 Podfile 中指定:
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '11.0'
target 'TargetName' do
pod 'PolyvVodSDK'
end
然后,执行如下命令:
2.3 开源组件
点播项目提供了一系列开源组件,给开发者提供了更多可选功能,如视频弹幕、播放器皮肤、问答功能等。
开源组件位于 demo 项目中的 PolyvOpenSourceModule 文件夹下,如果想使用开源组件提供的功能,需将整个文件夹添加到你的项目中。然后,在上文提到的 Podfile 文件中新增以下内容:
pod 'PLVVodDanmu'
pod 'PLVSubtitle'
pod 'PLVMasonry'
开源组件中用到了 UIStackView
,但 iOS 8 不支持 UIStackView
,如果需要支持 iOS 8,需要在 Podfile 文件中新增以下第三方库:
2.4 点播初始化
访问保利威视频云平台获取账号信息。
使用 PLVVodSettings
进行初始化,快速集成时,可使用如下方法进行初始化(不推荐在正式环境使用该初始化方法):
/** 使用加密串配置账号
@param configString 加密串
@param error 解密、配置过程的错误
@return 新的 PLVVodSettings 静态对象
*/
+ (instancetype)settingsWithConfigString:(NSString *)configString error:(NSError **)error;
更安全的初始化方式在 3.初始化【3.2 SDK 配置】一节有更详细的讲述。
2.5 视频播放
PLVVodSkinPlayerController
是开源组件提供的带有默认皮肤的播放器,继承于点播 SDK 中的 PLVVodPlayerViewController
。首先,在页面上创建一个 PLVVodSkinPlayerController
对象,以及放置播放器的 UIView
对象。代码示例如下:
#import “PLVVodSkinPlayerController.h”
@interface UIViewController ()
@property (nonatomic, strong) PLVVodSkinPlayerController *player;
@property (nonatomic, weak) UIView *playerPlaceholder;
@end
@implementation UIViewController
- (void)viewDidLoad {
[super viewDidLoad];
PLVVodSkinPlayerController *player = [[PLVVodSkinPlayerController alloc] init];
[player addPlayerOnPlaceholderView:self.playerPlaceholder
rootViewController:self];
self.player = player;
}
@end
播放器 player
可自动在 playerPlaceholder
中实现自动布局,以及半屏/全屏的切换。
点播 SDK 将视频数据封装类 PLVVodVideo
中,通过 PLVVodVideo
对象将视频数据传递给播放器。PLVVodVideo
包含视频ID、视频标题、视频时长等数据。示例代码如下:
self.player.video = video; // video 为 PLVVodVideo 对象
[self.player play]; // 开始播放
[self.player pause]; // 暂停播放
2.6 视频下载
点播 SDK 通过 PLVVodDownloadManager
进行下载管理,下载视频方法声明如下:
/** 使用后台设置的默认画质添加至下载队列
@param video PLVVodVideo 视频对象
@return 下载信息
*/
- (PLVVodDownloadInfo *)downloadVideo:(PLVVodVideo *)video;
类 PLVVodDownloadInfo
封装了视频的下载信息,包含了下载状态、下载速率、下载进度等。将视频添加至下载队列后,可通过方法 -startDownload
启动下载,通过方法 -stopDownload
停止下载。示例代码如下:
[[PLVVodDownloadManager sharedManager] downloadVideo:video]; // 将视频 video 添加到下载队列
[[PLVVodDownloadManager sharedManager] startDownload]; // 开始下载
[[PLVVodDownloadManager sharedManager] stopDownload]; // 停止下载
PLVVodDownloadManager
使用 block 对视频下载进行监听,示例代码如下:
PLVVodDownloadManager *downloadManager = [PLVVodDownloadManager sharedManager];
downloadManager.downloadCompleteBlock = ^(PLVVodDownloadInfo *info) {
NSLog(@"video vid %@ download success", info.vid);
};
downloadManager.stateDidChangeBlock = ^(PLVVodDownloadInfo *info) {
NSLog(@"video vid %@ state change to %zd", info.vid, info.state);
};
downloadManager.downloadErrorHandler = ^(PLVVodVideo *video, NSError *error) {
NSLog(@"video vid %@ download error: %@", video.vid, error);
};
downloadManager.completeBlock = ^{
NSLog(@"all video download success");
};