5 视频下载

PLVVodDownloadManager 是点播 SDK 中的一个单例类,主要负责视频的下载、下载信息回调和下载队列的管理。下载信息封装在类 PLVVodDownlaodInfo 中,每一个下载任务对应一个 PLVVodDownlaodInfo 对象。

下载器的使用详见 demo 中 PLVDownloadManagerViewController 的实现。

5.1 下载设置

在进行下载之前,我们需要先进行一些设置。

5.1.1 AppDelegate

首先,在 AppDelegate 中,我们需要进行以下配置:

- (void)application:(UIApplication *)application handleEventsForBackgroundURLSession:(NSString *)identifier
    completionHandler:(void (^)(void))completionHandler {
    // 处理后台下载完成回调的事件
    [[PLVVodDownloadManager sharedManager] handleEventsForBackgroundURLSession:identifier completionHandler:completionHandler];
}
- (void)applicationDidEnterBackground:(UIApplication *)application {
    // app 退到后台时进行相关设置
    [[PLVVodDownloadManager sharedManager] applicationDidEnterBackground];
}

- (void)applicationWillEnterForeground:(UIApplication *)application {
    // app 回到前台时进行相关设置
    [[PLVVodDownloadManager sharedManager] applicationWillEnterForeground];
}

- (void)applicationWillTerminate:(UIApplication *)application {
    // 程序即将结束时,修改并保存下载中视频的下载状态,用于程序下次启动后,恢复视频下载状态
    [[PLVVodDownloadManager sharedManager] applicationWillTerminate];
}

5.1.2 下载器设置

PLVVodDownloadManager 包含以下下载属性,开发者可以根据需要进行设置,也可以保持默认设置。

5.1.2.1 设置下载目录

下载目录默认为沙盒文件夹 "Library/Caches/PolyvVodCache"。注意,修改下载目录后,上一个目录的离线视频将无法索引。修改下载目录可以通过修改 PLVVodDownloadManager 的属性 downloadDir,也可以通过方法 -setDownloadDir:skipBackup:error: 进行修改。

5.1.2.2 是否允许使用蜂窝移动网络进行下载

默认允许,如需禁止使用蜂窝移动网络进行下载,需要修改属性值 allowsCellularAccess 为 NO。

5.1.2.3 下载最大并发数

PLVVodDownloadManager 的下载并发数通过 maxRuningCount 设置,默认是 1,最大可设为 3。

5.2 下载信息模型

PLVVodDownloadInfo 是下载信息模型类,包含如下只读属性:

其中,清晰度的枚举值定义参见点播文档 4.2.1,下载状态、文件类型的枚举定义如下:

5.3 视频下载

5.3.1 新增下载任务

使用方法 -downloadVideo: 将视频对象 PLVVodVideo 添加到下载队列中,如果属性 autoStart 为默认值 NO,那么需要调用方法 -startDownload 启动下载,否则则不需要。相关属性、方法声明如下:

添加视频并开始/停止下载代码示例如下:

使用如下方法还可以启动、停止指定 vid 的视频:

5.3.2 移除下载任务

移除下载任务方法声明如下:

注意,任务移除之后,对应的视频文件也会被删除。移除所有下载任务不包括已成功下载的。

5.3.3 读取下载任务

使用如下方法,可以获取所有已成功下载的视频信息/本地视频,也可以根据 vid 获取指定的视频下载信息。

5.4 下载回调

5.4.1 下载器回调

PLVVodDownloadManager 使用以下回调对视频下载进行监听:

示例代码如下:

5.4.2 下载任务回调

每一个视频下载信息对象 PLVVodDownloadInfo 也有自己的回调,开发者通过实现这些回调,可以进行 UI 的更新:

Last updated

Was this helpful?